Problemen met binnenlandse IPsec VPN oplossen. Deel 1

Problemen met binnenlandse IPsec VPN oplossen. Deel 1

De situatie

Vrije dag. Ik drink koffie. De student zette een VPN-verbinding op tussen twee punten en verdween. Ik controleer: er is echt een tunnel, maar er is geen verkeer in de tunnel. De leerling beantwoordt geen oproepen.

Ik zet de ketel op en duik in de probleemoplossing van de S-Terra Gateway. Ik deel mijn ervaring en methodiek.

Initiële gegevens

De twee geografisch gescheiden locaties zijn verbonden door een GRE-tunnel. GRE moet worden gecodeerd:

Problemen met binnenlandse IPsec VPN oplossen. Deel 1

Ik controleer de functionaliteit van de GRE-tunnel. Om dit te doen, voer ik ping uit van apparaat R1 naar de GRE-interface van apparaat R2. Dit is het doelverkeer voor versleuteling. Geen antwoord:

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

Ik kijk naar de logboeken op Gate1 en Gate2. Het log meldt vrolijk dat de IPsec-tunnel met succes is gelanceerd, zonder problemen:

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

In de statistieken van de IPsec-tunnel op Gate1 zie ik dat er echt een tunnel is, maar de Rсvd-teller wordt op nul gezet:

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

Ik maak S-Terra op de volgende manier lastig: ik zoek waar de doelpakketten verloren gaan op het pad van R1 naar R2. In het proces (spoiler) zal ik een fout ontdekken.

Probleemoplossen

Stap 1. Wat Gate1 ontvangt van R1

Ik gebruik de ingebouwde pakketsniffer - tcpdump. Ik start de sniffer op de interne (Gi0/1 in Cisco-achtige notatie of eth1 in Debian OS-notatie) interface:

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

Ik zie dat Gate1 GRE-pakketten ontvangt van R1. Ik ga verder.

Stap 2. Wat Gate1 doet met GRE-pakketten

Met behulp van het klogview-hulpprogramma kan ik zien wat er gebeurt met GRE-pakketten in het S-Terra VPN-stuurprogramma:

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

Ik zie dat het doel-GRE-verkeer (proto 47) 172.16.0.1 -> 172.17.0.1 onder de LIST-coderingsregel in de CMAP-cryptokaart viel en ingekapseld was. Vervolgens werd het pakket gerouteerd (uitgegeven). Er is geen antwoordverkeer in de klogview-uitvoer.

Ik controleer de toegangslijsten op het Gate1-apparaat. Ik zie één toegangslijst LIST, die het doelverkeer voor codering definieert, wat betekent dat de firewallregels niet zijn geconfigureerd:

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

Conclusie: het probleem ligt niet bij het Gate1-apparaat.

Meer over klogview

Het VPN-stuurprogramma verwerkt al het netwerkverkeer, niet alleen het verkeer dat gecodeerd moet worden. Dit zijn de berichten die zichtbaar zijn in klogview als het VPN-stuurprogramma het netwerkverkeer verwerkt en onversleuteld verzendt:

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

Ik zie dat ICMP-verkeer (proto 1) 172.16.0.1->172.17.0.1 niet was opgenomen (geen match) in de encryptieregels van de CMAP-cryptokaart. Het pakket werd in duidelijke tekst doorgestuurd (uitgedeeld).

Stap 3. Wat Gate2 ontvangt van Gate1

Ik start de sniffer op de WAN (eth0) Gate2-interface:

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

Ik zie dat Gate2 ESP-pakketten ontvangt van Gate1.

Stap 4. Wat Gate2 doet met ESP-pakketten

Ik start het klogview-hulpprogramma op 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

Ik zie dat ESP-pakketten (proto 50) zijn verwijderd (DROP) door de firewallregel (L3VPN). Ik zorg ervoor dat aan Gi0/0 daadwerkelijk een L3VPN-toegangslijst is gekoppeld:

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

Ik heb het probleem ontdekt.

Stap 5. Wat is er mis met de toegangslijst

Ik kijk naar wat de L3VPN-toegangslijst is:

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

Ik zie dat ISAKMP-pakketten zijn toegestaan, dus er is een IPsec-tunnel tot stand gebracht. Maar er is geen machtigingsregel voor ESP. Blijkbaar verwarde de student icmp en esp.

De toegangslijst bewerken:

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

Stap 6. Functionaliteit controleren

Allereerst zorg ik ervoor dat de L3VPN-toegangslijst correct is:

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

Nu start ik doelverkeer vanaf apparaat 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

Zege. De GRE-tunnel is aangelegd. De teller voor inkomend verkeer in IPsec-statistieken is niet nul:

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

Op de Gate2-gateway verschenen in de klogview-uitvoer berichten dat het doelverkeer 172.16.0.1->172.17.0.1 met succes was gedecodeerd (PASS) door de LIST-regel in de CMAP-cryptokaart:

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

Resultaten van

Een student verpestte zijn vrije dag.
Wees voorzichtig met de ME-regels.

Anonieme ingenieur
t.me/anonieme_ingenieur


Bron: www.habr.com

Voeg een reactie