我有 Rehat Enterprise Linux Server Release 5.5(Tikanga),有两个界面如下
- eth0:公共IP为xxx.xx.64.118
- eth0:0:公共IP为xxx.xx.116.19
- eth1:私有IP为172.16.23.2
默认情况下,我的 iptable POSTROUTING 链规则如下:
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
这意味着它的 NAT IP 作为 eth0 的 IP。现在我想要一台连接到 eth1 的特定主机(172.16.23.6)在连接到互联网时具有与 eth0:0 (即 xxx.xx.116.19)相同的源 IP。所以我添加了如下规则
iptables -t nat -A POSTROUTING -s 172.16.23.6 -o eth0 -j SNAT --to-source xxx.xx.116.19
其中在 MASQUERADE 之上添加了新规则,如下所示:
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 172.16.23.6 0.0.0.0/0 to:xxx.xx.116.19
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
经过我的猜测,IP 172.16.23.6 的主机在连接到互联网时将具有公共 IP xxx.xx.116.19(通过whatismyip.com 检查)。但它仍然显示eth0(xxx.xx.64.118)的公共IP。 Ubuntu 也同样有效。有人可以建议是什么问题吗?