이 문서에서는 다음 상자에 표시된 것처럼 syslog의 "%CRYPTO-4-RECVD_PKT_MAC_ERR" 메시지와 함께 IPsec 터널을 통한 ping 손실을 해결하는 방법에 대해 설명합니다.
May 23 11:41:38.139 GMT: %CRYPTO-4-RECVD_PKT_MAC_ERR:
decrypt: mac verify failed for connection
id=2989 local=172.16.200.18 remote=172.16.204.18 spi=999CD43B
seqno=00071328
그러한 하락의 적은 비율은 정상이라고 여겨진다.그러나 이 문제로 인해 높은 하락률이 서비스에 영향을 미칠 수 있으며 네트워크 운영자의 주의가 필요할 수 있습니다.syslog에 보고된 이러한 메시지는 30초 간격으로 제한되므로 단일 로그 메시지가 단일 패킷만 삭제되었음을 나타내는 것은 아닙니다.이러한 삭제의 정확한 수를 얻으려면 show crypto ipsec sa detail 명령을 실행하고 로그에 표시된 연결 ID 옆에 있는 SA를 확인합니다.SA 카운터 중에서 pkts verify failed error counter accounts for the total packet drop drop drop drop drop drop drop은 MAC(메시지 인증 코드) 확인 실패로 인해 발생합니다.
interface: GigabitEthernet0/1
Crypto map tag: MPLSWanGREVPN, local addr 172.16.204.18
protected vrf: (none)
local ident (addr/mask/prot/port): (172.16.204.18/255.255.255.255/47/0)
remote ident (addr/mask/prot/port): (172.16.205.18/255.255.255.255/47/0)
current_peer 172.16.205.18 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 51810, #pkts encrypt: 51810, #pkts digest: 51810
#pkts decaps: 44468, #pkts decrypt: 44468, #pkts verify: 44468
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#pkts no sa (send) 0, #pkts invalid sa (rcv) 0
#pkts encaps failed (send) 0, #pkts decaps failed (rcv) 0
#pkts invalid prot (recv) 0, #pkts verify failed: 8
#pkts invalid identity (recv) 0, #pkts invalid len (rcv) 0
#pkts replay rollover (send): 0, #pkts replay rollover (rcv) 0
#pkts replay failed (rcv): 0
#pkts internal err (send): 0, #pkts internal err (recv) 0
local crypto endpt.: 172.16.204.18, remote crypto endpt.: 172.16.205.18
path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet0/1
current outbound spi: 0xD660992C(3596654892)
inbound esp sas:
spi: 0x999CD43B(2577191995)
transform: esp-3des esp-sha-hmac ,
in use settings ={Transport, }
conn id: 2989, flow_id: AIM-VPN/SSL-3:2989, sibling_flags 80000006,
crypto map: MPLSWanGREVPN
sa timing: remaining key lifetime (k/sec): (4257518/24564)
IV size: 8 bytes
replay detection support: N
Status: ACTIVE
outbound esp sas:
spi: 0xD660992C(3596654892)
transform: esp-3des esp-sha-hmac ,
in use settings ={Transport, }
conn id: 2990, flow_id: AIM-VPN/SSL-3:2990, sibling_flags 80000006,
crypto map: MPLSWanGREVPN
sa timing: remaining key lifetime (k/sec): (4199729/24564)
IV size: 8 bytes
replay detection support: N
Status: ACTIVE
이 문서에 대한 특정 요건이 없습니다.
이 문서의 정보는 Cisco IOS® Release 15.1(4)M4에서 수행한 테스트를 기반으로 합니다. 아직 테스트되지 않았지만, 스크립트와 구성은 이전 Cisco IOS 소프트웨어 버전에서도 작동해야 합니다. 두 애플릿이 모두 EEM 버전 3.0(IOS 버전 12.4(22)T 이상에서 지원됨)을 사용하기 때문입니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
"%CRYPTO-4-RECVD_PKT_MAC_ERR:decrypt:"는 MAC 확인에 실패한 암호화된 패킷을 수신했음을 의미합니다.이 확인은 구성된 인증 변형 집합의 결과입니다.
Router (config)# crypto ipsec transform transform-1 esp-aes 256 esp-md5-hmac
위의 예에서 "esp-aes 256"은 암호화 알고리즘을 256비트 AES로 정의하고 "esp-md5"는 MD5(HMAC 변형)를 인증에 사용되는 해시 알고리즘으로 정의합니다.MD5와 같은 해시 알고리즘은 일반적으로 파일 내용의 디지털 핑거프린트를 제공하는 데 사용됩니다.디지털 핑거프린트는 침입자나 바이러스에 의해 파일이 변경되지 않도록 하는 데 자주 사용됩니다.따라서 이 오류 메시지가 나타나면 일반적으로 다음 중 하나를 의미합니다.
이 오류 메시지는 일반적으로 패킷 손상으로 인해 발생하므로 근본 원인 분석을 수행하는 유일한 방법은 EPC를 사용하여 양쪽 터널 엔드포인트의 WAN 측에서 완전한 패킷 캡처를 얻고 이를 비교하는 것입니다.캡처를 얻기 전에 이러한 로그를 트리거하는 트래픽 종류를 확인하는 것이 좋습니다.경우에 따라 특정 종류의 트래픽일 수 있습니다.다른 경우에는 무작위적이지만 쉽게 복제할 수 있습니다(예: 100ppings마다 5-7회 삭제). 이러한 상황에서 문제를 식별하기가 다소 쉬워집니다.트리거를 식별하는 가장 좋은 방법은 테스트 트래픽을 DSCP 표시로 표시하고 패킷을 캡처하는 것입니다.DSCP 값은 ESP 헤더에 복사되고 Wireshark를 사용하여 필터링할 수 있습니다.테스트를 100개의 ping으로 간주하는 이 컨피그레이션은 ICMP 패킷을 표시하는 데 사용할 수 있습니다.
ip access-list extended VPN_TRAFFIC
permit icmp <source> <destination>
class-map match-all MARK
match access-group name VPN_TRAFFIC
policy-map MARKING
class MARK
set dscp af21
이제 이 정책을 암호화 라우터에서 일반 트래픽을 수신하는 인그레스 인터페이스에 적용해야 합니다.
interface GigabitEthernet0/0
service-policy MARKING in
또는 라우터에서 생성된 트래픽으로 이 테스트를 실행할 수도 있습니다.이를 위해 QoS(Quality of Service)를 사용하여 패킷을 표시할 수는 없지만 PBR(Policy-Based Routing)을 사용할 수 있습니다.
ip access-list extended VPN_TRAFFIC
permit icmp <source> <destination>
route-map markicmp permit 10
match ip address vpn
set ip precedence critical
ip local policy route-map markicmp
ICMP 트래픽에 대해 QoS 마킹이 구성되면 포함된 패킷 캡처를 구성할 수 있습니다.
Router(config)# ip access-list ext vpn_capo
Router(config)# permit ip host
Router(config)# permit ip host
Router(config)# exit //the capture is only configured in enable mode.
Router# monitor capture buffer vpncap size 256 max-size 100 circular
Router# monitor capture buffer vpncap filter access-list vpn_capo
Router# monitor capture point ip cef capo fastEthernet 0/1 both
Router# monitor capture point associate capo vpncap
Router# monitor capture point start capo //starts the capture.
To stop replace the "start" keyword with "stop"
참고:이 기능은 Cisco IOS Release 12.4(20)T에서 도입되었습니다.EPC에 대한 자세한 내용은 임베디드 패킷 캡처를 참조하십시오.
이 유형의 문제를 해결하기 위해 패킷 캡처를 사용하려면 전체 패킷을 캡처해야 하며 일부만 캡처해야 합니다.15.0(1)M 이전 Cisco IOS 릴리스의 EPC 기능은 버퍼 제한 512K와 최대 패킷 크기 제한 1024바이트를 가집니다.이러한 제한을 방지하려면 15.0(1)M 이상의 코드로 업그레이드하십시오. 이 코드는 최대 패킷 크기가 9500바이트인 100M인 캡처 버퍼 크기를 지원합니다.
100개의 카운트 ping을 실행할 때마다 이 문제를 안정적으로 재현할 수 있는 경우, 최악의 시나리오는 Ping 트래픽만 제어된 테스트로 허용하고 캡처를 수행하도록 유지 관리 기간을 예약하는 것입니다.이 프로세스는 단 몇 분 정도 걸릴 수 있지만 그 시간 동안 운영 트래픽이 중단됩니다.QoS 마킹을 사용하는 경우 패킷만 ping으로 제한하는 요건을 제거할 수 있습니다.하나의 버퍼에서 모든 ping 패킷을 캡처하려면 피크 시간 동안 테스트가 수행되지 않는지 확인해야 합니다.
문제가 쉽게 재현되지 않을 경우 EEM 스크립트를 사용하여 패킷 캡처를 자동화할 수 있습니다.따라서 양쪽의 캡처를 순환 버퍼로 시작하고 EEM을 사용하여 한 쪽의 캡처를 중지할 수 있습니다.동시에 EEM은 캡처를 중지하고 SNMP 트랩을 피어로 전송하도록 하여 캡처를 중지합니다.이 프로세스가 작동할 수 있습니다.그러나 로드가 많으면 두 번째 라우터가 캡처를 중지할 만큼 빠르게 반응하지 못할 수 있습니다.제어된 테스트가 선호됩니다.프로세스를 구현할 EEM 스크립트는 다음과 같습니다.
Receiver
========
event manager applet detect_bad_packet
event syslog pattern "RECVD_PKT_MAC_ERR"
action 1.0 cli command "enable"
action 2.0 cli command "monitor capture point stop test"
action 3.0 syslog msg "Packet corruption detected and capture stopped!"
action 4.0 snmp-trap intdata1 123456 strdata ""
Sender
======
event manager applet detect_bad_packet
event snmp-notification oid 1.3.6.1.4.1.9.10.91.1.2.3.1.9.
oid-val "123456" op eq src-ip-address 20.1.1.1
action 1.0 cli command "enable"
action 2.0 cli command "monitor capture point stop test"
action 3.0 syslog msg "Packet corruption detected and capture stopped!"
이전 상자의 코드는 15.0(1)M에서 테스트한 컨피그레이션입니다.고객 환경에서 구현하기 전에 고객이 사용하는 특정 Cisco IOS 버전으로 테스트할 수 있습니다.
ip.dsfield.dscp==0x08
"0x08"은 DSCP 값 AF21에 대해 고유합니다. 다른 DSCP 값을 사용하는 경우 패킷 캡처 자체 또는 DSCP 값 변환 차트 목록에서 올바른 값을 가져올 수 있습니다.자세한 내용은 DSCP 및 우선 순위 값을 참조하십시오.
*Mar 1 00:01:38.923: After encryption:
05F032D0: 45000088 00000000 E.......
05F032E0: FF3266F7 0A01201A 0A012031 7814619F .2fw.. ... 1x.a.
05F032F0: 00000001 DE9B4CEF ECD9178C 3E7A7F24 ....^.LolY..>z.$
05F03300: 83DCF16E 7FD64265 79F624FB 74D5AEF2 .\qn.VBeyv${tU.r
05F03310: 5EC0AC16 B1F9F3AB 89524205 A20C4E58 ^@,.1ys+.RB.".NX
05F03320: 09CE001B 70CC56AB 746D6A3A 63C2652B .N..pLV+tmj:cBe+
05F03330: 1992E8AF 2CE2A279 46367BDB 660854ED ..h/,b"yF6{[f.Tm
05F03340: 77B69453 83E47778 1470021F 09436285 w6.S.dwx.p...Cb.
05F03350: CB94AEF5 20A65B1F 480D86F6 125BA12E K..u &[.H..v.[!.
4F402C90: 45000088 00000000 E.......
4F402CA0: FF3266F7 0A01201A 0A012031 7814619F .2fw.. ... 1x.a.
4F402CB0: 00000001 DE9B4CEF ECD9178C 3E7A7F24 ....^.LolY..>z.$
4F402CC0: 83DCF16E 7FD64265 79F624FB 74D5AEF2 .\qn.VBeyv${tU.r
4F402CD0: 5EC0AC16 B1F9F3AB 89524205 A20C4E58 ^@,.1ys+.RB.".NX
4F402CE0: 09CE001B 70CC56AB 00000000 00000000 .N..pLV+........
4F402CF0: 00000000 00000000 00000000 00000000 ................
4F402D00: 00000000 00000000 00000000 00000000 ................
4F402D10: 00000000 00000000 00000000 00000000 ................