我有一个Centos最低限度6.5充当路由器。 eth0连接到思科交换机中继端口,允许VLAN 200-213。
我有几个VLAN接口,正如这个链接所示:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-networkscripts-interfaces_802.1q-vlan-tagging.html
并且具有IPv4转发,所以来自任何networking200-213的我的所有networking设备都可以使用这个linux盒子作为它们的路由器彼此通信。
问题是,我需要他们访问互联网,所以我添加了以下规则:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to 1.1.1.56
1.1.1.56是“外部”地址。 这工作正常,连接到内部networking的设备可以ping通Intertnet地址,但是,它们不能跨子网互相通话,所以192.168.211.55可以ping通8.8.8.8,但不能与192.168.213.5通信。
只要我做服务iptables重新启动删除规则,我可以开始再次跨内部子网交谈。
什么是正确的方法来设置多个私有子网的NAT? 或者,也许正确的方式来设置转发?
您还需要在防火墙规则中指定要进行NAT的stream量的目标接口。 否则,它只会尝试NAT的一切,正如你所见,这是行不通的。 你应该只是NAT的外部世界的stream量。
因此,假设您的所有因特网绑定stream量的默认路由都会出去VLAN 200(因为您没有指定),这是专门用于外部stream量的VLAN。 在这种情况下,您将在您的防火墙规则中添加-o eth0.200 。
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0.200 -j SNAT --to 1.1.1.56