我正试图在一个Linux Box上实现一对一的NAT。 设置非常基本,它有两个接口,eth0是外部接口,eth1是内部。 在eth1后面存在隔离的192.168.100.0/24networking,而eth0连接到192.168.0.0/24networking的其余部分(这个networking是不相关的)。 我想要做的是允许隔离networking通过使用不同networking的外部IP地址(192.168.50.0/24)的Linux盒子进行通信。 所以基本上从内部networking192.168.100.10 Linux机箱NAT 192.168.150.10路由出来的Linux机箱。 我已经设置了路由来指向192.168.50.0/24的stream量到所有外部设备上的Linux机箱的eth0接口。
在这一点上,目的地为192.168.50.0/24的stream量到达Linux机箱的eth0,但似乎从来没有翻译过,因为在内部eth1接口上我从来没有看到任何192.168.50.10或192.168.100.10的stream量。 以下是我的基本NATconfiguration。 我的问题是,我需要做别的吗? 我没有打扰在192.168.50.0/24networking的Linux机器上添加路由,因为由于这个NATconfiguration,该机箱从不路由具有该地址的数据包。
-A POSTROUTING -o eth0 -s 192.168.100.10 -j SNAT --to-source 192.168.50.10
-A PREROUTING -i eth0 -d 192.168.50.10 -j DNAT --to-destination 192.168.100.10
-A INPUT -j ACCEPT -A FORWARD -j ACCEPT
注意所有其他stream量也可以通过iptables进行默认设置,所以它不应该是一个阻塞问题。
您需要确认您符合以下条件:
echo 1 > /proc/sys/net/ipv4/ip_forward或在/etc/sysctl.conf设置适当的行。 看来,你留下的第一点!
这可能是一个ARP问题。 请参阅Shorewall One-to-Nat注释。 我倾向于像Shorewall这样的防火墙生成器工具。