linuxlearning4R 发表于 2016-01-19 21:40

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有这么多的差异吗???

Godbach 发表于 2016-01-20 00:44

回复 1# linuxlearning4R

你在删了 snat 规则之后,什么时候开始测试的?是一直可以 ping 通吗。

   

linuxlearning4R 发表于 2016-01-20 09:19

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不通了。

sttty 发表于 2016-01-21 12:10

会话未老化。

zhanglin496 发表于 2016-01-21 18:08

conntrack未老化,会依然使用配置前的snat规则

nswcfd 发表于 2016-01-22 17:00

楼上两位正解,修改老化时间的效果正好印证了这一点。
页: [1]
查看完整版本: snat可上网可ping外网,取消snat后竟然还能ping外网