SWAN之ikev2协议forecast配置测试

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

本测试中远程用户carol,dave分别与网关sun建立连接时,并获取虚拟IP地址,moon网关与两个远程用户协商多播和广播的流量选择符,并且使用mark值做区分。网关moon上的forecast插件负责按照netfilter规则对流量进行标记mark,并且在网关以及远程用户之间转发多播/广播流量。本次测试拓扑如下:

在这里插入图片描述

配置

carol的配置文件:ikev2/forecast/hosts/carol/etc/ipsec.conf,内容如下,主要注意是这里的leftsourceip字段值%config,意味着向对端请求IP地址信息。另外,leftsubnet和rightsubnet都指定为:0.0.0.0/0。 dave主机的配置与carol基本相同。

conn home
        left=PH_IP_CAROL
        leftsourceip=%config
        leftsubnet=0.0.0.0/0
        leftcert=carolCert.pem
        leftid=carol@strongswan.org
        right=PH_IP_MOON
        rightsubnet=0.0.0.0/0
        rightid=@moon.strongswan.org
        auto=add

moon的配置文件:ikev2/forecast/hosts/moon/etc/ipsec.conf,内容如下。其leftsubnet指定为10.1.0.0/16网段和224.0.0.0/4多播网段。注意这里的rightid字段的通配符*,可匹配测试中的carol和dave主机。rightsourceip字段指定了一个网段10.1.0.128/26。在此测试中,为carol分配了其中的虚拟地址:10.1.0.129;为dave主机分配了随后的地址10.1.0.130。

字段rightsubnet的内容指定了多播网段224.0.0.0/4和广播地址10.1.255.255,以及%dynamic关键字,其表示分配给对端的虚拟IP地址(10.1.0.129/10.1.0.130)。

mark字段指定为%unique,可为连接分配唯一的mark值,此mark值用于netfilter系统为当前的连接流配置fwmark。

conn rw
        left=PH_IP_MOON
        leftcert=moonCert.pem
        leftid=@moon.strongswan.org
        leftsubnet=10.1.0.0/16,224.0.0.0/4
        right=%any
        rightid=*@strongswan.org
        rightsourceip=10.1.0.128/26
        rightsubnet=%dynamic,224.0.0.0/4,10.1.255.255
        mark=%unique
        auto=add

moon的配置文件:ikev2/forecast/hosts/moon/etc/strongswan.conf,内容如下。与本次测试相关的加载插件有forecast等。forecast参数interface指定监听多播的接口,reinject参数指定执行多播注入的连接名称,此处为rw。

charon {
  load = random nonce aes sha1 sha2 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default updown attr forecast

  syslog {
    daemon {
      net = 2
    }
  }
  plugins {
    forecast {
      interface = eth1
      reinject = rw
    }
  }
}

测试准备阶段

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

测试阶段

配置文件:ikev2/forecast/evaltest.dat内容如下。在确认carol、dave主机和sun网关连接(home/rw)建立之后,在主机alice上ping组播地址239.0.0.1,期望的结果是在carol和dave主机上都可检测(tcpdump)到alice的ping报文。

在carol主机上ping组播地址239.0.0.2,在dave主机上ping组播地址239.0.0.3。期待的结果是在carol上检测到dave的组播报文,以及在dave上检测到carol的组播报文。

最后,在carol和dave主机上执行ping广播地址10.1.255.255的命令,期待在两个主机都可接收到对方的广播报文。

alice::ping -W 1 -c 1 239.0.0.1 2>&1> /dev/null
carol::ping -W 1 -c 1 239.0.0.2 2>&1> /dev/null
dave::ping -W 1 -c 1 239.0.0.3 2>&1> /dev/null
carol::ping -W 1 -c 1 -b 10.1.255.255 2>&1> /dev/null
dave::ping -W 1 -c 1 -b 10.1.255.255 2>&1> /dev/null
moon::iptables -t mangle -L -n -v
carol::tcpdump::IP alice.strongswan.org > 239.0.0.1: ICMP echo request::YES
dave::tcpdump::IP alice.strongswan.org > 239.0.0.1: ICMP echo request::YES
carol::tcpdump::IP 10.1.0.130 > 239.0.0.3: ICMP echo request::YES
dave::tcpdump::IP 10.1.0.129 > 239.0.0.2: ICMP echo request::YES
carol::tcpdump::IP 10.1.0.130 > 10.1.255.255: ICMP echo request::YES
dave::tcpdump::IP 10.1.0.129 > 10.1.255.255: ICMP echo request::YES

以下为moon网关上strongswan进程的forecast插件的日志信息,与以上的测试用ping命令一一对应。

moon charon: 05[NET] forecast intercepted packet: 10.1.0.10 to 239.0.0.1
moon charon: 05[NET] forwarding a 239.0.0.1 multicast from 10.1.0.10 to peer 224.0.0.0/4 (1)
moon charon: 05[NET] forwarding a 239.0.0.1 multicast from 10.1.0.10 to peer 224.0.0.0/4 (2)

moon charon: 08[NET] forecast intercepted packet: 10.1.0.129 to 239.0.0.2
moon charon: 08[NET] forwarding a 239.0.0.2 multicast from 10.1.0.129 to peer 224.0.0.0/4 (2)
moon charon: 08[NET] forwarding a 239.0.0.2 multicast from peer 10.1.0.129 to internal network
moon charon: 07[NET] forecast intercepted packet: 10.1.0.130 to 239.0.0.3
moon charon: 07[NET] forwarding a 239.0.0.3 multicast from 10.1.0.130 to peer 224.0.0.0/4 (1)
moon charon: 07[NET] forwarding a 239.0.0.3 multicast from peer 10.1.0.130 to internal network

