我使用的版本strongSwan 6.0.0, FreeBSD 14.1-RELEASE, amd64
背景
在freeBSD上配置strongSwan,启动charon时,一直遇到如下错误:
unable to set IPSEC_POLICY on socket: Protocol not available
过程
此前查阅的某个文档说 freeBSD已经默认开启IPSec内核功能,所以一直没有往内核这边想,后来实在没办法了,开始怀疑是不是内核的IPSec功能未启动。
查看IPSec man page。
需要内核开启:
options IPSEC
options IPSEC_SUPPORT
device crypto
查看/usr/src/sys/amd64/conf/GENERIC。
# cat GENERIC | grep ipsec
options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5
# cat GENERIC | grep crypto
device crypto # core crypto support
发现IPSEC_SUPPORT 和 crypto 已经开启。但是没有IPSEC。
注意 IPSEC_SUPPORT 后面的注释# Allow kldload of ipsec and tcpmd5
,原来需要使用kldload加载ipsec模块。
查看/boot/kernel/。
发现有ipsec.ko模块。
使用命令 kldload -nv /boot/kernel/ipsec.ko
加载。
再次尝试启动charon。报错消失。
双向ping测试成功。tcpdump成功捕获ESP数据包。
启动 IPSec功能 用到的所有shell命令:
kldload -nv /boot/kernel/ipsec.ko
/usr/local/libexec/ipsec/charon &
sockstat -4l
swanctl -q
swanctl -L