本测试中远程用户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 homeleft=PH_IP_CAROLleftsourceip=%configleftsubnet=0.0.0.0/0leftcert=carolCert.pemleftid=carol@strongswan.orgright=PH_IP_MOONrightsubnet=0.0.0.0/0rightid=@moon.strongswan.orgauto=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 rwleft=PH_IP_MOONleftcert=moonCert.pemleftid=@moon.strongswan.orgleftsubnet=10.1.0.0/16,224.0.0.0/4right=%anyrightid=*@strongswan.orgrightsourceip=10.1.0.128/26rightsubnet=%dynamic,224.0.0.0/4,10.1.255.255mark=%uniqueauto=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 forecastsyslog {daemon {net = 2}}plugins {forecast {interface = eth1reinject = 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 networkmoon 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 0dir out action allow index 273 priority 389759 ptype main share any flag  (0x00000000)mark 0x2/0xfffffffftmpl src 192.168.0.1 dst 192.168.0.200proto esp spi 0xcd533a61(3444783713) reqid 2(0x00000002) mode tunnellevel required share anyenc-mask ffffffff auth-mask ffffffff comp-mask ffffffff
src 10.1.0.0/16 dst 224.0.0.0/4 uid 0dir out action allow index 129 priority 389759 ptype main share any flag  (0x00000000)mark 0x1/0xfffffffftmpl src 192.168.0.1 dst 192.168.0.100proto esp spi 0xcb0b3bf5(3406511093) reqid 1(0x00000001) mode tunnellevel required share anyenc-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               destination1   112 MARK       all  --  *      *       0.0.0.0/0            10.1.0.130           MARK set 0x23   500 MARK       esp  --  *      *       192.168.0.200        192.168.0.1          esp spi:3263136694 MARK set 0x21   112 MARK       all  --  *      *       0.0.0.0/0            10.1.0.129           MARK set 0x13   500 MARK       esp  --  *      *       192.168.0.100        192.168.0.1          esp spi:3301926214 MARK set 0x1Chain OUTPUT (policy ACCEPT 187 packets, 68868 bytes)pkts bytes target     prot opt in     out     source               destination0     0 MARK       all  --  *      *       0.0.0.0/0            10.1.0.130           MARK set 0x20     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  IKEv2home:   local:  [carol@strongswan.org] uses public key authenticationhome:    cert:  "C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org"home:   remote: [moon.strongswan.org] uses public key authenticationhome:   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 minuteshome[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519home{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: cb0b3bf5_i c4cf6546_ohome{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    uteshome{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

SWAN之ikev2协议forecast配置测试相关推荐

  1. SWAN之ikev2协议inactivity-timeout配置测试

    本测试主要验证carol与sun网关建立连接,同时carol设置inactivity空闲时长为10秒,在超时之后删除连接的功能.本次测试拓扑如下: 配置 carol的配置文件:ikev2/inacti ...

  2. SWAN之ikev2协议mobike配置测试

    本测试主要验证远程用户alice与网关sun建立连接时,首先使用eth1接口的IP地址发起连接,在建立连接之后,禁用eth1,以便连接可更新到eth0接口上.其中alice主机的两个接口与sun网关之 ...

  3. SWAN之ikev2协议lookip配置测试

    本测试主要验证远程用户carol.dave与网关moon建立连接时,通过在ipsec.conf文件中指定leftsourceip字段值为%config,由moon获取虚拟IP地址的功能.并在moon上 ...

  4. SWAN之ikev2协议farp配置测试

    本测试主要验证远程用户carol.dave与网关moon建立连接时,并且通过在ipsec.conf文件中设置leftsourceip=%config,向moon网关请求虚拟IP地址,此虚拟地址位于10 ...

  5. SWAN之ikev2协议compress配置测试

    本测试主要验证远程用户carol和moon网关之间的IPComp压缩功能,两次使用ping测试隧道连接的压缩与否,使用的报文长度不同,内核不压缩长度较小的报文.测试拓扑如下: 主机配置 carol的连 ...

  6. SWAN之ikev2协议config-payload-swapped配置测试

    本测试主要验证远程用户carol以及dave和网关moon之间的IKE配置(configuration)功能,由两个远程用户发起配置请求,moon网关回复分配的虚拟IP地址和DNS服务器地址信息.在远 ...

  7. SWAN之ikev2协议host2host-swapped配置测试

    本测试主要验证moon与sun主机基于X.509证书认证的连接场景,在配置文件ipsec.conf中使用right相关关键字表示本地配置,而使用left表示对端的配置,已测试strongswan的配置 ...

  8. IKEv2协议中的EAP-TLS认证处理流程

    以下根据strongswan代码中的testing/tests/ikev2/rw-eap-tls-only/中的测试环境,验证一下IKEv2协议的EAP-TLS认证过程.拓扑结构如下: 拓扑图中使用到 ...

  9. cisco路由器基本实验之三 动态路由之RIP协议的配置(Boson NetSim)

    言归正传,Boson Netsim的实验规划,默认路由下一个实验应该是RIP协议的配置.众所周知,RIP(Routing Information Protocol),即路由信息协议,它与IGRP,OS ...

最新文章

  1. Glide源码(基于4.8版本)解析
  2. PhpStorm+Homestead+Xdebug调试Laravel
  3. 学python需要英语基础吗-学python需要英语基础吗
  4. 修改windows系統下xampp中apache端口被其他程式占用的問題
  5. kibana 更新 索引模式_Kibana对索引动态加字段显示
  6. 构建maven项目插件_如何构建一个Maven插件
  7. 别说我不会玩,我来告诉你iPhone有多烂!iPhone缺点集
  8. 简明Python3教程 16.标准库
  9. SpringBoot笔记整理(二)
  10. PAT (Basic Level) Practice1004 成绩排名
  11. Mysql 查询列名
  12. rmt_redis.c:6446 ERROR: Can't handle RDB format version redis-migrate-tool迁移工具报错
  13. 给图片添加下雪飘雪动画特效动态图效果制作ps插件素材
  14. 【三维目标检测】PointRCNN(二)
  15. Java String常用方法
  16. dxp全称_Protel DXP 2004 分立元件库元件名称中英对照表
  17. 蒸汽平台进dota2显示连接不上服务器,蒸汽平台dota2连不上服务器
  18. Python——类和对象、魔术方法(day07)
  19. Python打开记事本
  20. 简单步骤:Android studio 内容观察者 - 实现数据变化监测

热门文章

  1. QQ账号密码的保存与读取
  2. 图解电商支付架构设计(参考)
  3. 【云原生】Java 应用程序在 Kubernetes 上棘手的内存管理
  4. 文件夹exe病毒的临时解决方案
  5. 收集的卡通动漫模型手办之01
  6. ECSHOP模板堂仿京东属性跳转插件,ecshop商品不同属性不同url插件,ecshop点击该属性跳到新页面
  7. SQL-3(数据筛选)
  8. 【详细】HTML的Link标签的参数以及用法
  9. 迷宫(2017省赛C/C++填空)
  10. 工作中提高效率:高效能的七个习惯的实践