moon charon: 06[NET] forecast intercepted packet: 10.1.0.129 to 10.1.255.255
moon charon: 06[NET] forwarding a 10.1.255.255 broadcast from 10.1.0.129 to peer 10.1.255.255/32 (2)
moon charon: 06[NET] forwarding a 10.1.255.255 broadcast from peer 10.1.0.129 to internal network
moon charon: 10[NET] forecast intercepted packet: 10.1.0.130 to 10.1.255.255
moon charon: 10[NET] forwarding a 10.1.255.255 broadcast from 10.1.0.130 to peer 10.1.255.255/32 (1)
moon charon: 10[NET] forwarding a 10.1.255.255 broadcast from peer 10.1.0.130 to internal network

对于第一部分alice(10.1.0.10)执行ping组播地址239.0.0.1的命令,moon网关的forecast模块截获此报文,发现有两个到224.0.0.0/4的连接策略,其中一个的mark值为2,另一个为1。目的地址分别为:192.168.0.200/192.168.0.100。没有mark值将不能区分两个策略。forecast模块将alice发出的组播报文分别发往策略中指定的carol和dave主机。其它ping的流程于此类似。

src 10.1.0.0/16 dst 224.0.0.0/4 uid 0
        dir out action allow index 273 priority 389759 ptype main share any flag  (0x00000000)
        mark 0x2/0xffffffff
        tmpl src 192.168.0.1 dst 192.168.0.200
                proto esp spi 0xcd533a61(3444783713) reqid 2(0x00000002) mode tunnel
                level required share any
                enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff
src 10.1.0.0/16 dst 224.0.0.0/4 uid 0
        dir out action allow index 129 priority 389759 ptype main share any flag  (0x00000000)
        mark 0x1/0xffffffff
        tmpl src 192.168.0.1 dst 192.168.0.100
                proto esp spi 0xcb0b3bf5(3406511093) reqid 1(0x00000001) mode tunnel
                level required share any
                enc-mask ffffffff auth-mask ffffffff comp-mask ffffffff

以下为moon网关上的mangle表的规则设置,可见与地址:192.168.0.100(carol)或者10.1.0.129(carol虚拟地址)相关的规则设置fwmark值为1。对于地址192.168.0.200(dave)或者10.1.0.130(dave虚拟地址)相关规则设置fwmark为2,以示区分。

=== mangle table ===
Chain PREROUTING (policy ACCEPT 141 packets, 14368 bytes)
 pkts bytes target     prot opt in     out     source               destination
    1   112 MARK       all  --  *      *       0.0.0.0/0            10.1.0.130           MARK set 0x2
    3   500 MARK       esp  --  *      *       192.168.0.200        192.168.0.1          esp spi:3263136694 MARK set 0x2
    1   112 MARK       all  --  *      *       0.0.0.0/0            10.1.0.129           MARK set 0x1
    3   500 MARK       esp  --  *      *       192.168.0.100        192.168.0.1          esp spi:3301926214 MARK set 0x1

Chain OUTPUT (policy ACCEPT 187 packets, 68868 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MARK       all  --  *      *       0.0.0.0/0            10.1.0.130           MARK set 0x2
    0     0 MARK       all  --  *      *       0.0.0.0/0            10.1.0.129           MARK set 0x1

以下为主机carol的安全连接信息。其中home子连接的流量选择器(Traffic Selector)为:10.1.0.129/32 10.1.255.255/32 224.0.0.0/4 === 10.1.0.0/16 224.0.0.0/4。以上测试中使用的239开头的组播地址,都属于224.0.0.0/4网段。此处的TS信息将转换为内核中xfrm模块的IPSec策略,可通过命令:ip -s xfrm policy 进行查看,其输出保存在了测试结果文件carol.ip.policy中。moon网关的TS与carol的正好相反。

Connections:
        home:  192.168.0.100...192.168.0.1  IKEv2
        home:   local:  [carol@strongswan.org] uses public key authentication
        home:    cert:  "C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org"
        home:   remote: [moon.strongswan.org] uses public key authentication
        home:   child:  0.0.0.0/0 === 0.0.0.0/0 TUNNEL
Security Associations (1 up, 0 connecting):
        home[1]: ESTABLISHED 6 seconds ago, 192.168.0.100[carol@strongswan.org]...192.168.0.1[moon.strongswan.org]
        home[1]: IKEv2 SPIs: fe167adb7e4863c0_i* d426af9dbb19f951_r, public key reauthentication in 52 minutes
        home[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519
        home{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: cb0b3bf5_i c4cf6546_o
        home{1}:  AES_CBC_128/HMAC_SHA2_256_128, 252 bytes_i (3 pkts, 1s ago), 280 bytes_o (3 pkts, 1s ago), rekeying in 15 min    utes
        home{1}:   10.1.0.129/32 10.1.255.255/32 224.0.0.0/4 === 10.1.0.0/16 224.0.0.0/4

以下为moon网关下发到carol主机的三个TS Initiator和两个TS Responder信息,与以上的配置信息匹配:

在这里插入图片描述

strongswan测试版本: 5.8.1

END

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

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

抵扣说明:

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

余额充值