本测试中,carol与dave主机以及moon网关都使用动态IP地址配置,远程用户carol和dave在配置文件中的right字段指定网关的域名。moon网关建立两个连接,分别制定carol和dave的域名,在moon网关的文件/etc/hosts中保存已经过期的carol和dave的域名和IP的对应关系。
实际测试中远程用户carol、dave使用新的IP地址和网关moon建立连接。本次测试拓扑如下:
carol主机配置
carol的配置文件:ikev2/dynamic-two-peers/hosts/carol/etc/ipsec.conf,内容如下,left字段的值为%any,表示根据网关地址自动选择本地IP地址。right字段指明对端的地址为域名:moon.strongswan.org(moon网关域名)。leftsourceip字段值为%config,将请求网关分配虚拟IP地址。
dave主机的配置文件ipsec.conf与carol基本相同,仅是证书和ID字段修改为dave自身的项。
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn moon
left=%any
leftsourceip=%config
leftcert=carolCert.pem
leftid=carol@strongswan.org
leftfirewall=yes
right=%moon.strongswan.org
rightsubnet=10.1.0.0/16
rightid=@moon.strongswan.org
auto=add
moon网关的配置文件:ikev2/double-nat-net/hosts/moon/etc/ipsec.conf,内容如下,基本内容与alice主机相同。注意在连接名称为carol的段中,rightsourceip字段的值:PH_IP_CAROL1(10.3.0.1),表示为ID值等于rightid(carol@strongswan.org)的连接分配虚拟IP地址:10.3.0.1。类似的在连接名称为dave的段中,为ID等于dave@strongswan.org的连接分配IP地址:PH_IP_DAVE1(10.3.0.2)。
config setup
conn %default
left=%any
leftsubnet=10.1.0.0/16
leftcert=moonCert.pem
leftid=@moon.strongswan.org
leftfirewall=yes
conn carol
right=%carol.strongswan.org
rightid=carol@strongswan.org
rightsourceip=PH_IP_CAROL1
auto=add
conn dave
right=%dave.strongswan.org
rightid=dave@strongswan.org
rightsourceip=PH_IP_DAVE1
auto=add
域名解析
如下为moon网关的测试用hosts文件,其中配置了域名carol.strongswan.org的IP地址为:192.168.0.110。域名dave.strongswan.org的IP地址为:192.168.0.220。但是在以下的测试中carol和dave使用的IP地址分别为192.168.0.100和192.168.0.200,表明域名对应的IP地址发送变化,但是网关moon允许成功建立连接。
$ cat ikev2/dynamic-two-peers/hosts/moon/etc/hosts.stale
192.168.0.110 carol.strongswan.org carol
192.168.0.220 dave.strongswan.org dave
测试准备阶段
配置文件:ikev2/dynamic-two-peers/pretest.dat,内容为ipsec连接的启动语句。另外,将moon网关的hosts文件替换为测试用的包含过期域名IP地址的文件hosts.stale。
moon::mv /etc/hosts /etc/hosts.ori
moon::mv /etc/hosts.stale /etc/hosts
测试阶段
配置文件:ikev2/dynamic-two-peers/evaltest.dat。以下测试语句检查在carol/dave主机和moon网关上隧道是否建立成功。之后,在主机carol和dave上执行ping主机alice的测试命令。
carol::ipsec status 2> /dev/null::moon.*INSTALLED, TUNNEL::YES
dave:: ipsec status 2> /dev/null::moon.*INSTALLED, TUNNEL::YES
moon:: ipsec status 2> /dev/null::carol.*INSTALLED, TUNNEL::YES
moon:: ipsec status 2> /dev/null::dave.*INSTALLED, TUNNEL::YES
carol::ping -c 1 PH_IP_ALICE::64 bytes from PH_IP_ALICE: icmp_.eq=1::YES
dave:: ping -c 1 PH_IP_ALICE::64 bytes from PH_IP_ALICE: icmp_.eq=1::YES
以下为网关moon上抓取的所有交互报文。
strongswan测试版本: 5.8.1
END