如果在如何在 IPsec 运行时对系统进行故障排除 中开展的调查无法解决问题,那么问题很可能出在配置的语义而非文件或服务配置的语法上。
如果 ike:default 和 ike:ikev2 服务实例已启用,请确保 IKEv2 和 IKEv1 规则不重叠。应用于相同网络端点的规则会导致冗余 IPsec SA,并且有可能在特定情况下造成连接不足。
如果更改 IKE 规则,请将规则读取到内核。
# ikeadm -v[1|2] read rule
如果运行 IKEv1,请确保规则中的算法机制在您连接到的 IKEv1 系统上可用。要查看可用的算法,请在不支持 IKEv2 的系统上运行 ikeadm dump algorithms 命令:
# ikeadm dump groupsAvailable Diffie-Hellman groups # ikeadm dump encralgsAll IKE encryption algorithms # ikeadm dump authalgsAll IKE authentication algorithms
纠正 IPsec 和 IKEv1 策略文件,使用在两个系统上均可用的算法。然后,重新启动 IKEv1 服务,并刷新 IPsec 服务。
# svcadm restart ike:default; svcadm refresh ipsec/policy
如果通过 IKEv1 使用预先共享的密钥并且远程 IKEv1 系统已重新引导,请在本地系统上运行 ipseckey flush 命令。
如果使用自签名证书,请与另一位管理员一起验证并未重新创建 DN 相同的证书,而且证书的散列值匹配。有关验证步骤,请参见如何使用自签名公钥证书配置 IKEv2 中的Step 4。
如果证书已更新,请导入新的证书,然后刷新并重新启动 IKEv2 服务。
使用 ikeadm -v2 dump | get 命令查看当前的 IKEv2 配置。有关使用摘要,请参见查看 IKE 信息。
使用 kstat 命令显示与 IPsec 相关的统计信息。有关更多信息,请参见 kstat(1M) 手册页。
# kstat -m ipsecesp # kstat -m ipsecah # kstat -m ip
以下示例中的 kstat 输出指示 ipsecesp 模块中没有问题。
# kstat -m ipsecesp module: ipsecesp instance: 0 name: esp_stat class: net acquire_requests 18 bad_auth 0 bad_decrypt 0 bad_padding 0 bytes_expired 0 crtime 4.87974774 crypto_async 0 crypto_failures 0 crypto_sync 172 good_auth 86 keysock_in 135 num_aalgs 9 num_ealgs 13 out_discards 0 out_requests 86 replay_early_failures 0 replay_failures 0 sa_port_renumbers 0 snaptime 5946769.7947628
使用 snoop 命令查看未受保护的通信。Wireshark 应用程序可以读取 snoop 输出。有关 snoop 输出的示例,请参见如何检验包是否受 IPsec 保护。