有关windows Gateway Ipsec 和NAT 兼容性问题

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 用户注意:假设 上述网络环境。clientping不同网关,并非网络原因,除了ICMP数据外,其它协议的通讯不受影响。


4、原因简述:

     详细原因涉及源码,不在阐述。




 





原文地址:https://www.cnblogs.com/gavanwanggw/p/6691836.html