SWAN之ikev2协议forecast配置测试
本测试中远程用户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配置测试相关推荐
- SWAN之ikev2协议inactivity-timeout配置测试
本测试主要验证carol与sun网关建立连接,同时carol设置inactivity空闲时长为10秒,在超时之后删除连接的功能.本次测试拓扑如下: 配置 carol的配置文件:ikev2/inacti ...
- SWAN之ikev2协议mobike配置测试
本测试主要验证远程用户alice与网关sun建立连接时,首先使用eth1接口的IP地址发起连接,在建立连接之后,禁用eth1,以便连接可更新到eth0接口上.其中alice主机的两个接口与sun网关之 ...
- SWAN之ikev2协议lookip配置测试
本测试主要验证远程用户carol.dave与网关moon建立连接时,通过在ipsec.conf文件中指定leftsourceip字段值为%config,由moon获取虚拟IP地址的功能.并在moon上 ...
- SWAN之ikev2协议farp配置测试
本测试主要验证远程用户carol.dave与网关moon建立连接时,并且通过在ipsec.conf文件中设置leftsourceip=%config,向moon网关请求虚拟IP地址,此虚拟地址位于10 ...
- SWAN之ikev2协议compress配置测试
本测试主要验证远程用户carol和moon网关之间的IPComp压缩功能,两次使用ping测试隧道连接的压缩与否,使用的报文长度不同,内核不压缩长度较小的报文.测试拓扑如下: 主机配置 carol的连 ...
- SWAN之ikev2协议config-payload-swapped配置测试
本测试主要验证远程用户carol以及dave和网关moon之间的IKE配置(configuration)功能,由两个远程用户发起配置请求,moon网关回复分配的虚拟IP地址和DNS服务器地址信息.在远 ...
- SWAN之ikev2协议host2host-swapped配置测试
本测试主要验证moon与sun主机基于X.509证书认证的连接场景,在配置文件ipsec.conf中使用right相关关键字表示本地配置,而使用left表示对端的配置,已测试strongswan的配置 ...
- IKEv2协议中的EAP-TLS认证处理流程
以下根据strongswan代码中的testing/tests/ikev2/rw-eap-tls-only/中的测试环境,验证一下IKEv2协议的EAP-TLS认证过程.拓扑结构如下: 拓扑图中使用到 ...
- cisco路由器基本实验之三 动态路由之RIP协议的配置(Boson NetSim)
言归正传,Boson Netsim的实验规划,默认路由下一个实验应该是RIP协议的配置.众所周知,RIP(Routing Information Protocol),即路由信息协议,它与IGRP,OS ...
最新文章
- Glide源码(基于4.8版本)解析
- PhpStorm+Homestead+Xdebug调试Laravel
- 学python需要英语基础吗-学python需要英语基础吗
- 修改windows系統下xampp中apache端口被其他程式占用的問題
- kibana 更新 索引模式_Kibana对索引动态加字段显示
- 构建maven项目插件_如何构建一个Maven插件
- 别说我不会玩,我来告诉你iPhone有多烂!iPhone缺点集
- 简明Python3教程 16.标准库
- SpringBoot笔记整理(二)
- PAT (Basic Level) Practice1004 成绩排名
- Mysql 查询列名
- rmt_redis.c:6446 ERROR: Can't handle RDB format version redis-migrate-tool迁移工具报错
- 给图片添加下雪飘雪动画特效动态图效果制作ps插件素材
- 【三维目标检测】PointRCNN(二)
- Java String常用方法
- dxp全称_Protel DXP 2004 分立元件库元件名称中英对照表
- 蒸汽平台进dota2显示连接不上服务器,蒸汽平台dota2连不上服务器
- Python——类和对象、魔术方法(day07)
- Python打开记事本
- 简单步骤:Android studio 内容观察者 - 实现数据变化监测