Nədən danışacağıq?
Bir neçə yerdə filialları olan şirkətlərdə filialla baş ofis və ya digər obyektlərlə əlaqənin yaradılması üçün müxtəlif vasitələrdən istifadə olunur. Bu İnternet üzərindən S2S VPN əlaqəsi də ola bilər, filial əməkdaşları baş ofisə uzaqdan qoşulma (Remote Access) metodu ilə də qoşula bilərlər. Lakin bu metodlar əlverişli deyil bir neçə səbəbdən. Birincisi, gərək hər obyekt üçün ayrıca internet xətti olsun. Bu zaman filial əməkdaşları qlobal şəbəkəyə rahatlıqla çıxa bilirlər. Bu da öz növbəsində təhlükəsizlikdə boşluq yaradır. Adətən, böyük şirkətlərdə təhlükəsizlik avadanlıqları bir yerdə, mərkəzi ofisdə cəmlənir. Digər yerlərdən gələn bütün trafik həmin mərkəzdən keçir və beləliklə İT əməkdaşları qoşulmalara nəzarət edə bilir. İkincisi, bu tip qoşulmaları qurmaq və idarə etmək daha çox əmək tələb edir. Bu zaman da köməyə IPSec DMVPN çatır.
DMVPN
DMVPN – Dynamic Multipoint VPN, filiallarla əlaqəni dinamik olaraq qurur. Yəni hər filialı qoşmaq üçün baş ofis və filialda ayrı-ayrı S2S tunel yaratmağa ehtiyac olmur. Bu metodda HUB və Spoke topologiyasından istifadə edilir. Əsas, yəni HUB marşrutlayıcı, bir dəfə sazlanır. Qalan işlər isə filial marşrutlayıcısında həyata keçirilir. Özlüyündə DMVPN geniş mövzudur və bu haqda ayrıca yazım olacaq. Bu yazıda isə EoMPLS üzərindən IPSec DMVPN qurmaqdan danışacam.
MPLS
MPLS – Multiprotocol Label Switching – texnologiyasında şəbəkədən keçən paketlər xüsusi markerlərlə işarələnir (label). MPLS üçün kanal səviyyəsində istifadə olunan texnologiyanın fərqi yoxdur: bu Ethernet də ola bilər, Frame Relay da. Sadə dillə desək, provayder MPLS köməyi ilə iki və daha çox obyekt arasında tunel yaradır. Müştərinin trafiki onlarla marşrutlayıcıdan keçib getsə də, müştəri bunu görmür. Onun üçün filial bir geniş yayım domeninə qoşulmuş kimi görünür. MPLS də çox geniş mövzudur və bir məqalədə əhatə etmək həm çətin, həm də yorucudur.
EoMPLS (Ethernet over MPLS) – MPLS üzərindən OSI modelinin ikinci səviyyəsində olan Ethernet məlumatlarını ötürmək üçün istifadə olunur. Yəni müştəri digər filialı sanki bir komutatora qoşulu kimi görür. Bu metodda da VLAN-lardan istifadə edilir. Bu yazıda həm provayder, həm də müştəri kimi çıxış edərək müxtəlif texnologiyalardan istifadə etməklə iki nöqtəni birləşdirəcəyik.
MPLS sazlanması
Təcrübəni GNS3 mühitində aparacağıq. Avadanlıq qismində Cisco maşrutlayıcılardan istifadə olunacaq. GNS3-də L2 kommutator yaratmaq üçün GNS3 VM və Cisco IOSvL2 15.2(4.0.55)E versiyalı IOS əməliyyat sistemi lazımdır. Marşrutlayıcı kimi isə Cisco 7200 istifadə edəcəyik. Hər iki avadanlığın sistemini linkdən endirə bilərsiniz. Topologiyamız aşağıdakı kimi olacaq:

