このドキュメントでは、ボックスに示すように、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 秒間隔で限定された割合であるため、1 つのログ メッセージが、必ずしも 1 つのパケットのみが廃棄されたことを表すわけではないことに注意してください。これらのドロップの正確なカウントを取得するには、コマンドshow crypto ipsec sa detailを発行し、ログに表示される接続IDの横にあるSAを調べます。SA カウンタでは、pkts verify failed error カウンタが、メッセージ認証コード(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®リリース15.1(4)M4で行われたテストに基づいています。テストは行われていませんが、両方のアプレットが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 側の完全なパケットのキャプチャを取得し、比較することだけです。キャプチャを取得する前に、これらのログをトリガーするトラフィックの種類を特定することを推奨します。場合によっては、特定の種類のトラフィックである可能性があります。また、トラフィックの種類に無関係だが、簡単に再現できる場合もあります(100 回の ping ごとに 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
今度は、このポリシーを、clear traffic が暗号化ルータで受信される入力インターフェイスに適用する必要があります。
interface GigabitEthernet0/0
service-policy MARKING in
また、このテストを、ルータが生成するトラフィックで実行するという方法もあります。この場合は、Quality of Service(QoS)を使用してパケットをマークすることはできませんが、ポリシー ベース ルーティング(PBR)を使用できます。
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
QoS マーキングを ICMP トラフィックに対して設定したら、埋め込みパケット キャプチャを設定できます。
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 リリース 12.4(20)T で導入された機能です。EPC に関する詳細については、「埋め込みパケット キャプチャ」を参照してください。
このタイプの問題のトラブルシューティングのためにパケット キャプチャを使用するには、パケットの一部だけでなく、全体をキャプチャする必要があります。15.0(1)M より前の Cisco IOS リリースの EPC 機能には、512K のバッファ制限と 1024 バイトの最大パケット サイズ制限があります。この制限を回避するには、15.0(1)M 以降のコードにアップグレードしてください。これで、100M のキャプチャ バッファ サイズと、9500 バイトの最大パケット サイズがサポートされます。
問題が 100 回の ping ごとに確実に再生できる場合、最悪のシナリオは、制御されたテストとしてのみ ping トラフィックを許可し、キャプチャを取得するためにメンテナンス時間帯をスケジュールすることです。このプロセスにかかる時間は数分だけですが、その時間の実稼働トラフィックが中断されます。QoS マーキングを使用する場合は、パケットを ping のみに制限するために要件を排除する必要があります。1 つのバッファのすべての ping パケットをキャプチャするには、ピーク時間帯にテストが行われないようにする必要があります。
問題が容易には再現されない場合は、EEM のスクリプトを使用してパケット キャプチャを自動化することができます。この理論は、両側で循環バッファへとキャプチャを開始し、EEM を使用して片側でキャプチャを停止することです。EEM でキャプチャを停止すると同時に、snmp トラップをピアに送信し、ピアでもキャプチャを停止します。このプロセスは機能する可能性があります。ただし、負荷が大きい場合は、2 番目のルータの反応が間に合わず、キャプチャが停止されない場合があります。そのため、制御されたテストを推奨します。プロセスを実行する 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 ................
改定 | 発行日 | コメント |
---|---|---|
1.0 |
24-Oct-2013 |
初版 |