我有一台服务器作为我的 nat,它托管一些服务。当我通过 UDP 本地连接到此服务器时,我的客户端使用公共 IP,但服务器使用其本地 IP 进行应答。
所以问题是:我怎样才能强制所有发往公共 IP 的流量也通过 NAT 路由?
或者是否存在更简单的方法来实现在公共 IP 上进行的对话(而不让流量“泄漏”到公众中)
答案1
您必须MASQUERADE
在 nat box 上为该流量添加规则。这样,发往任何 DNAT 服务的流量看起来都来自 nat box。这样,当 DNAT 服务回复时,流量就会返回到 nat box,这样就可以正确地将其发送回客户端(带有正确的源 IP 地址)。
例如,如果您的私有网络是,192.168.0.0/24
并且 nat box 上有这个网络eth1
:
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -d 192.168.0.0/24 -j MASQUERADE
(你可以使用 SNAT 代替 MASQUERADE,两种方法都可以)