本测试主要验证远程用户alice与网关sun建立连接时,强制启用UDP封装的功能。通过在alice的ipsec.conf文件中定义forceencaps等于yes实现。本次测试拓扑如下:
alice主机配置
alice的配置文件:ikev2/force-udp-encaps/hosts/alice/etc/ipsec.conf,内容如下,主要注意是这里的forceencaps字段值yes,强制开启NAT-T功能,增加UDP封装。
conn nat-t
left=%defaultroute
leftcert=aliceCert.pem
leftid=alice@strongswan.org
leftfirewall=yes
right=PH_IP_SUN
rightid=@sun.strongswan.org
rightsubnet=10.2.0.0/16
forceencaps=yes
auto=add
测试准备阶段
配置文件:ikev2/force-udp-encaps/pretest.dat,内容为通常的ipsec连接的启动语句。额外需要注意的是由于moon路由器位于alice和sun直接,需要在sun和winnetou主机上配置到alice网段的路由,下一跳为moon。在测试过程中需要从winnetou服务器(192.168.0.150)上获取CRL证书,需要保证连通性。
sun::ip route add 10.1.0.0/16 via PH_IP_MOON
winnetou::ip route add 10.1.0.0/16 via PH_IP_MOON
测试阶段
配置文件:ikev2/force-udp-encaps/evaltest.dat内容如下。在确认alice主机和sun网关连接(nat-t)建立之后,在主机alice上检查strongswan进程日志中的强制UDP封装记录,然后使用ping命令测试到bob主机的连通性。
alice::cat /var/log/daemon.log::faking NAT situation to enforce UDP encapsulation::YES
alice:: ping -c 1 PH_IP_BOB::64 bytes from PH_IP_BOB: icmp_.eq=1::YES
如下为alice主机上strongswan进程的部分日志。当打开forceencaps选项之后,strongswan将会随机生成一个IP地址,此选项影响IKE_SA_INIT报文中的NAT_DETECTION_SOURCE_IP载荷。由随机IP生成的hash值与真实IP地址生成的hash值不同,对端将判断alice主机位于NAT设备之后。
alice charon: 12[IKE] faking NAT situation to enforce UDP encapsulation
alice charon: 12[IKE] establishing CHILD_SA nat-t{1}
NAT_DETECTION_SOURCE_IP载荷字段如下所示:
以下报文交互流程。
strongswan测试版本: 5.8.1
END