Назад | Перейти на главную страницу

PF временное перенаправление на другой IP

У меня есть хост FreeBSD, который служит точкой входа в дополнительные системы во внутренней сети. Таким образом, у меня есть pf настроен для перенаправления входящего трафика на определенных портах (например, порт 5000) на локальный адрес хоста в одной из тюрем, на которой запущена сетевая служба на этом компьютере. Это выглядит так:

---port 5000--->[Main host]
                     |
                     |---port 5000--->[Machine A]
                     |~~~~~~~~~~~~~~~~[Machine B]

Перенаправление осуществляется по правилу PF:

rdr pass on egress proto tcp from any to $IP port 5000 -> $MACHINE_A_IP

Это состояние, которое я почти всегда хочу, и оно настроено по умолчанию. Однако мне иногда хотелось бы временно перенаправить порт 5000 на машину B, например:

---port 5000--->[Main host]
                     |
                     |~~~~~~~~~~~~~~~~[Machine A]
                     |---port 5000--->[Machine B]

Я попытался установить привязки PF, чтобы облегчить это, но, поскольку я новичок в PF, мне трудно разбирать документацию, чтобы охватить этот вариант использования.

Как задать динамические правила PF на главном хосте для временного перенаправления 5000 с машины A на машину B?

Правильный способ добиться этого - использовать таблицу в качестве цели для перенаправления. Вы можете изменить содержимое таблицы без перезагрузки pf, используя pfctl. Просто имейте в виду, что существующие состояния брандмауэра будут продолжать пересылать трафик на старый хост до тех пор, пока потоки TCP не будут закрыты или пока не истечет время ожидания «потоков UDP».