Linux网关,本来只有一进一出2个网卡
eth0:外网
eth1:内网 192.168.100.1
所以iptables的规则看起来是这样
-A POSTROUTING -s 192.168.0.0/16 -o eth0 -j MASQUERADE
由于业务需要 ,加了一个出口,修改后
eth0:外网
eth2:外网
eth1:内网 192.168.100.1
这时数据会根据路由,从不同的出口出,所以不能加-o eth0了,所以规则改成了
-A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
这个变更带来的问题就是,我们vpn拨号获取到的也是192.168.0.0/16段的,然后我们访问内网的服务器,在服务器上看到的就是网关的内网IP:192.168.100.1,为什么?因为它也被MASQUERADE了。
当vpn用户登录服务器出现问题的时候,我们要排查,这下问题来了,这么多用户,在服务器上看到的都是192.168.100.1,根本无法查,上网找了下,发现了神一样的规则,应用后,在服务器上看到的又是VPN分配的原始IP了
-A POSTROUTING -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE