我有一个具有 2 个 IP 地址的 NAT 路由器,假设111.111.111.111
和分别222.222.222.222
与接口eth0
和相关联eth0:1
。
我有两台服务器通过接口tap0
(OpenVPN 客户端)连接到此 NAT 网关,其 IP 分别为10.0.0.1
和10.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