snat可上网可ping外网,取消snat后竟然还能ping外网
本帖最后由 linuxlearning4RMB 于 2016-01-19 21:41 编辑如图,
说明,172.16.100.xx内的ip是可以直接上外网的
第一步,不做snat
win7电脑不可以打开因特网,在win7上ping 172.16.100.254 不 可以ping通。
我个人理解:没有做snat,上不了网ping不通,是肯定的
第二步,在路由router的postrouting做snat,
win7电脑可以打开因特网,在win7上ping 172.16.100.254可以ping通。
我个人理解:做snat,上得了网ping通,是肯定的
第三步,把第二步中在postrouting添加的做snat的iptables规则删除
win7电脑打 不开因特网,在win7上ping 172.16.100.254可以ping通。
我个人理解:删除了snat,应该是上不了玩的,也不应该ping通,但是为什么竟然还可以ping通172.16.100.254!!!!
去到proc/sys/net/netfilter下,查看了
nf_conntrack_icmp_timeout的默认值是30,手动把这个值改为了1或者0,然后重复上面的三个步骤,清除snat以后ping网关就不会再通了
不知道为什么会这样,难道上网用的tcp udp协议和ping所用的icmp有这么多的差异吗???
回复 1# linuxlearning4R
你在删了 snat 规则之后,什么时候开始测试的?是一直可以 ping 通吗。
Godbach 发表于 2016-01-20 00:44 static/image/common/back.gif
回复 1# linuxlearning4R
你在删了 snat 规则之后,什么时候开始测试的?是一直可以 ping 通吗。
在没有修改icmp timeout的前提下:
做了snat以后,win7机器上在cmd里面直接ping xxxxxx -t,永远ping下去,那么就是一直通的。
然后不关闭cmd让它继续ping,在router上把snat规则清了。这个时候win7机器上在cmd里面的ping xxxxxx -t依然是通的,如果把ping xxxxxx -t中断了,然后再运行,那么就ping不通了。 会话未老化。 conntrack未老化,会依然使用配置前的snat规则 楼上两位正解,修改老化时间的效果正好印证了这一点。
页:
[1]