Öncə provayderin Bakıda yerləşən avadanlığını sazlayaq. Bunun üçün qlobal sazlama rejimində iki komandanı yazmaq lazımdır:
ISP_Baku(config)#ip cef
ISP_Baku(config)#mpls ip
Daha sonra LDP tunelin qurulmasında istifadə olunacaq loopback interfeys yaradıb IP vermək lazımdır. LDP tunel üçün fiziki interfeys də istifadə etmək olar, lakin loopback daha əlverişlidir.
ISP_Baku(config)#do sh run int loop 0
Building configuration...
Current configuration : 63 bytes
!
interface Loopback0
ip address 1.1.1.3 255.255.255.255
end
Daha sonra Sumgait marşrutlayıcısına baxan interfeysi sazlamaq lazımdır:
ISP_Baku(config)#do sh run int fa2/0
Building configuration...
Current configuration : 103 bytes
!
interface FastEthernet2/0
ip address 1.0.0.5 255.255.255.252
duplex auto
speed auto
mpls ip
end
Ardından marşrutlama protokolunu sazlayırıq. Burada OSPF protokolundan istifadə olunacaq. Maşrutlama prosesinə həm loopback, həm də fiziki interfeyslərin şəbəkələrini əlavə edirik.
ISP_Baku(config-subif)#do sh run | s router
router ospf 100
log-adjacency-changes
network 1.0.0.4 0.0.0.3 area 0
network 1.1.1.3 0.0.0.0 area 0
Müştəri tərəfi üçün tunelin yaradılmasına keçməzdən əvvəl provayder avadanlıqları arasında MPLS tunelin qurulması üçün digər iki avadanlığımızda da eyni sazlamaları etməliyik. Sumqayıt maşrutlayıcısı:
ISP_Sumgait(config)#ip cef
ISP_Sumgait(config)#mpls ip
ISP_Sumgait#sh run int loop 0
Building configuration...
Current configuration : 63 bytes
!
interface Loopback0
ip address 1.1.1.2 255.255.255.255
end
interface FastEthernet2/0
description Link_to_ISP_Baku
ip address 1.0.0.6 255.255.255.252
duplex auto
speed auto
mpls ip
end
interface GigabitEthernet1/0
description Link_to_ISP_Guba
ip address 1.0.0.2 255.255.255.252
negotiation auto
mpls ip
end
router ospf 100
log-adjacency-changes
network 1.0.0.0 0.0.0.3 area 0
network 1.0.0.4 0.0.0.3 area 0
network 1.1.1.2 0.0.0.0 area 0
Quba marşrutlayıcısı:
ISP_Guba(config)#ip cef
ISP_Guba(config)#mpls ip
ISP_Guba#sh run int loop 0
Building configuration...
Current configuration : 63 bytes
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
end
interface GigabitEthernet1/0
description Link_to_ISP_Sumgait
ip address 1.0.0.1 255.255.255.252
negotiation auto
mpls ip
end
router ospf 100
log-adjacency-changes
network 1.0.0.0 0.0.0.3 area 0
network 1.1.1.1 0.0.0.0 area 0
MPLS əlaqəni yoxlayaq:
ISP_Guba#sh mpls ldp neighbor
Peer LDP Ident: 1.1.1.2:0; Local LDP Ident 1.1.1.1:0
TCP connection: 1.1.1.2.54914 - 1.1.1.1.646
State: Oper; Msgs sent/rcvd: 56/56; Downstream
Up time: 00:42:27
LDP discovery sources:
GigabitEthernet1/0, Src IP addr: 1.0.0.2
Addresses bound to peer LDP Ident:
1.0.0.2 1.1.1.2 1.0.0.6
Peer LDP Ident: 1.1.1.3:0; Local LDP Ident 1.1.1.1:0
TCP connection: 1.1.1.3.64332 - 1.1.1.1.646
State: Oper; Msgs sent/rcvd: 56/57; Downstream
Up time: 00:42:12
LDP discovery sources:
Targeted Hello 1.1.1.1 -> 1.1.1.3, active, passive
Addresses bound to peer LDP Ident:
1.0.0.5 1.1.1.3
LDP tunel
İndi isə müştəriyə baxan interfeysi sazlamaq lazımdır. Məhz bu interfeysdə müştərinin VLAN-ı yazılır və LDP tunel yaradılır.
ISP_Baku(config)#do sh run int fa0/0.165
Building configuration...
Current configuration : 110 bytes
!
interface FastEthernet0/0.165
encapsulation dot1Q 165
xconnect 1.1.1.1 12345678 encapsulation mpls
end
xconnect 1.1.1.1 12345678 encapsulation mpls – bu komanda ilə provayder öz mərkəzindən müştərinin filialına baxan avadanlığı arasında LDP tunel yaradır. 12345678 VC (Virtual Circuit) ID-dir və hər iki tərəfdə eyni olmalıdır çünki məhz bu ID ilə tunellərin identifikasiyası aparılır.
Tunelin qurulması üçün müştərinin ikinci obyektinə baxan avadanlığımızda da eyni sazlamaları etməliyik:
ISP_Guba#sh run int fa0/0.165
Building configuration...
Current configuration : 110 bytes
!
interface FastEthernet0/0.165
encapsulation dot1Q 165
xconnect 1.1.1.3 12345678 encapsulation mpls
end
Qeyd etmək lazımdır ki, Bakı və Guba avadanlıqlarında VLAN ID fərqli də ola bilər. LDP tuneli yoxlayaq:
ISP_Guba#sh mpls l2transport vc 12345678
Local intf Local circuit Dest address VC ID Status
------------- -------------------------- --------------- ---------- ----------
Fa0/0.165 Eth VLAN 165 1.1.1.3 12345678 UP
ISP_Guba#sh mpls l2transport vc 12345678 detail
Local interface: Fa0/0.165 up, line protocol up, Eth VLAN 165 up
Destination address: 1.1.1.3, VC ID: 12345678, VC status: up
Output interface: Gi1/0, imposed label stack {17 16}
Preferred path: not configured
Default path: active
Next hop: 1.0.0.2
Create time: 00:44:52, last status change time: 00:43:46
Signaling protocol: LDP, peer 1.1.1.3:0 up
MPLS VC labels: local 16, remote 16
Group ID: local 0, remote 0
MTU: local 1500, remote 1500
Remote interface description:
Sequencing: receive disabled, send disabled
VC statistics:
packet totals: receive 0, send 0
byte totals: receive 0, send 0
packet drops: receive 0, seq error 0, send 0
Göründüyü kimi LDP tunel qurulub və sazlamanın növbəti mərhələsinə keçmək olar.
Komutatorların sazlanması
Adi şəbəklərdə olduğu kimi, provayderlər də müştərilərə qoşulmanı komutatorlar üzərindən həyata keçirirlər. Səbəb sadədir – komutatorların port sayı daha çoxdur. Bu hissədə proveyder tərəfində komutatorun sazlanmasını göstərəcəm.
ISP_Baku_SW#sh run int gi0/0
Building configuration...
Current configuration : 132 bytes
!
interface GigabitEthernet0/0
description Link_to_ISP_Baku_RTR
switchport trunk encapsulation dot1q
switchport mode trunk
media-type rj45
negotiation auto
end
Provayder komutatorunda provayder marşrutlayıcısına baxan interfeys trunk kimi sazlanır, çunki marşrutlayıcıda altinterfeys (subinterfeys) yaradılıb və enkapsulyasiya dot1q təyin olunub. Müştəriyə baxan interfeys isə access kimi sazlanıb:
ISP_Baku_SW#sh run int gigabitEthernet 0/1
Building configuration...
Current configuration : 160 bytes
!
interface GigabitEthernet0/1
switchport access vlan 165
switchport mode access
media-type rj45
no negotiation auto
spanning-tree bpduguard disable
end
Eyni konfiqurasiya ISP_Guba_SW komutatorunda da olmalıdır.
Müştəri sazlamaları
Müştəri tərəfdə də adətən provayderdən gələn xətt komutatora qoşulur. Əgər provayder tərəfdə hər şeyi doğru yazmışıqsa və müştəri tərəfdə provayderə baxan interfeys doğru sazlanıbsa, həmin interfeysin altında baş ofisimizdə olan marşrutlayıcının MAC ünvanını görməliyik (qara şriftlə seçilib):
Guba_Branch_SW#sh run int gi0/0
Building configuration...
Current configuration : 173 bytes
!
interface GigabitEthernet0/0
switchport access vlan 165
switchport mode access
media-type rj45
duplex full
no negotiation auto
spanning-tree bpduguard disable
end
Guba_Branch_SW#show mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 ca05.0822.001c DYNAMIC Gi0/1
202 ca05.0822.0000 DYNAMIC Gi0/2
165 ca04.078c.001c DYNAMIC Gi0/0
165 ca05.0822.001c DYNAMIC Gi0/1
Total Mac Addresses for this criterion: 4
HeadOffice_RTR#sh interfaces gi1/0
GigabitEthernet1/0 is up, line protocol is up
Hardware is 82543, address is ca04.078c.001c (bia ca04.078c.001c)
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 1., loopback not set
Keepalive set (10 sec)
Full-duplex, 1000Mb/s, link type is autonegotiation, media type is SX
output flow-control is unsupported, input flow-control is unsupported
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:00, output 00:00:02, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 1000 bits/sec, 1 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
3953 packets input, 278844 bytes, 0 no buffer
Received 3856 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 watchdog, 0 multicast, 0 pause input
0 input packets with dribble condition detected
601 packets output, 71043 bytes, 0 underruns
0 output errors, 0 collisions, 1 interface resets
119 unknown protocol drops
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier, 0 pause output
0 output buffer failures, 0 output buffers swapped out
DMVPN. HUB marşutun sazlanması
İndi də keçək müştərinin filialla baş ofisi arasında əlaqənin qurulmasına. DMVPN qurulması üçün NHRP protokolundan istifadə olunur. NHRP – Next Hop Resolution Protocol, NBMA (Non Broadcas Multiple Access) şəbəkəsin iştirakçılarına bir-birlərinin fiziki ünvanlarını Next-Hop Server-ə (NHS) müraciət edərək dinamik öyrənmək imkanı verir. DMVPN şəbəkəsində NHS server HUB router olur. HUB marşutlayıcıda SPOKE marşrutlayıcıların fiziki və tunel IP-lərinin uyğunluğunu saxlayan NHRP baza olur. Spoke marşrutlayıcılar HUB-a müraciət edərək digər SPOKE-ların IP ünvanlarını öyrənir, daha sonra bir-birləri ilə birbaşa əlaqə yaradır.
Aşağıda konfiqurasiyanı göstərəcəm və vacib məqamları qeyd edəcəm. Müştəri tərəfdə EIGRP marşrutlama protokolundan istifadə edəcəyik. Öncə HUB marşrutlayıcının sazlamalarına baxaq.
HeadOffice_RTR#sh run int gi1/0.165
Building configuration...
Current configuration : 526 bytes
!
interface GigabitEthernet1/0.165
encapsulation dot1Q 165
ip address 10.20.30.1 255.255.255.0
end
interface Tunnel0
ip address 172.18.81.1 255.255.255.0
no ip redirects
ip mtu 1440
no ip next-hop-self eigrp 10
ip authentication mode eigrp 10 md5
ip authentication key-chain eigrp 10 EIGRP_Key
ip nhrp authentication Cisco123
ip nhrp map multicast dynamic
ip nhrp network-id 10
ip nhrp holdtime 400
ip tcp adjust-mss 1360
no ip split-horizon eigrp 10
tunnel source GigabitEthernet1/0.165
tunnel mode gre multipoint
tunnel key 10
tunnel path-mtu-discovery
tunnel protection ipsec profile DMVPN shared
end
router eigrp 10
network 172.18.81.0 0.0.0.255
no auto-summary
ip mtu – DMVPN üçün GRE tuneldən istifadə edilir. Bu protokol isə IP paketə müxtəlif başlıqlar əlavə edir. MTU 1500 baytı aşmaması üçün tunelin altında göstərici azaldılır.
no ip next-hop-self eigrp 10 – EIGRP yaydığı marşrutlar üçün növbəti addım ünvanı olaraq HUB-ın ünvanını göstərəcək. DMVPN-nin işləməsi üçün növbəti addım olaraq SPOKE marşrutların IP-ləri göstərilməlidir.
no ip split-horizon eigrp 10 – EIGRP-də üfüqün parçalanması (split-horizon) texnologiyası var. Bu texnologiya EIGRP-nin bir interfeysdən öyrəndiyi marşrutları eyni intefeysə ötürmənin qarşısını alaraq maşrutlama dövrəsinin yaranmasına mane olur. Lakin DMVPN şəbəkəsində marşrutlar eyni interfeyslə yayımlanmalıdır. Bu səbədən tunel interfeysin altında split-horizon texnologiyası söndürülür. Marşrutlama dövrəsinin qarşısı isə filtrlənmə ilə alına bilər.
ip nhrp map multicast dynamic – HUB marşrutlayıcı SPOKE marşrutlayıcılarla əlaqəni dinamik şəkildə əlavə edəcək. Spoke marşrutlarda bu komandadan istifadə olunmur, əvəzinə hub marşrutlayıcının IP-si göstərilir.
tunnel mode gre multipoint – tunel multipoint rejimdə işləməsi üçün lazımdır.
tunnel protection ipsec profile DMVPN shared – tuneldən keçən məlumatların IPSec-lə şifərələnməsi üçün istifadə edilir. IPSec profilinin sazlamaları aşağıda göstərilib:
crypto isakmp policy 1
encr aes 256
authentication pre-share
group 5
crypto isakmp key cisco123 address 0.0.0.0 0.0.0.0
!
!
crypto ipsec transform-set TunnelSec esp-aes 256 esp-sha-hmac
mode transport
!
crypto ipsec profile DMVPN
set security-association lifetime seconds 900
set transform-set TunnelSec
Bu göstəricilər filial marşrutlayıcılarında da eyni olmalıdır. Tək istisna crypto isakmp key cisco123 address 0.0.0.0 0.0.0.0 sətridir. Spoke marşrutlayıcılarda burada HUB marşrutlayıcının IP-si qeyd olunur.
SPOKE sazlanması
Spoke maşrutlayıcılarda da EIGRP konfiqurasiya olunmalıdır. Əks halda bütün marşrutları statik olaraq yazmaq lazım olacaq. Tunel interfeysin konfiqurasiyasına baxaq:
Guba_RTR#sh run int gi1/0.1658
Building configuration...
Current configuration : 106 bytes
!
interface GigabitEthernet1/0.165
encapsulation dot1Q 165
ip address 10.20.30.202 255.255.255.0
end
interface Tunnel0
ip address 172.18.81.202 255.255.255.0
ip mtu 1440
no ip next-hop-self eigrp 10
ip authentication mode eigrp 10 md5
ip authentication key-chain eigrp 10 EIGRP_Key
ip nhrp authentication Cisco123
ip nhrp map 172.18.81.1 10.20.30.1
ip nhrp map multicast 10.20.30.1
ip nhrp network-id 10
ip nhrp nhs 172.18.81.1
ip tcp adjust-mss 1360
no ip split-horizon eigrp 10
tunnel source GigabitEthernet1/0.165
tunnel destination 10.20.30.1
tunnel key 10
tunnel path-mtu-discovery
tunnel protection ipsec profile DMVPN
end
ip nhrp map 172.18.81.1 10.20.30.1 – burada HUB marşrutlayıcının tunel IP-si ilə fiziki IP-si arasında uyğunluq yaradırıq.
ip nhrp map multicast 10.20.30.1 – multicast trafiki qəbul edəcək IP-ni göstəririk. Bu HUB marşrutlayıcı olur.
ip nhrp nhs 172.18.81.1 – NHS serverin tunel IP-ni qeyd edirik.
Bütün sazlamalar düzgün olunubsa show dmvpn komandasını yazmaqla DMVPN-nin qurulub qurulmadığını yoxlaya bilərik.
Guba_RTR#sh dmvpn
Legend: Attrb --> S - Static, D - Dynamic, I - Incomplete
N - NATed, L - Local, X - No Socket
# Ent --> Number of NHRP entries with same NBMA peer
NHS Status: E --> Expecting Replies, R --> Responding
UpDn Time --> Up or Down Time for a Tunnel
==========================================================================
Interface: Tunnel0, IPv4 NHRP Details
Type:Spoke, NHRP Peers:1,
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 10.20.30.1 172.18.81.1 UP 00:54:03 S
Bəs IPSec DMVPN-nin işini necə yoxlayaq? Bunun üçün Wireshark-dan istifadə edərək trafikin şifrələnib-şifrələnmədiyini görmək olar:

Yazı bir az böyük olsa da, ümid edirəm faydalı olar.
netadmin.az IT haqqında Azərbaycan dilində