本文档介绍最常见的IPsec问题之一,即安全关联(SA)可能会在对等设备之间不同步。因此,加密设备将使用对等加密器不知道的SA加密流量。
本文档没有任何特定的要求。
本文档中的此信息基于Cisco IOS® 15.1(4)M4版完成的测试。脚本和配置也应与早期的Cisco IOS软件版本配合使用,因为两个小程序都使用Cisco IOS 12.4(22)T版或更高版本支持的嵌入式事件管理器(EEM)版本3.0。但是,这尚未经过测试。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
数据包在对等体上被丢弃,并且此消息记录到系统日志:
*Mar 12 18:22:10.706: %CRYPTO-4-RECVD_PKT_INV_SPI: decaps: rec'd IPSEC packet has invalid spi for destaddr=213.163.222.7, prot=50, spi=0x68842105(1753489669), srcaddr=11.1.1.3, input interface=Ethernet0/0
有关无效安全参数索引(SPI)的详细信息,请参阅IPSec %RECVD_PKT_INV_SPI错误和无效SPI恢复。本文档介绍如何对间歇性错误发生的场景进行故障排除,这使收集必要数据进行故障排除变得困难。
此类问题与正常VPN故障排除不同,在正常VPN故障排除中,您可以在问题发生时获得调试。为了排除由无效SPI导致的间歇性隧道抖动故障,您必须首先确定两个头端是如何失步的。由于无法预测下一次停机的发生时间,因此EEM脚本是解决方案。
由于了解触发此系统日志消息之前发生的情况非常重要,请继续在路由器上运行条件调试并将其发送到系统日志服务器,以便不影响生产流量。如果在脚本中启用调试,则在触发系统日志消息后生成调试,这可能不有用。以下是您可能希望在此日志的发送方和接收方上运行的调试列表:
debug crypto condition peer ipv4 <peer IP address> debug crypto isakmp debug crypto ipsec debug crypto engine
EEM脚本旨在执行两项操作:
在生成第一个系统日志消息后收集18秒后,关闭接收方上的调试。可能需要修改延迟计时器,这取决于生成的调试/日志数量。
同时,它禁用调试,让它向对等设备发送SNMP陷阱,然后禁用对等设备上的调试。
简单网络管理协议(SNMP)配置如下所示:
Receiver: ======== snmp-server enable traps event-manager snmp-server host 11.1.1.3 public event-manager snmp-server manager
Sender: ======= snmp-server enable traps event-manager snmp-server host 213.163.222.7 public event-manager snmp-server manager
接收方和发送方的脚本如下所示:
Receiver: ======== !--- To test if this output gets logged to the file called "hub" sh ip int bri | tee /append disk0:hub.txt conf t ! event manager applet command_hub event syslog pattern "CRYPTO-4-RECVD_PKT_INV_SPI.*srcaddr=11.1.1.3" action 1 cli command "enable" action 2 syslog msg "command_hub is running ..." priority informational action 3 cli command "show crypto sockets | append disk0:hub.txt" action 4 cli command "show crypto isa sa | append disk0:hub.txt" action 5 cli command "show crypto ipsec sa detail | append disk0:hub.txt" action 6 cli command "show dmvpn detail | append disk0:hub.txt" action 7 wait 18 action 8 cli command "undebug all" action 8.1 snmp-trap intdata1 2323232 strdata "" action 9 syslog priority informational msg "DONE ON HUB" ! end
Sender: ======= conf t ! event manager applet spoke_app event snmp-notification oid 1.3.6.1.4.1.9.10.91.1.2.3.1.9. oid-val "2323232" op eq src-ip-address 213.163.222.7 maxrun 35 action 1.0 syslog msg "Received trap from Hub..." action 2.0 cli command "enable" action 3.0 cli command "undebug all" action 4.0 syslog msg "DONE ON SPOKE" ! end
EEM脚本日志消息列表如下所示:
Receiver: ======= *Mar 12 18:22:10.706: %CRYPTO-4-RECVD_PKT_INV_SPI: decaps: rec'd IPSEC packet has invalid spi for destaddr=213.163.222.7, prot=50, spi=0x68842105(1753489669), srcaddr=11.1.1.3, input interface=Ethernet0/0 *Mar 12 18:22:10.727: %HA_EM-6-LOG: command_hub: command_hub is running ... hub# *Mar 12 18:22:30.026: %HA_EM-6-LOG: command_hub: DONE ON HUB
Sender: ======= spoke# *Mar 12 18:22:30.542: %HA_EM-6-LOG: spoke_app: Received trap from Hub... *Mar 12 18:22:30.889: %HA_EM-6-LOG: spoke_app: DONE ON SPOKE
要验证问题是否已解决,请输入show debug命令。
Receiver: ========= hub# show debug Sender: ======= spoke# show debug
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
20-Mar-2013 |
初始版本 |