strongswan -- IKEv2如何检测到经过了nat设备


拓扑如下:

  

  其中NAT设备将来自DUTA的报文源IP 101.0.0.2转换为102.0.0.2。DUTA发起IPSec连接。

1. DUTA计算natd_chunk和natd_hash

  DUTA先用自己的SPI,对等体的SPI(为0),IP和端口号做SHA1处理。如下图:

  

  代码位于ike_natd.c的函数generate_natd_hash。

  针对源IP和目的IP都生成natd_chunk,并计算哈希值。

  

2. DUTA经过NAT设备后,源IP做了转换。

3. DUTB判断是否经过了NAT设备

  当DUTB收到IKE_SA_INIT报文后,解析得到转换后的源IP和目的IP。然后按照DUTA同样的方式组装natd_chunk,计算natd_hash哈希。

   

  从图中可以看出,收到的报文计算出的源IP chunk对应的哈希值precalculated_src_hash与接收到的DUTA计算的哈希值received_src_hash不一致。

  说明DUTA在NAT后面。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM