
Situatsioon
Väljas. Joon kohvi. Üliõpilane seadistas VPN-i ühenduse kahe punkti vahel ja kadus. Kontrollin: tunnel on tõepoolest olemas, kuid tunnelis pole liiklust. Üliõpilane ei vasta kõnedele.
Panen tee keema ja sukeldun C-Terra Gateway'i tõrkeotsingusse. Jagades oma kogemusi ja meetodoloogiat.
Algandmed
Kaks territoriaalselt eraldatud asukohta on ühendatud GRE tunneliga. GRE tuleb krüpteerida:

Kontrollin GRE tunnelit. Selleks jooksutan ping'i seadmel R1 GRE liidese suunas seadmel R2. See on sihttõuge krüpteerimiseks. Vastust pole:
root@R1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) baitide andmeid.
--- 1.1.1.2 ping statistika ---
4 paketti edastatud, 0 saadud, 100% pakettide kadu, aeg 3057msVaatan logisid Gate1-l ja Gate2-l. Logi rõõmsalt teatab, et IPsec tunnel on edukalt üles seatud, mingeid probleeme pole:
root@Gate1:~# cat /var/log/cspvpngate.log
Aug 5 16:14:23 localhost vpnsvc: 00100119 IPSec ühendus 5 loodud, liiklusvalik 172.17.0.1->172.16.0.1, proto 47, võõras 10.10.10.251, id "10.10.10.251", Filter
IPsec:Protect:CMAP:1:LIST, IPsecAction IPsecAction:CMAP:1, IKERule IKERule:CMAP:1IPsec tunnelite statistikas Gate1-l näen, et tunnel on tõepoolest olemas, kuid Rсvd loendur on nullitud:
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 0Tean troubleshootin C-Terrat, otsin, kus kaob sihitud pakette R1-lt R2-le. Protsessi käigus (spoiler) leian vea.
Tõrkeotsing
Samm 1. Mida Gate1 R1-lt saab
Kasutades sisseehitatud paketi nuhikut – tcpdump. Käivitan nuhiku sise (Gi0/1 Cisco-sarnases tähistuses või eth1 Debian OS-i tähistuses) liidese peal:
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 64Näen, et Gate1 saab GRE pakette R1-lt. Liigun edasi.
Samm 2. Mida Gate1 GRE pakettidega teeb
Kasutan utiliiti klogview, et vaadata, mis GRE pakettidega juhtub seestpoolt VPN C-Terra draiver:
root@Gate1:~# klogview -f 0xffffffff
filtratsioonitulemus välispakett 172.16.0.1->172.17.0.1, protokoll 47, pikkus 112, liides eth0: ahel 4 "IPsecPolicy:CMAP", filter 8, sündmuse ID IPsec:Protect:CMAP:1:LIST, olek PASS
kapseldamine SA-ga 31: 172.16.0.1->172.17.0.1, protokoll 47, pikkus 112, liides eth0
läbiviidud välispakett 10.10.10.251->10.10.10.252, protokoll 50, pikkus 160, liides eth0: kapseldatud
Näen, et sihtkoht GRE liiklus (protokoll 47) 172.16.0.1 -> 172.17.0.1 läbis (PASS) krüpteerimise reeglit LIST krüptokaardil CMAP ja kapseldus (encapsulated). Seejärel paketid marsruuditi (passed out). Vastusliiklust klogview väljundis pole.
Kontrollin juurdepääsuloendeid seadmel Gate1. Näen ühte juurdepääsulitsentsi LIST, mis määratleb sihtliikluse krüpteerimiseks, seega ei ole MЭ reegleid seatud:
Gate1#show access-lists
Pikendatud IP juurdepääsulitsent LIST
10 luba gre host 172.16.0.1 host 172.17.0.1Väljund: probleem ei ole seadmel Gate1.
Kogemuste kohta klogview's
VPN draiver käsitleb kogu võrgu liiklust, mitte ainult seda, mis peab olema krüpteeritud. Sellised teadete nägemine klogview's, kui VPN draiver on töötanud võrgu liikluse ja edastanud selle krüpteerimata kujul:
root@R1:~# ping 172.17.0.1 -c 4root@Gate1:~# klogview -f 0xffffffff
filtratsioonitulemus välispakett 172.16.0.1->172.17.0.1, protokoll 1, pikkus 84, liides eth0: ahel 4 "IPsecPolicy:CMAP": ilma vaste
läbiviidud välispakett 172.16.0.1->172.17.0.1, protokoll 1, pikkus 84, liides eth0: filtreeritudNäen, et ICMP liiklus (proto 1) 172.16.0.1->172.17.0.1 ei vastanud (no match) CMAP krüptokaardi krüpteerimisreeglitele. Pakett reititi (passed out) selges vormis.
Samm 3. Mida saab Gate2 Gate1-lt
Käivitab sniffimise WAN (eth0) liidese jaoks Gate2:
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 140Näen, et Gate2 saab ESP pakette Gate1-lt.
Samm 4. Mida teeb Gate2 ESP pakettidega
Käivitab klogview utiliidi Gate2:
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
Näen, et ESP paketid (proto 50) on (DROP) reegli (L3VPN) tulemuseks visatud (DROP) tulemüüri (firewall) poolt. Veendun, et Gi0/0-le on tõepoolest seotud L3VPN juurdepääsulisti:
Gate2#show ip interface gi0/0
GigabitEthernet0/0 on üles, liiniprotokoll on üles
Interneti-aadress on 10.10.10.252/24
MTU on 1500 bitti
Väljaminev juurdepääsulisti pole seatud
Sissevõtte juurdepääsulisti on L3VPNProbleem tuvastatud.
Samm 5. Mis on mitte nii juurdepääsulistiga
Vaata, milline on L3VPN juurdepääsulisti:
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 anyNäen, et ISAKMP paketid on lubatud, seega luuakse IPsec tunnel. Kuid ESP jaoks ei ole lubavat reeglit. Ilmselt segas õpilane icmp ja esp.
Korrigeerin juurdepääsulisti:
Gate2(config)#
ip access-list extended L3VPN
no 30
30 permit esp host 10.10.10.251 anySamm 6. Kontrollin funktsionaalsust
Esimese asjana veendun, et L3VPN juurdepääsulisti on õige:
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 anyNüüd käivitan R1 seadmest sihttrafiku:
root@R1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) baiti andmeid.
64 baiti aadressilt 1.1.1.2: icmp_seq=1 ttl=64 aeg=35.3 ms
64 baiti aadressilt 1.1.1.2: icmp_seq=2 ttl=64 aeg=3.01 ms
64 baiti aadressilt 1.1.1.2: icmp_seq=3 ttl=64 aeg=2.65 ms
64 baiti aadressilt 1.1.1.2: icmp_seq=4 ttl=64 aeg=2.87 ms
--- 1.1.1.2 ping statistika ---
4 paketti saadeti, 4 saadeti tagasi, 0% pakettide kaotus, aeg 3006ms
rtt min/avg/max/mdev = 2.650/10.970/35.338/14.069 msVõit. GRE tunnel on loodud. Sissetuleva liikluse loendur IPsec statistikas ei ole null:
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) aktiivne 1474 1350
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protokoll Tegevus Tüüp Sent Rcvd
1 4 (172.16.0.1,*)-(172.17.0.1,*) 47 ESP tunnel 1920 480Gate2 lülituses on klogview väljundis teated, et sihttakistus 172.16.0.1->172.17.0.1 on edukalt (PASS) dekrüpteeritud (decapsulated) reegliga LIST krüptokaardil CMAP:
root@Gate2:~# klogview -f 0xffffffff
filtreerimise tulemus sissepaketile 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: ahel 18 "IPsecPolicy:CMAP", filter 25, sündmuse ID IPsec:Protect:CMAP:1:LIST, staatus PASS
läbitud sissepaket 172.16.0.1->172.17.0.1, proto 47, len 112, if eth0: dekrüpteeritudKokkuvõte
Üliõpilane rikkus väljundi.
Olge MЭ reeglitega ettevaatlik.
Anonüümne insener
t.me/anonimous_engineer
Allikas: habr.com
