SWAN之ikev2协议host2host-transport-nat配置测试

IPSecurity 专栏收录该内容
89 篇文章 4 订阅

本测试主要说明在NAT网关moon之后的两个VPN客户端(alice和venus)使用传输模式连接外部VPN网关(sun)时的问题。由于sun网关上的安全策略冲突,导致后者的连接将替换前者的连接。另外,当alice建立连接之后,如果venus不进行连接的建立,而执行ping网关sun的操作,将没有回复,原因是此报文匹配sun网关的加密策略(alice所建立),但是报文并没有加密,被丢弃(文件/proc/net/xfrm_stat中的XfrmInTmplMismatch计数)。 本次测试拓扑如下:
在这里插入图片描述

主机配置

alice的配置文件:ikev2/host2host-transport-nat/hosts/alice/etc/ipsec.conf,内容如下,主要注意这里的type字段,启用transport传输模式。venus主机的配置与alice基本相同。

conn nat-t
        leftcert=aliceCert.pem
        leftid=alice@strongswan.org
        leftfirewall=yes
        right=192.168.0.2
        rightid=@sun.strongswan.org
        type=transport
        auto=add

sun网关配置

sun的配置文件:ikev2/host2host-transport-nat/hosts/sun/etc/ipsec.conf,内容如下,主要注意这里的type字段,启用transport传输模式。

conn %default
        left=192.168.0.2
        leftcert=sunCert.pem
        leftid=@sun.strongswan.org
        leftfirewall=yes

conn nat-t
        right=%any
        type=transport
        auto=add

测试准备阶段

配置文件:ikev2/host2host-transport-nat/pretest.dat,内容为通常的ipsec连接的启动语句。

测试阶段

配置文件:ikev2/host2host-transport-nat/evaltest.dat内容如下。在确认alice主机和sun网关连接(nat-t)建立之后,在主机venus上发起到sun网关的连接(nat-t),完成之后,分别在alice和venus主机上使用ping命令测试到sun网关的连通性。由于venus连接取代了之前alice的连接,alice指定的ping操作将没有回复。

alice::ipsec status 2> /dev/null::nat-t.*ESTABLISHED.*alice@strongswan.org.*sun.strongswan.org::YES
sun:: ipsec status 2> /dev/null::nat-t.*ESTABLISHED.*sun.strongswan.org.*alice@strongswan.org::YES
alice::ipsec status 2> /dev/null::nat-t.*INSTALLED, TRANSPORT, reqid 1::YES
venus::ipsec status 2> /dev/null::nat-t.*INSTALLED, TRANSPORT, reqid 1::YES
sun:: ipsec status 2> /dev/null::nat-t.*INSTALLED, TRANSPORT, reqid 1::YES
alice::ping -c 1 -W 1 PH_IP_SUN::64 bytes from PH_IP_SUN: icmp_.eq=1::NO
venus::ping -c 1 -W 1 PH_IP_SUN::64 bytes from PH_IP_SUN: icmp_.eq=1::YES

以下为ipsec status命令在网关sun上的输出结果。可以看到建立了两个子连接nat-t[1]和nat-t[2],其中nat-t[2]的出方向SPI值为: 0xc2cbad75,而nat-t[1]子连接的出方向SPI值为:0xc31fd249。

Connections:
       nat-t:  192.168.0.2...%any  IKEv1/2
       nat-t:   local:  [sun.strongswan.org] uses public key authentication
       nat-t:    cert:  "C=CH, O=strongSwan Project, CN=sun.strongswan.org"
       nat-t:   remote: uses public key authentication
       nat-t:   child:  dynamic === dynamic TRANSPORT
Security Associations (2 up, 0 connecting):
       nat-t[2]: ESTABLISHED 1 second ago, 192.168.0.2[sun.strongswan.org]...192.168.0.1[C=CH, O=strongSwan Project, CN=venus.strongswan.org]
       nat-t[2]: IKEv2 SPIs: a1c2e3f0309edd7a_i 2a99e2158f22f21a_r*, public key reauthentication in 54 minutes
       nat-t[2]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519
       nat-t{2}:  INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: cd7e7e4f_i c2cbad75_o
       nat-t{2}:  AES_CBC_128/HMAC_SHA2_256_128, 64 bytes_i (1 pkt, 0s ago), 128 bytes_o (2 pkts, 0s ago), rekeying in 15 minutes
       nat-t{2}:   192.168.0.2/32 === 192.168.0.1/32
       nat-t[1]: ESTABLISHED 1 second ago, 192.168.0.2[sun.strongswan.org]...192.168.0.1[alice@strongswan.org]
       nat-t[1]: IKEv2 SPIs: 0824d8a54a6bb939_i a5934ce4cfce7cb4_r*, public key reauthentication in 55 minutes
       nat-t[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519
       nat-t{1}:  INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: c3917287_i c31fd249_o
       nat-t{1}:  AES_CBC_128/HMAC_SHA2_256_128, 64 bytes_i (1 pkt, 0s ago), 0 bytes_o, rekeying in 14 minutes
       nat-t{1}:   192.168.0.2/32 === 192.168.0.1/32

而sun网关上ip -s xfrm policy命令的输出显示,只有SPI值为:0xc2cbad75的策略,即子连接nat-t[2]的策略,对应于venus主机。

src 192.168.0.2/32 dst 192.168.0.1/32 uid 0
        dir out action allow index 601 priority 367231 ptype main share any flag  (0x00000000)
        tmpl src 0.0.0.0 dst 0.0.0.0
                proto esp spi 0xc2cbad75(3268128117) reqid 1(0x00000001) mode transport
                level required share any
                enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff
src 192.168.0.1/32 dst 192.168.0.2/32 uid 0
        dir in action allow index 592 priority 367231 ptype main share any flag  (0x00000000)
        tmpl src 0.0.0.0 dst 0.0.0.0
                proto esp spi 0x00000000(0) reqid 1(0x00000001) mode transport
                level required share any
                enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff

以下交互报文可见。不管是alice还是venus主机的ping报文sun网关都回复给了venus主机。

在这里插入图片描述

如下为测试过程中,iptables的filter表的配置。在INPUT链上,允许源地址为192.168.0.1,目的为192.168.0.2的入方向的reqid等于1的协议为50(ESP)的报文通过。在OUTPUT链上的规则同理,只是作用于出方向。

=== filter table ===
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   168 ACCEPT     all  --  eth0   *       192.168.0.1          192.168.0.2          policy match dir in pol ipsec reqid 1 proto 50
    0     0 ACCEPT     all  --  eth0   *       192.168.0.1          192.168.0.2          policy match dir in pol ipsec reqid 1 proto 50

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   168 ACCEPT     all  --  *      eth0    192.168.0.2          192.168.0.1          policy match dir out pol ipsec reqid 1 proto 50
    0     0 ACCEPT     all  --  *      eth0    192.168.0.2          192.168.0.1          policy match dir out pol ipsec reqid 1 proto 50

strongswan测试版本: 5.8.1

END

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值