5.15.6. 内核级 IPsec 问题
当 VPN 隧道似乎已建立但没有流量流时,对内核级 IPsec 问题进行故障排除。在这种情况下,检查内核的 IPsec 状态,以检查隧道策略和加密密钥是否已正确安装。
这个过程涉及检查两个组件:
- 安全策略数据库(SPD):指示内核要加密哪些流量的规则。
- 安全关联数据库(SAD):指示内核如何加密该流量的密钥。
首先,检查 SPD 中是否存在正确的策略:
# ip xfrm policy
src 192.0.2.1/32 dst 10.0.0.0/8
dir out priority 666 ptype main
tmpl src 198.51.100.13 dst 203.0.113.22
proto esp reqid 16417 mode tunnel
输出应包含与您的入方向和出方向匹配的 leftsubnet 和 rightsubnet 参数的策略。如果没有看到流量的策略,Libreswan 无法创建内核规则,且流量未加密。
如果策略存在,检查它是否在 SAD 中有相应的密钥集合:
# ip xfrm state
src 203.0.113.22 dst 198.51.100.13
proto esp spi 0xa78b3fdb reqid 16417 mode tunnel
auth-trunc hmac(sha1) 0x3763cd3b... 96
enc cbc(aes) 0xd9dba399...
警告
这个命令显示私有密钥。不要共享此输出,因为攻击者可以使用它来解密您的 VPN 流量。
如果策略存在,但没有看到具有相同 reqid 的相应状态,则这通常意味着互联网密钥交换(IKE)协商失败。这两个 VPN 端点无法就一组密钥达成一致。
如需更详细的诊断,请将 -s 选项与其中一个命令一起使用。这个选项会添加流量计数器,这有助于识别内核是否按特定规则处理数据包。