1、简单通信拓扑:
将Windows 平台 作为一个网关,同时开启IPsec 和NAT来支持private和public的通信。
注意:IPSEC Gateway 和 Client1 Ipsec 之间没有存在NAT ,否则是另外一种情况,和本文描述无关。本文只是工作笔记,不代表任何官方声明。
2、现象描述:
a. Enable NAT,but Disbale Ipsec .
ping from 11.11.11.45 to 10.10.10.20 OK!
b. Enable Ipsec Tunnel ,Disable NAT
ping from 11.11.11.45 to 10.10.10.20 OK!
c. Enable NAT and ipsec tunnel
ping from 11.11.11.45 to 10.10.10.20 fail.
收到这个bug的时候,我以为是客户网络存在问题。因为 NAT 和Ipsec 都是非常成熟的module。但是这个bug确实被我重现了,所以开始了大量的源代码跟踪和调式。
3、结果:
经过大量的代码分析,这是个 兼容性bug。但是仅仅影响ICMP数据包。结果测试,TCP 和UDP 数据包不会收到影响,可以正常通信。所以各位Windows 用户注意:如果 上述网络环境,客户端ping不同网关,并不是网络原因,除了ICMP数据外,其他协议的通讯不受影响。
4、原因简述:
具体原因涉及源代码,不在阐述。