我在 LAN 网关所在的同一台机器上运行 STUN 服务,我希望 STUN 服务的结果对于内部和外部机器都相同。目前,由于伪装是在后路由规则中完成的,因此当数据包离开网关时,STUN 服务器只会看到 LAN IP/端口,而不是经过网络地址转换的 IP/端口。
eth1(局域网):10.0.0.1/32 eth0(广域网):1.2.3.4/31 iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE iptables -A 输入 -p udp -d 1.2.3.4/31 --dport 3701 -j 接受
当 IP 为 10.0.0.2 的 LAN 机器联系 1.2.3.4 的 STUN 服务时,数据包可以传输,但 STUN 服务会发现数据包是从 10.0.0.2 发送的。
如何才能使 NAT 转换在数据包到达 STUN 服务之前发生,并且 STUN 服务的响应不是来自 10.0.0.1,而是来自联系服务时使用的 1.2.3.4?
答案1
看着那(这图像。数据包在需要路由时会由 MASQUERADE 进行转换。但您的目标主机与路由器是同一台主机。因此数据包不会通过 nat-POSTROUTING 链,也不会被转换。它们将通过过滤表