我正在testingNAT渗透代码,需要一个对称的NAT。 我已经用PFconfiguration了FreeBSD,很简单的规则:
# rl0 in WAN on DHCP, sk0 is LAN with computers behind this NAT. nat on rl0 from sk0:network to any -> (rl0)
这很好,NAT对UDP数据包来说是对称的,但不幸的是,每个数据包到不同目的地的出站端口号是随机的。 这是一种configurationPF的方式,所以端口将不是随机的,而是一种增量? 例如,主机A的UDP数据包将得到UDP端口号为50000的UDP数据包,到主机B的UDP数据包将获得端口号50001,主机C 50002等等。
static-port选项应该做你想做的。
使用nat规则,static-port选项可防止pf(4)修改TCP和UDP数据包上的源端口。
因此给你一个规则。
nat on rl0 from sk0:network to any -> (rl0) static-port
我很好奇,为什么你想这样做,但。 端口随机化不是一件坏事,可以通过某种方式来保护易受攻击的协议。 比如去年的Kaminsky DNS问题。
只是一个猜测,但你可以尝试
# sysctl net.inet.ip.portrange.randomized=0