本测试主要验证远程用户carol和dave,通过设置ipsec.conf文件中的leftsourceip等于%config,在与网关moon建立连接时,获取虚拟IP地址的功能。moon网关通过rightsourceip字段指定虚拟IP地址池。本次测试拓扑如下:
主机配置
carol的配置文件:ikev2/ip-pool/hosts/carol/etc/ipsec.conf,内容如下,主要注意是这里的leftsourceip字段值%config,表示请求虚拟IP,将在IKE_AUTH消息中包含Configuration载荷。dave主机的配置与此类似。
conn home
left=PH_IP_CAROL
leftsourceip=%config
leftcert=carolCert.pem
leftid=carol@strongswan.org
leftfirewall=yes
right=PH_IP_MOON
rightsubnet=10.1.0.0/16
rightid=@moon.strongswan.org
auto=add
网关配置
moon的配置文件:ikev2/ip-pool/hosts/moon/etc/ipsec.conf,内容如下,rightsourceip字段定义分配给远程用户的虚拟IP地址范围,这里是10.3.0.0/28网段,由最小地址开始依次分配。在本次测试中,carol主机先进行连接,得到虚拟IP:10.3.0.1。dave主机得到虚拟IP:10.3.0.2。
conn rw
left=PH_IP_MOON
leftsubnet=10.1.0.0/16
leftcert=moonCert.pem
leftid=@moon.strongswan.org
leftfirewall=yes
right=%any
rightsourceip=10.3.0.0/28
auto=add
测试准备阶段
配置文件:ikev2/ip-pool/pretest.dat,内容为通常的ipsec连接的启动语句。
测试阶段
配置文件:ikev2/ip-pool/evaltest.dat内容如下。确认carol主机上strongswan进程记录的安装虚拟IP(10.3.0.1)的日志。以及命令ip addr list显示的虚拟IP地址,和ip route list table 220显示的到moon网关的内网10.1.0.0/16的源路由地址(虚拟IP)。然后使用ping命令测试到alice主机的连通性。
路由表220位strongswan使用的默认路由表,也可在strongswan.conf配置文件中,使用charon.routing_table进行指定。
carol::cat /var/log/daemon.log::installing new virtual IP PH_IP_CAROL1::YES
carol::ip addr list dev eth0::PH_IP_CAROL1::YES
carol::ip route list table 220::10.1.0.0/16.*src PH_IP_CAROL1::YES
carol::ipsec status 2> /dev/null::home.*ESTABLISHED.*carol@strongswan.org.*moon.strongswan.org::YES
carol::ipsec status 2> /dev/null::home.*INSTALLED, TUNNEL::YES
carol::ping -c 1 PH_IP_ALICE::64 bytes from PH_IP_ALICE: icmp_.eq=1::YES
以下为moon网关上strongswan进程的日志信息,可见虚拟IP地址的分配。
moon charon: 11[IKE] peer requested virtual IP %any
moon charon: 11[CFG] assigning new lease to 'carol@strongswan.org'
moon charon: 11[IKE] assigning virtual IP 10.3.0.1 to peer 'carol@strongswan.org'
moon charon: 15[IKE] peer requested virtual IP %any
moon charon: 15[CFG] assigning new lease to 'dave@strongswan.org'
moon charon: 15[IKE] assigning virtual IP 10.3.0.2 to peer 'dave@strongswan.org'
以下为moon网关上与carol相关的安全策略。出方向为moon的内网网段:10.1.0.0/16到carol的虚拟IP地址;入方向正好相反为:carol虚拟地址到moon内网网段。转发方向是carol虚拟地址到内网网段。
src 10.1.0.0/16 dst 10.3.0.1/32 uid 0
dir out action allow index 857 priority 375423 ptype main share any flag (0x00000000)
tmpl src 192.168.0.1 dst 192.168.0.100
proto esp spi 0xc2006a4c(3254807116) reqid 1(0x00000001) mode tunnel
enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff
src 10.3.0.1/32 dst 10.1.0.0/16 uid 0
dir fwd action allow index 850 priority 375423 ptype main share any flag (0x00000000)
tmpl src 192.168.0.100 dst 192.168.0.1
proto esp spi 0x00000000(0) reqid 1(0x00000001) mode tunnel
enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff
src 10.3.0.1/32 dst 10.1.0.0/16 uid 0
dir in action allow index 840 priority 375423 ptype main share any flag (0x00000000)
tmpl src 192.168.0.100 dst 192.168.0.1
proto esp spi 0x00000000(0) reqid 1(0x00000001) mode tunnel
enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff
以下为moon网关上配置的路由,可见到达虚拟IP地址的下一跳是carol和dave的可路由IP地址(192.168.0.0/24网段),而源地址为10.1.0.1,这样报文可匹配以上的安全策略,加密之后发送出去。
10.3.0.1 via 192.168.0.100 dev eth0 proto static src 10.1.0.1
10.3.0.2 via 192.168.0.200 dev eth0 proto static src 10.1.0.1
远程用户carol的路由表如下,到达10.1.0.0/16网段的下一跳为192.168.0.1(moon网关地址),本地源地址为:10.3.0.1。
10.1.0.0/16 via 192.168.0.1 dev eth0 proto static src 10.3.0.1
以下为moon网关在IKE_AUTH消息中,分配的虚拟IP地址信息。
strongswan测试版本: 5.8.1
END