Отандық IPsec VPN ақауларын қалай жоюға болады. 1 бөлім

Отандық IPsec VPN ақауларын қалай жоюға болады. 1 бөлім

Жағдай

Демалыс күні. Кофе ішіп отырмын. Студент екі нүкте арасында VPN байланысын орнатып, жоғалып кетті. Мен тексеремін: шынымен туннель бар, бірақ туннельде қозғалыс жоқ. Студент қоңырауларға жауап бермейді.

Мен шәйнекті қойып, S-Terra Gateway ақауларын жоюға кірістім. Мен өз тәжірибеммен және әдістемемен бөлісемін.

Бастапқы деректер

Географиялық тұрғыдан бөлінген екі учаске GRE туннелі арқылы біріктірілген. GRE шифрлануы керек:

Отандық IPsec VPN ақауларын қалай жоюға болады. 1 бөлім

Мен GRE туннелінің функционалдығын тексеріп жатырмын. Ол үшін мен R1 құрылғысынан R2 құрылғысының GRE интерфейсіне пингті іске қосамын. Бұл шифрлауға арналған мақсатты трафик. Жауап жоқ:

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 туннелінің статистикасында мен шынымен туннель бар екенін көремін, бірақ Rсvd есептегіші нөлге дейін қалпына келтірілді:

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

Мен S-Terra-ны осылай қинадым: мен R1-ден R2-ге дейінгі жолда мақсатты пакеттердің қайда жоғалғанын іздеймін. Процессте (спойлер) мен қате табамын.

Ақаулық себебін іздеу және түзету

1-қадам. Gate1 R1-ден не алады

Мен кірістірілген пакеттік снайферді қолданамын - tcpdump. Мен ішкі интерфейсте снайферді іске қосамын (Cisco-ға ұқсас белгілерде Gi0/1 немесе Debian ОЖ нотациясында 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 утилитасын пайдаланып, S-Terra VPN драйверіндегі 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 шифрлау ережесіне сәйкес келгенін және инкапсуляцияланғанын көремін. Содан кейін пакет бағытталды (өшіп қалды). Klogview шығысында жауап трафигі жоқ.

Мен Gate1 құрылғысындағы кіру тізімдерін тексеріп жатырмын. Мен шифрлауға арналған мақсатты трафикті анықтайтын бір кіру тізімі LIST көремін, бұл брандмауэр ережелері конфигурацияланбағанын білдіреді:

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-тен не алады

Мен WAN (eth0) 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 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

Мен ESP пакеттерінің (прото 50) брандмауэр ережесі (L3VPN) арқылы жойылғанын (DROP) көріп тұрмын. Мен Gi0/0-де оған тіркелген L3VPN кіру тізімі бар екеніне көз жеткіземін:

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 шығысында CMAP криптографиялық картасындағы LIST ережесі бойынша 172.16.0.1->172.17.0.1 мақсатты трафик сәтті шифрланғаны (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/anonymous_engineer


Ақпарат көзі: www.habr.com

пікір қалдыру