我有一台带有 2 个 NIC 的网关机器:eth0
一个带有公共 IP,一个eth1
带有私有 IP。
我eth0
有 4 个公共 IP 别名,我想将公共 IP NAT 为私有 IP,并且我使用 DNAT 和 iptables 来执行此操作。
1.1.1.2 -> 10.10.10.2
1.1.1.3 -> 10.10.10.3
1.1.1.4 -> 10.10.10.4
规则
-A PREROUTING -d 1.1.1.2 -p tcp -j DNAT --to-destination 10.10.10.2
-A PREROUTING -d 1.1.1.3 -p tcp -j DNAT --to-destination 10.10.10.3
-A PREROUTING -d 1.1.1.4 -p tcp -j DNAT --to-destination 10.10.10.4
现在我可以通过 DNAT 访问内部 IP,但无法从这个私有 IP 连接到外部网络。
我该如何实现?可以对多个 IPS 进行 SNAT 吗?
答案1
似乎你忘了添加伪装规则。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
这是 SNAT 的一种。它将数据包中的源 LAN IP 替换为路由器的外部 IP,这些数据包源自 LAN 机器。因此,外部机器知道该将数据包发送给谁。
答案2
我想这是可以做到的。只需指定-s <int ip>
并--to-source <ext ip>
iptables -t nat -A POSTROUTING -s 10.10.10.2 -i eth1 -j SNAT --to-source 1.1.1.2