0x01 前言

今天在维护家庭网络时发现strongswan日志中存在许多连接失败的记录,而且都是IKEv2协议的。经过排查后发现是配置文件中一个值设置错误所导致的。

安装过程可以参考我之前写的文章:配置基于StrongSwan 的IKEv2

0x02 错误

客户端使用IKEv2协议连接VPN服务器时会一闪而过,不能正常连接。在日志中可以看到以下记录:

这意思是客户端传入到服务器中的信息,在服务器中找不到可用的配置与之相适应。

0x03 原因

找到问题,现在来检查配置文件以便找到原因。以下是IKEv2的相关配置信息(敏感信息已经隐藏):

IKEv2有两个很总要的信息需要确认,一个是数字证书,证书必须正确配置ca、crt和key三个文件。其中服务器证书serverCert.crt中subject DN或subjectAltName字段必须包含服务器的IP或域名。

在这里我确定我的证书的配置是正确的,最后可以确定问题出在服务器域名与证书域名的匹配问题上。在上面的配置信息中最让我感到疑惑的是leftid这个配置信息。

通过查找wiki(ipsec.conf: conn <name>),我终于知道为什么会链接不上了。wiki中关于left|rightid有一段说明:

大意是:

left|rightid应该在用户认证过程中进行鉴别,同时left|rightcert的值应该是left|rightcert数字证书中的subject DN或subjectAltName中的值。left|rightid可以是IP地址、域名、邮箱地址甚至是证书中可以辨识的名称。

0x04 解决

问题很简单,解决图途径也很简单。根据上面的解释,我只需要将leftid中的值替换为证书的域名即可:

然后重启ipsec:

0x05 结语

一切又恢复正常。