strongSwan 基于xfrm设备的 Route-based 虚拟专用网实验
本文介绍一个strongSwan 基于xfrm interface_id的 Route-based 虚拟专用网实验
接上一篇strongSwan 基于vti设备的 Route-based 虚拟专用网实验,本文进行xfrm interface_id的实验。

准备
实验环境与上一篇实验相同,首先按图施工,搭建一个传统的基于Policies的IPsec可联通环境。
lxd的相关命令此处略。
h1
参考上一篇。
r1
参考上一篇。
rx
参考上一篇。
r2
参考上一篇。
h2
参考上一篇。
实验
r1
首先执行 以下 testxfrm.sh
ip link del ipsec0
ip link add ipsec0 type xfrm dev lo if_id 42
ip link set ipsec0 up
ip route add 10.88.98.0/24 dev ipsec0
与上个实验不同,不用更改/etc/strongswan.d/charon.conf中install_routes = yes为install_routes = yes
与上个实验不同,不用更改/etc/strongswan.d/charon/forecast.conf中load = yes为load = no
然后更改/etc/swanctl/swanctl.conf为
include conf.d/*.conf
connections {
net-net {
remote_addrs = arch2.strongswan.org
local {
auth = pubkey
certs = arch1Cert.pem
}
remote {
auth = pubkey
}
children {
net-net {
local_ts = 0.0.0.0/0
remote_ts = 0.0.0.0/0
if_id_in = 42
if_id_out = 42
start_action = trap
}
}
}
}
测试从h1上能ping通h2,实验成功。
由于基于xfrm的Route-based虚拟专用网,不像基于GRE的虚拟专用网一样,必须两端同时启用。此处r2的设置略。但两端同时启用,应该也能成功。
结论
- xfrm接口模式下,更改
/etc/strongswan.d/charon/forecast.conf中load = yes为load = no没必要,应该跟forcast插件动的是netfilters中的mark,而xfrm模式动的是if_id互不冲突有关吧。 - xfrm接口模式下,
/etc/strongswan.d/charon/bypass-lan.conf也不用管,尽管官方bypass-lan插件文档说可能跟route-base虚拟专用网可能有冲突。 - r1和r2进行SNAT的目的是模拟公网IPv4上网的实际场景,不进行SNAT实验也可以成功。 实验中使用OSPF打通了r1、rx、r2方便路由管理,r1、r2没有通过OSPF发布eth0网段路由是有意为之,也符合实际场景。
参考
下一步
- 实验启用firewalld防火墙