strongSwan是一个开源的基于IPsec的VPN解决方案,经过前面几篇文章的铺垫,今天终于可以测试strongSwan和华三设备的对接情况了。
strongSwan的默认安装路径是/etc/strongswan/,这里面比较重要的就是ipsec.conf和ipsec.secrets这两个配置文件了。
对组网拓扑稍作调整,用一台华三VSR替换掉Linux2主机,使Linux服务器和VSR直接对接,如下图所示:
我们已经对strongSwan和VSR的IPsec配置进行了初步对比,简单回顾一下:
先看VSR和strongSwan一样的地方:第一阶段的协商模式默认都是主模式,第二阶段默认的加密模式都是ESP,报文封装模式默认都是隧道模式。
再看有差别的地方,strongSwan的ipsec.conf配置文件如下:
# cat /etc/strongswan/ipsec.conf
conn swan
authby = psk
keyexchange=ikev1
left=12.1.1.1
leftsubnet=11.1.1.0/24
right=12.1.1.2
rightsubnet=22.1.1.0/24
auto=route
这里面有隐藏的默认配置:
conn swan
leftid=12.1.1.1
rightid=12.1.1.2
ike = aes128-sha256-modp3072
esp = aes128-sha256
这里有个问题,就是IKE算法中的PRF-modp3072算法华三暂时是不支持的。同时strongSwan有配置说明,如果没有给出PRF,则为完整性定义的算法将用于PRF,所以我们把配置修改为ike = aes128-sha256试一下。
到这里,strongSwan的配置就完成了。
conn swan
authby = psk
keyexchange=ikev1
left=12.1.1.1
leftid=12.1.1.1
leftsubnet=11.1.1.0/24
right=12.1.1.2
rightid=12.1.1.2
rightsubnet=22.1.1.0/24
auto=route
ike = aes128-sha256
esp = aes128-sha256
# cat /etc/strongswan/ipsec.secrets
12.1.1.2 12.1.1.1 : PSK swan
接下来就是比较拿手的H3C配置了,按照strongSwan的配置进行调整,直接上配置:
#
ike keychain swan
address 12.1.1.1 255.255.255.0 key simple swan
#
ike proposal 10
aes-cbc-128
sha256
#
ike profile swan
keychain swan
address 12.1.1.2
match remote identity address 12.1.1.1 255.255.255.0
proposal 10
#
acl advanced 3402
rule 0 permit ip source 22.1.1.0 0.0.0.255 destination 11.1.1.0 0.0.0.255
#
ipsec transform-set swan
esp encryption-algorithm aes-cbc-128
esp authentication-algorithm sha256
#
ipsec policy swan 10 isakmp
swan
security acl 3402
local-address 12.1.1.2
12.1.1.1
swan
#
interface GigabitEthernet3/0
ipsec apply policy swan
然后触发一下,发现IPsec协商失败,状态未知。
在Linux端查看也是IKE SA建立失败。
在VSR上进行debug,发现有报错,提示“No HASH in notification payload.”,翻译一下就是说通知有效负载中没有HASH。
然后抓包看一下。
我们发现DH组和生命周期信息还是存在一些差异,修改strongSwan的算法配置为ike = aes128-sha256-modp1024,对应的,调整VSR中ike proposal的DH组为2(1024-bit),命令dh group2。同时调整strongSwan的ikelifetime为86400(1天)。
ike = aes128-sha256-modp1024
ikelifetime=86400
再次触发一下,通了!
查看VSR上相关的SA信息。
查看strongSwan的相关状态信息。
报文交互也是正常的。
看来strongSwan和H3C的IPsec对接也不难啊!
最后给一份完整的设备配置。
# cat /etc/strongswan/ipsec.conf
conn swan
authby = psk
keyexchange=ikev1
left=12.1.1.1
leftid=12.1.1.1
leftsubnet=11.1.1.0/24
right=12.1.1.2
rightid=12.1.1.2
rightsubnet=22.1.1.0/24
auto=route
ike = aes128-sha256-modp1024
esp = aes128-sha256
ikelifetime=86400
# cat /etc/strongswan/ipsec.secrets
12.1.1.1 12.1.1.2 : PSK swan
VSR配置:
#
interface GigabitEthernet3/0
ipsec apply policy swan
#
acl advanced 3402
rule 0 permit ip source 22.1.1.0 0.0.0.255 destination 11.1.1.0 0.0.0.255
#
ipsec transform-set swan
esp encryption-algorithm aes-cbc-128
esp authentication-algorithm sha256
#
ipsec policy swan 10 isakmp
swan
security acl 3402
12.1.1.2
12.1.1.1
swan
#
ike profile swan
keychain swan
address 12.1.1.2
match remote identity address 12.1.1.1 255.255.255.0
proposal 10
#
ike proposal 10
aes-cbc-128
dh group2
sha256
#
ike keychain swan
address 12.1.1.1 255.255.255.0 key simple swan
6666