拓扑如下:

  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处理。如下图:

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

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

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

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

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

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

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

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

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

  说明DUTA在NAT后面。

相关文章:

  • 2022-03-06
  • 2021-04-20
  • 2021-09-01
  • 2022-12-23
  • 2021-10-13
  • 2022-01-10
  • 2022-12-23
  • 2021-06-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2021-10-26
  • 2021-11-16
  • 2022-12-23
  • 2021-11-10
相关资源
相似解决方案