状況
出力。コーヒーを飲む。学生は2点間にVPN接続を設定し、姿を消しました。確認します。トンネルは実際に存在しますが、トンネル内にトラフィックはありません。学生は電話に出ません。
ケトルを装着して、C-TerraGatewayのトラブルシューティングに突入しました。私は私の経験と方法論を共有します。
初期データ
地理的に離れた2つのサイトは、GREトンネルで接続されています。GREを暗号化する必要があります:
GREトンネルが機能しているかどうかを確認します。これを行うには、R1デバイスからR2デバイスのGREインターフェイスにpingを実行します。これは、暗号化の対象となるトラフィックです。答えなし:
root@R1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
--- 1.1.1.2 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3057ms
Gate1とGate2のログを確認します。ログは、IPsecトンネルが正常に立ち上がったことを喜んで報告します。問題はありません。
root@Gate1:~# cat /var/log/cspvpngate.log
Aug 5 16:14:23 localhost vpnsvc: 00100119 <4:1> IPSec connection 5 established, traffic selector 172.17.0.1->172.16.0.1, proto 47, peer 10.10.10.251, id "10.10.10.251", Filter
IPsec:Protect:CMAP:1:LIST, IPsecAction IPsecAction:CMAP:1, IKERule IKERule:CMAP:1
Gate1のIPsecトンネルの統計では、トンネルが実際に存在していることがわかりますが、Rcvdカウンターはゼロになっています。
root@Gate1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 3 (10.10.10.251,500)-(10.10.10.252,500) active 1070 1014
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 3 (172.16.0.1,*)-(172.17.0.1,*) 47 ESP tunn 480 0
C-Terraのトラブルシューティングは次のようになります。R1からR2への途中でターゲットパケットが失われる場所を探しています。その過程(ネタバレ)でエラーが見つかります。
トラブルシューティング
手順1.Gate1がR1から取得
するもの組み込みのパケットスニファーであるtcpdumpを使用します。内部(Ciscoのような表記のGi0 / 1またはDebianOS表記のeth1)インターフェイスでスニファーを実行します。
root@Gate1:~# tcpdump -i eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
14:53:38.879525 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 1, length 64
14:53:39.896869 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 2, length 64
14:53:40.921121 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 3, length 64
14:53:41.944958 IP 172.16.0.1 > 172.17.0.1: GREv0, key=0x1, length 92: IP 1.1.1.1 > 1.1.1.2: ICMP echo request, id 2083, seq 4, length 64
Gate1がR1からGREパケットを受信していることがわかります。先に進みます。
ステップ2.Gate1がGREパケットで
行うことklogviewユーティリティを使用して、C-TerraVPNドライバー内のGREパケットで何が起こるかを確認できます。
root@Gate1:~# klogview -f 0xffffffff
filtration result for out packet 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: chain 4 "IPsecPolicy:CMAP", filter 8, event id IPsec:Protect:CMAP:1:LIST, status PASS
encapsulating with SA 31: 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0
passed out packet 10.10.10.251->10.10.10.252, proto 50, len 160, if eth0: encapsulated
ターゲットGREトラフィック(プロト47)172.16.0.1-> 172.17.0.1がCMAP暗号マップのLIST暗号化ルールに該当し(PASS)、暗号化(カプセル化)されていることがわかります。その後、パケットはルーティングされました(渡されました)。klogview出力に応答トラフィックはありません。
Gate1デバイスのアクセスリストを確認します。暗号化のターゲットトラフィックを決定する1つのアクセスリストLISTが表示されます。これは、MEルールが構成されていないことを意味します。
Gate1#show access-lists
Extended IP access list LIST
10 permit gre host 172.16.0.1 host 172.17.0.1
結論:問題はGate1デバイスにはありません。
klogview
VPNドライバーの詳細は、暗号化が必要なトラフィックだけでなく、すべてのネットワークトラフィックを処理します。VPNドライバーがネットワークトラフィックを処理し、暗号化せずに送信した場合、これらのメッセージはklogviewに表示されます。
root@R1:~# ping 172.17.0.1 -c 4
root@Gate1:~# klogview -f 0xffffffff
filtration result for out packet 172.16.0.1->172.17.0.1, proto 1, len 84, if eth0: chain 4 "IPsecPolicy:CMAP": no match
passed out packet 172.16.0.1->172.17.0.1, proto 1, len 84, if eth0: filtered
ICMPトラフィック(プロト1)172.16.0.1-> 172.17.0.1がCMAP暗号マップの暗号化ルールで取得されなかった(一致しなかった)ことがわかります。パケットはクリアテキストでルーティング(パスアウト)されました。
手順3.Gate2がGate1から受信するものGate2
のWAN(eth0)インターフェイスでスニファーを実行します。
root@Gate2:~# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:05:45.104195 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x1), length 140
16:05:46.093918 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x2), length 140
16:05:47.117078 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x3), length 140
16:05:48.141785 IP 10.10.10.251 > 10.10.10.252: ESP(spi=0x30088112,seq=0x4), length 140
Gate2がGate1からESPパケットを受信していることがわかります。
ステップ4.Gate2がESPパッケージで
行うことGate2でklogviewユーティリティを起動します。
root@Gate2:~# klogview -f 0xffffffff
filtration result for in packet 10.10.10.251->10.10.10.252, proto 50, len 160, if eth0: chain 17 "FilterChain:L3VPN", filter 21, status DROP
dropped in packet 10.10.10.251->10.10.10.252, proto 50, len 160, if eth0: firewall
ファイアウォールのルール(L3VPN)によってESPパケット(プロト50)がドロップ(DROP)されたことがわかります。L3VPNアクセスリストが実際にGi0 / 0に添付されていることを確認します。
Gate2#show ip interface gi0/0
GigabitEthernet0/0 is up, line protocol is up
Internet address is 10.10.10.252/24
MTU is 1500 bytes
Outgoing access list is not set
Inbound access list is L3VPN
私は問題を見つけました。
手順5.アクセス
リストの問題点L3VPNアクセスリストがどのようなものかを確認します。
Gate2#show access-list L3VPN
Extended IP access list L3VPN
10 permit udp host 10.10.10.251 any eq isakmp
20 permit udp host 10.10.10.251 any eq non500-isakmp
30 permit icmp host 10.10.10.251 any
ISAKMPパケットが許可されているので、IPsecトンネルが確立されていることがわかります。ただし、ESPには許容ルールはありません。どうやら、学生はicmpとespを混乱させました。
アクセスリストを修正します。
Gate2(config)#
ip access-list extended L3VPN
no 30
30 permit esp host 10.10.10.251 any
手順6.機能の確認
まず、L3VPNアクセスリストが正しいことを確認します。
Gate2#show access-list L3VPN
Extended IP access list L3VPN
10 permit udp host 10.10.10.251 any eq isakmp
20 permit udp host 10.10.10.251 any eq non500-isakmp
30 permit esp host 10.10.10.251 any
次に、R1デバイスからターゲットトラフィックを起動します。
root@R1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
64 bytes from 1.1.1.2: icmp_seq=1 ttl=64 time=35.3 ms
64 bytes from 1.1.1.2: icmp_seq=2 ttl=64 time=3.01 ms
64 bytes from 1.1.1.2: icmp_seq=3 ttl=64 time=2.65 ms
64 bytes from 1.1.1.2: icmp_seq=4 ttl=64 time=2.87 ms
--- 1.1.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 2.650/10.970/35.338/14.069 ms
勝利。GREトンネルが確立されました。IPsec統計の着信トラフィックカウンターがゼロではありません。
root@Gate1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 3 (10.10.10.251,500)-(10.10.10.252,500) active 1474 1350
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 4 (172.16.0.1,*)-(172.17.0.1,*) 47 ESP tunn 1920 480
Gate2では、klogviewの出力で、ターゲットトラフィック172.16.0.1-> 172.17.0.1がCMAP暗号マップのLISTルールによって正常に(PASS)復号化(カプセル化解除)されたというメッセージが表示されました。
root@Gate2:~# klogview -f 0xffffffff
filtration result for in packet 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: chain 18 "IPsecPolicy:CMAP", filter 25, event id IPsec:Protect:CMAP:1:LIST, status PASS
passed in packet 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: decapsulated
結果
学生は休日を台無しにしました。
MEのルールに注意してください。
匿名エンジニア
t.me/anonimous_engineer