如何将每个 NAT 客户端的流量绑定到外部 IP 地址?

如何将每个 NAT 客户端的流量绑定到外部 IP 地址?

我有一个具有 2 个 IP 地址的 NAT 路由器,假设111.111.111.111和分别222.222.222.222与接口eth0和相关联eth0:1

我有两台服务器通过接口tap0(OpenVPN 客户端)连接到此 NAT 网关,其 IP 分别为10.0.0.110.0.0.2。我希望它们模拟每个 NAT 路由器的 IP 地址。

到目前为止,我制定了以下iptables规则:

iptables -A PREROUTING -d 111.111.111.111/32 -i eth0 -j DNAT --to-dest 10.0.0.1
iptables -A PREROUTING -d 222.222.222.222/32 -i eth0 -j DNAT --to-dest 10.0.0.2

这会将所有传入连接路由到正确的服务器。但是,传出连接仍使用相同的 IP 地址来访问网络。我如何创建一条规则,强制这些本地服务器的所有传出流量使用其各自的外部 IP 地址并实现我想要的模拟效果?

答案1

好吧,我最终自己解决了这个问题,显然我的问题是必须在规则之前添加这条规则-A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 10.0.0.1/32 -o eth0 -j SNAT --to 111.111.111.111
iptables -t nat -A POSTROUTING -s 10.0.0.2/32 -o eth0 -j SNAT --to 222.222.222.222
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

相关内容