Я тестирую код проникновения NAT, и мне нужен симметричный NAT. Я настроил FreeBSD с PF, очень простое правило:
# rl0 in WAN on DHCP, sk0 is LAN with computers behind this NAT.
nat on rl0 from sk0:network to any -> (rl0)
Это отлично работает, NAT симметричен для пакетов UDP, но, к сожалению, номер исходящего порта является случайным для каждого пакета в другое место назначения. Это способ настроить PF так, чтобы порты были не случайными, а как бы инкрементными? Например, UDP-пакет на хост A получит номер исходящего UDP-порта 50000, UDP-пакет на хост B получит номер порта 50001, на хост C 50002 и т. Д.?
В static-port
вариант должен делать то, что вы хотите.
В правилах nat параметр static-port предотвращает изменение pf (4) порта источника для пакетов TCP и UDP.
Таким образом, давая вам правило.
nat on rl0 from sk0:network to any -> (rl0) static-port
Мне любопытно, зачем вам это нужно. Рандомизация портов не такая уж плохая вещь и может в некоторой степени защитить уязвимые протоколы. Как, например, проблемы Каминского DNS в прошлом году.
Просто предположение, но вы можете попробовать
# sysctl net.inet.ip.portrange.randomized=0