У меня есть хост 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».