ื›ื™ืฆื“ ืœืคืชื•ืจ ื‘ืขื™ื•ืช IPsec VPN ืžืงื•ืžื™. ื—ืœืง 1

ื›ื™ืฆื“ ืœืคืชื•ืจ ื‘ืขื™ื•ืช IPsec VPN ืžืงื•ืžื™. ื—ืœืง 1

ื”ืžืฆื‘

ื™ื•ื ื—ื•ืคืฉ. ืื ื™ ืฉื•ืชื” ืงืคื”. ื”ืชืœืžื™ื“ ื”ืงื™ื ื—ื™ื‘ื•ืจ VPN ื‘ื™ืŸ ืฉืชื™ ื ืงื•ื“ื•ืช ื•ื ืขืœื. ืื ื™ ื‘ื•ื“ืง: ื‘ืืžืช ื™ืฉ ืžื ื”ืจื”, ืื‘ืœ ืื™ืŸ ืชื ื•ืขื” ื‘ืžื ื”ืจื”. ื”ืชืœืžื™ื“ ืื™ื ื• ืขื•ื ื” ืœืฉื™ื—ื•ืช.

ืื ื™ ืฉื ืืช ื”ืงื•ืžืงื•ื ื•ืฆื•ืœืœ ืœืชื•ืš ืฉืขืจ S-Terra ืคืชืจื•ืŸ ื‘ืขื™ื•ืช. ืื ื™ ื—ื•ืœืง ืืช ื”ื ื™ืกื™ื•ืŸ ื•ื”ืžืชื•ื“ื•ืœื•ื’ื™ื” ืฉืœื™.

ื ืชื•ื ื™ื ื’ื•ืœืžื™ื™ื

ืฉื ื™ ื”ืืชืจื™ื ื”ืžื•ืคืจื“ื™ื ื’ื™ืื•ื’ืจืคื™ืช ืžื—ื•ื‘ืจื™ื ื‘ืžื ื”ืจืช GRE. GRE ืฆืจื™ืš ืœื”ื™ื•ืช ืžื•ืฆืคืŸ:

ื›ื™ืฆื“ ืœืคืชื•ืจ ื‘ืขื™ื•ืช IPsec VPN ืžืงื•ืžื™. ื—ืœืง 1

ืื ื™ ื‘ื•ื“ืง ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ืžื ื”ืจืช GRE. ืœืฉื ื›ืš, ืื ื™ ืžืจื™ืฅ ืคื™ื ื’ ืžืžื›ืฉื™ืจ R1 ืœืžืžืฉืง GRE ืฉืœ ืžื›ืฉื™ืจ R2. ื–ื•ื”ื™ ืชืขื‘ื•ืจืช ื”ื™ืขื“ ืœื”ืฆืคื ื”. ืื™ืŸ ืชืฉื•ื‘ื”:

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

ื‘ืกื˜ื˜ื™ืกื˜ื™ืงื” ืฉืœ ืžื ื”ืจืช IPsec ืขืœ Gate1 ืื ื™ ืจื•ืื” ืฉื‘ืืžืช ื™ืฉ ืžื ื”ืจื”, ืื‘ืœ ืžื•ื ื” ื”-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. ืžื” ืฉืขืจ1 ืžืงื‘ืœ ืž-R1

ืื ื™ ืžืฉืชืžืฉ ื‘-packet sniffer ื”ืžื•ื‘ื ื” - tcpdump. ืื ื™ ืžืฉื™ืง ืืช ื”ืกื ื™ืคืจ ื‘ืžืžืฉืง ื”ืคื ื™ืžื™ (Gi0/1 ื‘ืกื™ืžื•ืŸ ื“ืžื•ื™ ืกื™ืกืงื• ืื• eth1 ื‘ืชื•ื•ื™ืช ืฉืœ Debian OS):

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 ืžืงื‘ืœ ืžื ื•ืช GRE ืž-R1. ืื ื™ ืžืžืฉื™ืš ื”ืœืื”.

ืฉืœื‘ 2. ืžื” Gate1 ืขื•ืฉื” ืขื ืžื ื•ืช GRE

ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช klogview ืื ื™ ื™ื›ื•ืœ ืœืจืื•ืช ืžื” ืงื•ืจื” ืขื ืžื ื•ืช GRE ื‘ืชื•ืš ืžื ื”ืœ ื”ื”ืชืงืŸ ืฉืœ S-Terra VPN:

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 ื ื›ื ืกื” ืชื—ืช ื›ืœืœ ื”ื”ืฆืคื ื” LIST ื‘ืžืคืช ื”ื”ืฆืคื ื” CMAP ื•ื”ื™ื™ืชื” ืžื•ื‘ืœืขืช. ืœืื—ืจ ืžื›ืŸ, ื”ื—ื‘ื™ืœื” ื ื•ืชื‘ื” (ื”ืชืขืœืคื”). ืื™ืŸ ืชืขื‘ื•ืจืช ืชื’ื•ื‘ื” ื‘ืคืœื˜ 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 ืžื˜ืคืœ ื‘ื›ืœ ืชืขื‘ื•ืจืช ื”ืจืฉืช, ืœื ืจืง ื‘ืชืขื‘ื•ืจื” ืฉืฆืจื™ืš ืœื”ืฆืคื™ืŸ. ืืœื” ื”ื”ื•ื“ืขื•ืช ื”ื ืจืื•ืช ื‘-klogview ืื ืžื ื”ืœ ื”-VPN ืขื™ื‘ื“ ืืช ืชืขื‘ื•ืจืช ื”ืจืฉืช ื•ื”ืขื‘ื™ืจ ืื•ืชื” ืœืœื ืžื•ืฆืคืŸ:

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 ืžืงื‘ืœ ืžืฉืขืจ1

ืื ื™ ืžืคืขื™ืœ ืืช ื”ืกื ื™ืคืจ ื‘ืžืžืฉืง 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 ืžืงื‘ืœ ืžื ื•ืช ESP ืž-gate1.

ืฉืœื‘ 4. ืžื” Gate2 ืขื•ืฉื” ืขื ื—ื‘ื™ืœื•ืช ESP

ืื ื™ ืžืคืขื™ืœ ืืช ื›ืœื™ ื”ืฉื™ืจื•ืช klogview ื‘- 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

ืื ื™ ืจื•ืื” ืฉื—ื‘ื™ืœื•ืช ESP (ืคืจื•ื˜ื• 50) ื ืฉืžื˜ื• (DROP) ืขืœ ื™ื“ื™ ื›ืœืœ ื—ื•ืžืช ื”ืืฉ (L3VPN). ืื ื™ ืžื•ื•ื“ื ืฉืœ- 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, ื”ื•ืคื™ืขื• ื”ื•ื“ืขื•ืช ืฉืชืขื‘ื•ืจืช ื”ื™ืขื“ 172.16.0.1->172.17.0.1 ืคื•ืขื ื—ื” ื‘ื”ืฆืœื—ื” (PASS) ืขืœ ื™ื“ื™ ื›ืœืœ LIST ื‘ืžืคืช ื”ื”ืฆืคื ื” ืฉืœ CMAP:

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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”