我已经定义了以下规则:
-A POSTROUTING -j SNAT --to-source [publicip] -A POSTROUTING -j SNAT -d 192.168.0.0/24 --to-source 192.168.0.6
基本上,我只想要专网通过192.168.0.6。 但是,只有一个networking工作。 有了这个configuration,只有公共networking的作品。 有没有办法实现我想要的?
iptables规则需要按照更具体的规则进行configuration,然后才能得到更less的特定规则。
正确的顺序应该是:
-A POSTROUTING -j SNAT -d 192.168.0.0/24 --to-source 192.168.0.6 -A POSTROUTING -j SNAT --to-source [publicip]
关于iptables的维基百科文章解释了这一点以及通过链表和表格的stream量。
数据包继续遍历链,直到:1.规则匹配数据包并决定数据包的最终命运,例如通过调用ACCEPT或DROP之一,或者返回如此最终命运的模块[…]
解决了这个问题。 订单显然很重要。 首先设置专用networking似乎解决了这个问题。 我也添加了0.0.0.0/0,很确定这是默认的,所以我不认为改变了什么,但我没有testing找出来。
-A POSTROUTING -j SNAT -d 192.168.0.0/24 --to-source 192.168.0.6 -A POSTROUTING -j SNAT -d 0.0.0.0/0 --to-source [publicip]