Kodumaise IPsec VPN-i tõrkeotsing. 1. osa

Kodumaise IPsec VPN-i tõrkeotsing. 1. osa

Olukord

Vaba päev. Ma joon kohvi. Õpilane lõi kahe punkti vahel VPN-ühenduse ja kadus. Kontrollin: tunnel tõesti on, aga tunnelis pole liiklust. Õpilane ei vasta kõnedele.

Panen veekeetja peale ja sukeldun S-Terra Gateway tõrkeotsingusse. Jagan oma kogemusi ja metoodikat.

Toorandmed

Kaks geograafiliselt eraldatud ala on ühendatud GRE tunneliga. GRE tuleb krüpteerida:

Kodumaise IPsec VPN-i tõrkeotsing. 1. osa

Ma kontrollin GRE tunneli funktsionaalsust. Selleks käivitan pingi seadmest R1 seadme R2 GRE liidesesse. See on krüptimise sihtliiklus. Pole vastust:

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

Vaatan Gate1 ja Gate2 logisid. Logi teatab rõõmsalt, et IPseci tunnel käivitati edukalt, probleeme pole:

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 IPseci tunneli statistikas näen, et tunnel on tõesti olemas, kuid Rсvd loendur nullitakse:

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

Ma häirin S-Terrat järgmiselt: otsin, kus sihtpaketid teel R1-st R2-ni on kadunud. Protsessi käigus (spoiler) leian vea.

Veaotsing

Samm 1. Mida Gate1 saab R1-lt

Ma kasutan sisseehitatud pakettide nuusutajat - tcpdump. Käivitan nuusutaja sisemisel liidesel (Gi0/1 Cisco-sarnases tähistuses või eth1 Debian OS-i tähistuses):

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

Ma näen, et Gate1 saab R1-lt GRE pakette. Ma liigun edasi.

Samm 2. Mida Gate1 teeb GRE pakettidega?

Klogview utiliidi abil näen, mis toimub S-Terra VPN-draiveri GRE-pakettidega:

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

Näen, et sihtmärgiks olev GRE-liiklus (proto 47) 172.16.0.1 -> 172.17.0.1 kuulus CMAP-krüptokaardil krüpteerimisreegli LIST alla ja kapseldati. Järgmisena suunati pakett ära (minestati). Klogview väljundis pole vastuste liiklust.

Kontrollin Gate1 seadme juurdepääsuloendeid. Näen ühte juurdepääsuloendit LIST, mis määrab krüptimise sihtliikluse, mis tähendab, et tulemüürireeglid pole konfigureeritud:

Gate1#show access-lists
Extended IP access list LIST
    10 permit gre host 172.16.0.1 host 172.17.0.1

Järeldus: probleem ei ole Gate1 seadmes.

Lisateavet klogview kohta

VPN-draiver haldab kogu võrguliiklust, mitte ainult krüpteerimist vajavat liiklust. Kui VPN-draiver töötles võrguliiklust ja edastas selle krüptimata, kuvatakse järgmised teated:

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

Näen, et ICMP-liiklus (proto 1) 172.16.0.1->172.17.0.1 ei olnud CMAP-krüptokaardi krüpteerimisreeglites kaasas (ei ühti). Pakett suunati (jaotati välja) selge tekstiga.

Samm 3. Mida Gate2 saab Gate1-lt

Käivitan nuusutaja WAN (eth0) Gate2 liidesel:

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

Ma näen, et Gate2 saab Gate1-lt ESP pakette.

Samm 4. Mida Gate2 teeb ESP pakettidega?

Käivitan Gate2-s klogview utiliidi:

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 tulemüüri reegel (L50VPN) tühistas ESP-paketid (proto 3) (DROP). Veendun, et Gi0/0-l on tegelikult lisatud L3VPN-i juurdepääsuloend:

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

Avastasin probleemi.

5. samm. Mis on juurdepääsuloendil viga?

Vaatan, mis on L3VPN-i juurdepääsuloend:

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

Näen, et ISAKMP paketid on lubatud, seega luuakse IPsec tunnel. Kuid ESP jaoks pole lubamisreeglit. Ilmselt ajas õpilane segamini icmp ja esp.

Juurdepääsuloendi redigeerimine:

Gate2(config)#
ip access-list extended L3VPN
no 30
30 permit esp host 10.10.10.251 any

Samm 6. Funktsionaalsuse kontrollimine

Kõigepealt veendun, et L3VPN-i juurdepääsuloend 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 any

Nüüd käivitan sihtliikluse seadmest 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

Võit. GRE tunnel on rajatud. Sissetuleva liikluse loendur IPseci 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) 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 lüüsis ilmusid klogview väljundis teated, et sihtliiklus 172.16.0.1->172.17.0.1 dekrüpteeriti edukalt (PASS) CMAP-i krüptokaardi reegliga LIST:

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

Tulemused

Üliõpilane rikkus oma vaba päeva.
Olge ME reeglitega ettevaatlik.

Anonüümne insener
t.me/anonymous_engineer


Allikas: www.habr.com

Lisa kommentaar