Introducción
Este documento describe el problema de IPsec cuando las asociaciones de seguridad (SA) dejan de estar sincronizadas entre los dispositivos pares.
Problema
Uno de los problemas más comunes de IPsec es que las SA pueden perder la sincronización entre los dispositivos pares. Como resultado, el extremo de cifrado cifra el tráfico con una SA que su par no conoce. El par descarta estos paquetes y aparece este mensaje en el syslog:
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
Nota: En las plataformas de routing Cisco IOS® XE, por ejemplo, los routers Cisco Aggregation Services Routers (ASR) y Cisco Catalyst 8000 Series, esta caída en particular se registra tanto en el contador de caídas global Quantum Flow Processor (QFP) como en el contador de caídas de funciones de IPsec, como se muestra en los siguientes ejemplos.
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
Es importante tener en cuenta que este mensaje en particular está limitado por velocidad en Cisco IOS® a una velocidad de uno por minuto por las razones de seguridad obvias. Si este mensaje para un flujo determinado (SRC, DST o SPI) solo aparece una vez en el syslog, entonces es probable que se trate de una condición transitoria que esté presente al mismo tiempo que la regeneración de claves IPsec, donde un par puede comenzar a utilizar la nueva SA mientras el dispositivo par no esté listo para utilizar la misma SA. Normalmente, esto no es un problema, ya que es solo temporal y solo afectaría a unos pocos paquetes.
Sin embargo, si el mismo mensaje persiste para el mismo flujo y número SPI, entonces es indicativo de que las SAs IPsec han perdido la sincronización entre los peers. Por ejemplo:
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
Esto indica que el tráfico tiene agujeros negros y no se puede recuperar hasta que las SA venzan en el dispositivo de envío o hasta que se active la detección de punto muerto (DPD).
Solución
Esta sección proporciona información que puede utilizar para resolver el problema descrito en la sección anterior.
Recuperación SPI no válida
Para resolver este problema, Cisco recomienda que habilite la función de recuperación SPI no válida. Por ejemplo, ingrese el comando crypto isakmp invalid-spi-recovery. A continuación, se incluyen algunas notas importantes que describen el uso de este comando:
- En primer lugar, la recuperación SPI no válida solo sirve como mecanismo de recuperación cuando las SA no están sincronizadas. Ayuda a recuperarse de esta condición, pero no resuelve el problema raíz que causó que las SA se desincronizaran en primer lugar. Para entender mejor la causa raíz, debe habilitar los debugs ISAKMP e IPsec en ambos extremos del túnel. Si el problema ocurre con frecuencia, obtenga los debugs e intente abordar la causa raíz (y no sólo enmascarar el problema).
- Hay un error común acerca del propósito y la funcionalidad del comando crypto isakmp invalid-spi-recovery. Incluso sin este comando, Cisco IOS ya realiza un tipo de funcionalidad de recuperación SPI no válida cuando envía una notificación DELETE al par remitente para la SA que se recibe si ya tiene una SA IKE con ese par. Nuevamente, esto ocurre independientemente de si se activa el comando crypto isakmp invalid-spi-recovery.
- El comando crypto isakmp invalid-spi-recovery intenta abordar la condición en la que un router recibe tráfico IPsec con SPI no válido y no tiene una SA IKE con ese par. En este caso, intenta establecer una nueva sesión IKE con el par y envía una notificación DELETE sobre la SA IKE recién creada. Sin embargo, este comando no funciona para todas las configuraciones de criptografía. Las únicas configuraciones para las que funciona este comando son mapas criptográficos estáticos donde el par está definido explícitamente y pares estáticos que se derivan de mapas criptográficos instanciados, como VTI. A continuación se muestra un resumen de las configuraciones criptográficas utilizadas comúnmente y si la recuperación SPI no válida funciona con esa configuración:
Crypto-configuration |
Recuperación SPI no válida |
crypto-map estático |
Yes |
Mapa criptográfico dinámico |
No |
GRE P2P con protección de túnel |
Yes |
Protección de túnel mGRE que utiliza asignación NHRP estática |
Yes |
Protección de túnel mGRE que utiliza asignación NHRP dinámica |
No |
sVTI |
Yes |
cliente EzVPN |
N/A |
Resolución de problemas de mensajes de error SPI intermitentes no válidos
Muchas veces el mensaje de error SPI inválido ocurre intermitentemente. Esto dificulta la resolución de problemas, ya que se hace muy difícil recopilar las depuraciones relevantes. Las secuencias de comandos de Embedded Event Manager (EEM) pueden ser muy útiles en este caso.
Error de funcionamiento conocido
Esta lista muestra errores que pueden causar que las SAs IPsec se desincronicen o estén relacionadas con la recuperación SPI no válida:
- Cisco bug ID CSCvn31824 Cisco IOS XE ISAKMP elimina el nuevo SPI si se devuelve un nuevo paquete SPI antes de que se realice la instalación
- ID de bug de Cisco CSCvd4054 IKEv2: Cisco IOS no puede analizar la notificación INV_SPI con el tamaño de SPI 0 - envía INVALID_SYNTAX
- ID de bug de Cisco CSCvp16730 Los paquetes ESP entrantes con valor SPI que comienza con 0xFF se descartan debido a un error SPI no válido