我们有一个使用 StrongSwan U5.9.10 和 Rocky Linux 9.2 的 VPN 网关,内核为 5.14.0-284 x86_64,总共为不到 200 名 Windows 用户提供服务。使用拆分隧道。
StrongSwan 配置是从旧机器迁移过来的,因此它使用传统的非 swanctl 配置方案。
问题是,对于一小部分用户来说,VPN 连接不稳定。几秒钟到几十分钟后,它们就会断开连接。在旧机器(Linux strongSwan U5.3.5/K3.10.17-smp)上,一切正常。
配置如下:
#ipsec.conf
config setup
uniqueids=yes
conn %default
ike=aes256-sha256-modp2048,aes256-sha256-modp1024,aes128-sha256-modp1024
esp=aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes256-sha1
conn windows
keyexchange=ikev2
dpdaction=clear
dpddelay=300s
ikelifetime=14400s
rekey=no
left=[gateway_wan_ip]
leftid=[gateway_fqdn]
leftsubnet=10.16.0.0/16
leftauth=pubkey
leftcert=strongswan.pem
leftsendcert=always
right=%any
rightsourceip=10.16.100.0/24
rightauth=eap-mschapv2
rightsendcert=never
compress=no
fragmentation=yes
eap_identity=%any
auto=add
有一些错误/proc/self/net/xfrm_stat:
XfrmInNoStates 1
XfrmInStateProtoError 1298
XfrmInStateSeqError 17
正如@ecdsa 在其评论中提到的,审计日志表明存在 SA-icv-failures。
我们尝试过的方法:
- 将 charon.replay_window 增加到 128。这降低了 XFRM 错误计数器,但问题仍然存在,
- 按照说明调整 MTU/MSS这里,
- 排除网关上的 WAN 接口问题。
什么都没帮上忙,现在我陷入困境。下一步该去哪里挖掘?