소개
이 문서에서는 SA(Security Association)가 피어 디바이스 간에 동기화되지 않는 경우의 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 ASR(Aggregation Services Routers) 및 Cisco Catalyst 8000 Series 라우터)에서 이 특정 삭제는 다음 예에 표시된 것처럼 글로벌 QFP(Quantum Flow Processor) 삭제 카운터와 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)에 대한 이 메시지가 시스템 로그에 한 번만 표시되는 경우, 피어 디바이스가 동일한 SA를 사용할 준비가 되지 않은 상태에서 한 피어가 새 SA를 사용하기 시작할 수 있는 IPsec 키 재설정과 동시에 나타나는 일시적인 현상일 가능성이 높습니다. 이는 일시적일 뿐이며 일부 패킷에만 영향을 미치므로 일반적으로 문제가 되지 않습니다.
하지만 동일한 플로우 및 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(Dead Peer Detection)가 활성화될 때까지 복구할 수 없음을 나타냅니다.
솔루션
이 섹션에서는 이전 섹션에서 설명한 문제를 해결하는 데 사용할 수 있는 정보를 제공합니다.
유효하지 않은 SPI 복구
이 문제를 해결하려면 잘못된 SPI 복구 기능을 활성화하는 것이 좋습니다. 예를 들어 crypto isakmp invalid-spi-recovery 명령을 입력합니다. 다음은 이 명령의 사용을 설명하는 몇 가지 중요 참고 사항입니다.
- 첫째, 유효하지 않은 SPI 복구는 SA가 동기화되지 않은 경우에만 복구 메커니즘 역할을 합니다. 이 상태를 복구하는 데 도움이 되지만, 처음에 SA가 동기화되지 않게 만든 근본 문제를 해결하지는 않습니다. 근본 원인을 더욱 잘 파악하려면 두 터널 엔드포인트 모두에서 ISAKMP 및 IPsec 디버그를 활성화해야 합니다. 문제가 자주 발생하는 경우 단순히 문제를 숨기는 것이 아니라 디버그를 받아 근본 원인을 해결하려고 시도합니다.
- crypto isakmp invalid-spi-recovery 명령의 목적과 기능에 대해 잘못된 인식이 있습니다. 이 명령이 없더라도 Cisco IOS는 해당 피어에 IKE SA가 이미 있는 경우 수신한 SA의 전송 피어에 DELETE 알림을 보낼 때 일종의 유효하지 않은 SPI 복구 기능을 이미 수행합니다. 다시 이 작업은 crypto isakmp invalid-spi-recovery 명령이 활성화되어 있는지 여부에 관계없이 발생합니다.
- crypto isakmp invalid-spi-recovery 명령은 라우터가 유효하지 않은 SPI가 있는 IPsec 트래픽을 수신하고, 해당 피어의 IKE SA가 없는 상태를 해결하려고 시도합니다. 이 경우 피어와의 새 IKE 세션 설정을 시도하고 새로 생성된 IKE SA를 통해 DELETE 알림을 보냅니다. 그러나 이 명령은 모든 암호화 설정에 대해 작동하지 않습니다. 이 명령이 작동하는 유일한 설정은 피어가 명시적으로 정의된 정적 암호화 맵과 VTI와 같이 인스턴스화된 암호화 맵에서 파생된 정적 피어입니다. 다음은 일반적으로 사용되는 암호화 설정과 유효하지 않은 SPI 복구가 해당 설정에서 작동하는지 여부를 요약한 것입니다.
암호화 설정 |
유효하지 않은 SPI 복구 |
정적 암호화 맵 |
예 |
동적 암호화 맵 |
아니요 |
터널 보호를 사용하는 P2P GRE |
예 |
정적 SHRP 매핑을 사용하는 mGRE 터널 보호 |
예 |
동적 NHRP 매핑을사용하는 mGRE 터널 보호 |
아니요 |
sVTI |
예 |
EzVPN 클라이언트 |
해당 없음 |
간헐적으로 발생하는 유효하지 않은 SPI 오류 메시지 문제 해결
유효하지 않은 SPI 오류 메시지가 간헐적으로 표시되는 경우가 많습니다. 이로 인해 관련 디버그를 수집하기가 매우 힘들게 되므로 문제 해결이 어려워집니다. 이 경우 EEM(Embedded Event Manager) 스크립트가 매우 유용할 수 있습니다.
알려진 버그
이 목록은 IPsec SA가 동기화되지 않도록 하거나 유효하지 않은 SPI 복구와 관련된 버그를 보여줍니다.
- Cisco 버그 ID CSCvn31824 Cisco IOS XE ISAKMP는 설치가 완료되기 전에 rx 새 SPI 패킷인 경우 새 SPI를 삭제함
- Cisco 버그 ID CSCvd40554 IKEv2: Cisco IOS는 SPI 크기가 0인 INV_SPI 알림을 구문 분석할 수 없습니다. INVALID_SYNTAX를 보냅니다.
- Cisco 버그 ID CSCvp16730 SPI 값이 0xFF로 시작하는 수신 ESP 패킷이 유효하지 않은 SPI 오류로 인해 삭제됨