如何在默认转发伪装策略之前加一个不伪装的策略?

讨论 未结 1 95
phpfpm
phpfpm 会员 2022年6月1日 00:26 发表
<h1>网络拓扑:</h1> <ol> <li>主路由 192.168.10.1</li> <li>旁路由 192.168.10.2 ,static ,默认网关是 192.168.10.1</li> <li>DHCP:主路由下发,下发的网关和 DNS 都指向旁路由</li> <li>旁路由设置以下转发规则:</li> </ol> <ul> <li>iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</li> </ul> <ol> <li>内网机器 192.168.10.120</li> <li>端口转发:8888:主路由公网出口 ==&gt; 192.168.10.120:80</li> </ol> <h1>遇到的问题</h1> <p>流量从公网进来,从 192.168.10.1 打到 192.168.10.120 之后,回包是回给公网的,此时回包的数据包回给 192.168.10.2 ,而不是直接给主路由</p> <p>192.168.10.2 收到其他机器给外网的数据包之后,开始伪装,把 sip 改为自己的 ip ,也就是 NAT 伪装</p> <p>此时 192.168.10.1 蒙圈了:</p> <ol> <li>入站 visitor:12345 =&gt; publicip:8888</li> <li>转发 visitor:12345 =&gt; 10.120:80</li> <li>回包 10.2:80 =&gt; visitor:12345 (这个包的 SRC 存疑,不确定回包的端口号是不是 80 )</li> <li>然后发现转发的地址和回包的地址不对,路由器 drop 这个流量,外网收不到回包</li> </ol> <h1>可能的解决方案</h1> <p>在默认的伪装策略之前加一条,当来源 ip 是 10.120 且来源端口是 80 的时候,直接接受而不是伪装:</p> <pre><code>iptables -t nat -I POSTROUTING -o eth0 -p tcp -s 192.168.10.120 --source-port 80 -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE </code></pre> <p>但是似乎不生效,求解</p> <p>看了一下 OP 的 iptables ,发现这个策略没有收到包和流量,看起来是没有命中?</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
1个回复