DMVPN là gì?
Dynamic Multipoint VPN (DMVPN) là 1 giao thức của Cisco để đáp ứng cho nhu cầu ngày càng tăng của các công ty doanh nghiệp để có thể kết nối các văn phòng chi nhánh với các trụ sở chính và giữa giữa các chi nhánh với nhau trong khi vẫn giữ chi phí thấp, giảm thiểu độ phức tạp cấu hình và tăng tính linh hoạt của hệ thống mạng.
Trong DMVPN, 1 Router (thường đặt ở trụ sở chính) sẽ đóng vai trò là Hub còn các Router ở các chi nhánh sẽ là các Spoke. DMVPN bao gồm hai thiết kế triển khai chủ yếu:
- Hub to Spoke: được sử dụng để kết nối từ trụ sở đến chi nhánh
- Spoke to Spoke: được sử dụng để kết nối giữa các chi nhánh
Các Spoke đều có các kết nối đến Hub thông qua mGRE tunnel (Hub to Spoke Tunnel), còn các Spoke kết nối với nhau qua Spoke to Spoke Tunnel động, được khởi tạo khi có nhu cầu giao tiếp giữa các chi nhánh.
DMVPN sử dụng NHRP để xác định địa chỉ IP Public hiện tại của các Spoke. Các Spoke khi được cấu hình DMVPN sẽ khai báo địa chỉ IP Public của mình tới Hub và truy vấn địa chỉ IP của Spoke khác khi cần tạo Tunnel.
DMVPN sử dụng multiple GRE (mGRE) Tunnel thay vì GRE để giảm số lượng Tunnel cần tạo. mGRE không có tunnel destination được cấu hình nên mGRE sẽ sử dụng NHRP để xác định IP đích khi cần khởi tạo Tunnel.
Tùy theo nhu cầu của doanh nghiệp, DMVPN có 3 level (3 pha):
- Level 1: chỉ cần chi nhánh thông về HQ, không cần thông sang nhau
- Level 2,3: nội dung tối ưu để các chi nhánh thông sang nhau mà ko cần qua HQ, đỡ tốn băng thông
Lợi ích khi sử dụng DMVPN
Thông thường, cấu hình GRE point-to-point giữa 2 thiết bị khá đơn giản và dễ chạy:
int tunnel 0
tunnel source 1.1.1.1
tunnel destination 2.2.2.2 ## IP wan đầu xa
ip address 192.168.1.1 255.255.255.0 ## IP cho tunnel
Tuy nhiên khi doanh nghiệp có nhiều chi nhánh nối về hội sở thì tốn công khai báo. Ví dụ: 100 chi nhánh nối về HQ thì admin cần khai 100 lần và khó quản lí 100 kênh.
Giải pháp là dùng tính năng DMVPN với những ưu điểm sau:
- Đơn giản hóa việc cấu hình: DMVPN chỉ sử dụng 1 tunnel cho tất cả các Spoke và chúng sử dụng chung 1 dải IP cho các interface Tunnel
- Hỗ trợ các giao thức định tuyến động
- Có thể sử dụng IP Public động trên các chi nhánh
- Spoke to Spoke Tunnel được tạo 1 các tự động khi cần kết nối giữa các chi nhánh với nhau. Dữ liệu trao đổi giữa 2 chi nhanh cũng được gửi trực tiếp mà không cần thông qua Hub
- Chi phí quản lý thấp do không cần mua nhiều IP Public tĩnh cũng như chi phí triển khai.
- Bảo mật mạnh khi kết hợp mGRE với IPSec.
Mô hình DMVPN 3 pha
Chuẩn bị mô hình như sau trên EVE-NG
- Đặt IP lookback (LAN)
- Đặt IP ethernet (WAN)
- Không cần Routing trên ISP (WAN không thông nhau)
- Cấu hình DMVPN để các IP LAN thông với nhau
DMVPN pha 1 (static)
Cấu hình HQ thông với Branch và ngược lại
R1 (HQ):
hostname R1
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface Tunnel0
ip address 192.168.1.1 255.255.255.0 ## IP cho tunnel
ip nhrp map 192.168.1.3 100.0.3.2 ## khi cần đến 192.168.1.3 thì đẩy gói tin đến ip vật lý 100.0.3.2
ip nhrp map 192.168.1.4 100.0.4.2 ## khi cần đến 192.168.1.4 thì đẩy gói tin đến ip vật lý 100.0.4.2
ip nhrp network-id 1 ## Network ID để phân biệt giữa các tunnel
tunnel source Ethernet0/0
tunnel mode gre multipoint ## Không cần chỉ ra IP đích, chỉ cần dùng từ khóa multipoint
!
interface Ethernet0/0
ip address 100.0.1.2 255.255.255.252
no shutdown
!
ip route 0.0.0.0 0.0.0.0 Ethernet0/0
R2 (ISP):
hostname R2
!
interface Ethernet0/0
ip address 100.0.1.1 255.255.255.252
no shutdown
!
interface Ethernet0/1
ip address 100.0.3.1 255.255.255.252
no shutdown
!
interface Ethernet0/2
ip address 100.0.4.1 255.255.255.252
no shutdown
R3 (Branch):
hostname R3
!
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Tunnel0
ip address 192.168.1.3 255.255.255.0
ip nhrp map 192.168.1.1 100.0.1.2
ip nhrp network-id 3
tunnel source Ethernet0/0 ## khai báo source và đích như GRE thông thường
tunnel destination 100.0.1.2
!
interface Ethernet0/0
ip address 100.0.3.2 255.255.255.252
no shutdown
!
ip route 0.0.0.0 0.0.0.0 Ethernet0/0
R4 (Branch):
hostname R4
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface Tunnel0
ip address 192.168.1.4 255.255.255.0
ip nhrp map 192.168.1.1 100.0.1.2
ip nhrp network-id 4
tunnel source Ethernet0/0
tunnel destination 100.0.1.2
!
interface Ethernet0/0
ip address 100.0.4.2 255.255.255.252
no shutdown
!
ip route 0.0.0.0 0.0.0.0 Ethernet0/0
Sau đó ping thông từ chi nhánh lên R1 theo IP tunnel 192.168.1.1 là xong pha 1
DMVPN pha 1 (dynamic)
Trong DMVPN pha 1, ngoài các mapping tĩnh IP tunnel ứng với IP vật lí, ta còn có cách mapping động, nghĩa là trên HUB (HQ) không cần phải gõ lệnh ip nhrp mapping nữa. Thay vào đó ở từng chi nhánh (SPOKE) sẽ tự đăng ký IP tunnel tương ứng IP WAN với NHS (Next Hop Server) tức HQ.
R1 (Hub):
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
## ip nhrp map 192.168.1.3 100.0.3.2
## ip nhrp map 192.168.1.4 100.0.4.2
ip nhrp network-id 1
tunnel source Ethernet0/0
tunnel mode gre multipoint
R3 (Spoke):
interface Tunnel0
ip address 192.168.1.3 255.255.255.0
## ip nhrp map 192.168.1.1 100.0.1.2
ip nhrp nhs 192.168.1.1 ## ip tunnel HQ, dùng để phân giải IP tunnel ra IP vật lý
ip nhrp registration timeout 10 ## thời gian giữa các lần đăng ký với NHS
ip nhrp network-id 3
tunnel source Ethernet0/0
tunnel destination 100.0.1.2
R4 (Spoke):
interface Tunnel0
ip address 192.168.1.4 255.255.255.0
## ip nhrp map 192.168.1.1 100.0.1.2
ip nhrp nhs 192.168.1.1 ## ip tunnel HQ, dùng để phân giải IP tunnel ra IP vật lý
ip nhrp registration timeout 10 ## thời gian giữa các lần đăng ký với NHS
ip nhrp network-id 4
tunnel source Ethernet0/0
tunnel destination 100.0.1.2
Trên Hub show ip nhrp xem các tunnel đã tạo ra ở dạng dynamic
DMVPN pha 1 (OSPF)
Thì ta có thể cấu hình OSPF để quảng bá các dải LAN phía sau mỗi router sao cho các router khác biết đường đến dải LAN đó.
R1 (Hub):
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip ospf 1 area 0
!
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
ip nhrp network-id 1
tunnel source Ethernet0/0
tunnel mode gre multipoint
ip ospf 1 area 0
ip ospf network point-to-multipoint # dùng kiểu mạng broadcast
!
router ospf 1
router-id 1.1.1.1
R3 (Spoke):
interface Loopback0
ip address 3.3.3.3 255.255.255.255
ip ospf 1 area 0
!
interface Tunnel0
ip address 192.168.1.3 255.255.255.0
ip nhrp nhs 192.168.1.1
ip nhrp registration timeout 10
ip nhrp network-id 3
tunnel source Ethernet0/0
tunnel destination 100.0.1.2
ip ospf 1 area 0
ip ospf network point-to-multipoint # dùng kiểu mạng broadcast
!
router ospf 1
router-id 3.3.3.3
R4 (Spoke):
interface Loopback0
ip address 4.4.4.4 255.255.255.255
ip ospf 1 area 0
!
interface Tunnel0
ip address 192.168.1.4 255.255.255.0
ip nhrp nhs 192.168.1.1
ip nhrp registration timeout 10
ip nhrp network-id 4
tunnel source Ethernet0/0
tunnel destination 100.0.1.2
ip ospf 1 area 0
ip ospf network point-to-multipoint # dùng kiểu mạng broadcast
!
router ospf 1
router-id 4.4.4.4
Ping từ chi nhánh sang dải LAN của HQ và ngược lại
show ip route ospf để kiểm tra định tuyến
DMVPN pha 2
Pha 1 có một hạn chế là khi các chi nhánh đi sang nhau sẽ đều sẽ phải đi qua HUB rồi vòng xuống.
Với Pha 2:
- Khi nhánh R3 ping sang nhánh R4 thì R3 sẽ hỏi Hub phân giải địa chỉ tunnel của R4 ứng với IP vật lý.
- Lần đầu, Hub sẽ hỏi hộ đến R4 và gửi thông tin cho R3.
- Từ đó R3 biết đường đến R4 trực tiếp (show ip nhrp để xem tunnel sang R4)
- Cấu hình cho Spoke ta cũng dùng mode multipoint.
R1 (Hub):
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
ip nhrp network-id 1
tunnel source Ethernet0/0
tunnel mode gre multipoint
ip ospf 1 area 0
## ip ospf network point-to-multipoint
ip ospf network broadcast ## phải chọn kiểu mạng broadcast với pha 2
R3 (Spoke):
interface Tunnel0
ip address 192.168.1.3 255.255.255.0
ip nhrp map multicast 100.0.1.2 ## để chạy dc OSPF cần gửi bản tin multicast lên Hub
ip nhrp map 192.168.1.1 100.0.1.2 ## map IP tunnel Hub ứng với IP vật lý
ip nhrp nhs 192.168.1.1
ip nhrp registration timeout 10
ip nhrp network-id 3
tunnel source Ethernet0/0
## tunnel destination 100.0.1.2
tunnel mode gre multipoint ## dùng mode multipoint cho các Spoke
ip ospf 1 area 0
## ip ospf network point-to-multipoint
ip ospf network broadcast ## phải chọn kiểu mạng broadcast với pha 2
ip ospf priority 0 ## ngăn Spoke trở thành DR/BDR đối với mô hình này
R4 (Spoke):
interface Tunnel0
ip address 192.168.1.4 255.255.255.0
ip nhrp map multicast 100.0.1.2 ## để chạy dc OSPF cần gửi bản tin multicast lên Hub
ip nhrp map 192.168.1.1 100.0.1.2 ## map IP tunnel Hub ứng với IP vật lý
ip nhrp nhs 192.168.1.1
ip nhrp registration timeout 10
ip nhrp network-id 4
tunnel source Ethernet0/0
## tunnel destination 100.0.1.2
tunnel mode gre multipoint ## dùng mode multipoint cho các Spoke
ip ospf 1 area 0
## ip ospf network point-to-multipoint
ip ospf network broadcast ## phải chọn kiểu mạng broadcast với pha 2
ip ospf priority 0 ## ngăn Spoke trở thành DR/BDR đối với mô hình này
traceroute từ R3 sang tunnel R4, lần đầu sẽ đi qua Hub R1, traceroute tiếp lần 2 sẽ thấy đi thẳng sang R4
show ip nhrp để xem tunnel từ R3 sang R4 đã được tạo là xong pha 2
DMVPN pha 3
Trong pha 3, khi R3 ping sang R4, gói tin đầu tiên cũng chạy lên R1 hỏi ai là 192.168.1.4. Nhưng khác với pha 2, R1 chuyển hướng câu hỏi này xuống R4, từ đó R4 tự trả lời R3, để thiết lập tunnel trực tiếp sang R4.
Tóm lại, lần này R1 báo lại 2 đầu Spoke là hãy tự đi sang nhau, mà không phải hỏi qua tôi nữa.
Cấu hình y hệt như pha 2, chỉ thêm 1 lệnh
Hub:
interface Tunnel0
ip nhrp redirects
Spoke:
interface Tunnel0
ip nhrp shortcut
Bắt wireshark và ping từ R3 sang R4 để thấy có gói indication (chỉ dẫn của R1 báo cho R3, R4 hãy đi thẳng sang nhau)
show ip route để xem định tuyến sang IP tunnel đầu xa có chữ H (NHRP).
traceroute sang dải LAN bên SPOKE đầu xa để thấy đã đi trực tiếp, không qua R1 nữa.