簡介
本檔案介紹對等裝置之間的安全關聯(SA)不同步時的IPsec問題。
問題
最常見的IPsec問題之一是SA在對等裝置之間可能變得不同步。因此,加密端點會使用對等體不知道的SA對流量進行加密。對等體會捨棄這些封包,且系統日誌中會顯示以下訊息:
Sep 2 13:27:57.707: %CRYPTO-4-RECVD_PKT_INV_SPI: decaps: rec'd IPSEC packet has invalid spi for
destaddr=10.10.1.2, prot=50, spi=0xB761863E(3076621886), srcaddr=10.1.1.1
註:在Cisco IOS® XE路由平台(例如,Cisco Aggregation Services Routers(ASR)和Cisco Catalyst 8000系列路由器)上,此特定丟棄在全域性量子流處理器(QFP)丟棄計數器和IPsec功能丟棄計數器下註冊,如下例所示。
Router# show platform hardware qfp active statistics drop | inc Ipsec
IpsecDenyDrop 0 0
IpsecIkeIndicate 0 0
IpsecInput 0 0 <======
IpsecInvalidSa 0 0
IpsecOutput 0 0
IpsecTailDrop 0 0
IpsecTedIndicate 0 0
Router# show platform hardware qfp active feature ipsec datapath drops all | in SPI
4 IN_US_V4_PKT_SA_NOT_FOUND_SPI 64574 <======
7 IN_TRANS_V4_IPSEC_PKT_NOT_FOUND_SPI 0
12 IN_US_V6_PKT_SA_NOT_FOUND_SPI 0
必須注意的是,出於顯而易見的安全原因,此特定消息在Cisco IOS®中速率受限制,速率為每分鐘1次。如果特定流(SRC、DST或SPI)的此消息僅在系統日誌中出現一次,則很可能是IPsec重定金鑰同時出現的暫時情況,即當對等裝置尚未完全準備好使用同一個SA時,一個對等裝置可以開始使用新的SA。這通常不是問題,因為它只是暫時的,並且只會影響幾個資料包。
但是,如果相同的流和SPI編號仍存在相同的消息,則表明對等體之間的IPsec SA已不同步。舉例來說:
Sep 2 13:36:47.287: %CRYPTO-4-RECVD_PKT_INV_SPI: decaps: rec'd IPSEC packet has invalid spi for
destaddr=10.10.1.2, prot=50, spi=0x1DB73BBB(498547643), srcaddr=10.1.1.1
Sep 2 13:37:48.039: %CRYPTO-4-RECVD_PKT_INV_SPI: decaps: rec'd IPSEC packet has invalid spi for
destaddr=10.10.1.2, prot=50, spi=0x1DB73BBB(498547643), srcaddr=10.1.1.1
這表示流量被黑洞,在傳送裝置上的SA過期或啟用失效對等項檢測(DPD)之前無法恢復。
解決方案
本節提供的資訊可用於解決上一節中描述的問題。
無效的SPI恢復
為了解決此問題,Cisco建議您啟用無效的SPI恢復功能。例如,輸入crypto isakmp invalid-spi-recovery 命令。以下是說明此命令用法的一些重要說明:
- 首先,無效的SPI恢復僅在SA不同步時用作恢復機制。它有助於從此情況中恢復,但無法解決導致SA最初不同步的根本問題。為了更好地瞭解根本原因,您必須在兩個隧道端點上啟用ISAKMP和IPsec調試。如果問題經常發生,則獲取調試並嘗試解決根本原因(而不僅僅是掩蓋問題)。
- crypto isakmp invalid-spi-recovery命令的用途和功能有一個常見誤解。即使沒有此命令,Cisco IOS也會在將DELETE通知傳送到所接收的SA的傳送對等體時,執行一種無效的SPI恢復功能,如果該SA已經具有該對等體的IKE SA。同樣,無論是否啟用crypto isakmp invalid-spi-recovery命令,都會出現這種情況。
- crypto isakmp invalid-spi-recovery命令嘗試解決路由器接收具有無效SPI的IPsec流量並且它沒有具有該對等體的IKE SA的情況。在這種情況下,它會嘗試與對等體建立新的IKE會話,並通過新建立的IKE SA傳送DELETE通知。但是,此命令不適用於所有加密配置。此命令唯一適用的配置是靜態加密對映(其中明確定義了對等體)和靜態對等體(衍生自例項化加密對映,如VTI)。以下是常用密碼編譯組態以及無效SPI復原是否適用於該組態的摘要:
Crypto-configuration |
無效的SPI恢復 |
靜態加密對映 |
是 |
動態加密對映 |
否 |
含通道保護的P2P GRE |
是 |
使用靜態NHRP對映的mGRE通道保護 |
是 |
使用動態NHRP對映的mGRE通道保護 |
否 |
sVTI |
是 |
EzVPN客戶端 |
不適用 |
對間歇性無效SPI錯誤消息進行故障排除
多次出現無效SPI錯誤消息。這導致難以進行故障排除,因為收集相關的調試資訊變得非常困難。在這種情況下,嵌入式事件管理器(EEM)指令碼可能非常有用。
已知錯誤
此清單顯示可能導致IPsec SA不同步或與無效SPI恢復相關的錯誤:
- 思科漏洞ID CSCvn31824 Cisco IOS XE ISAKMP會在安裝完成前刪除新的SPI資料包
- 思科錯誤ID CSCvd40554 IKEv2: Cisco IOS無法解析SPI大小為0的INV_SPI通知 — 傳送INVALID_SYNTAX
- Cisco錯誤ID CSCvp16730 SPI值以0xFF開始的傳入ESP資料包由於SPI錯誤而被丟棄