VRF Lite – Giải pháp ảo hóa Router

1. Giới thiệu

– VRF là tính năng cho phép chia 1 thiết bị Router vật lý thành nhiều Router ảo, mỗi router ảo có chức năng hoạt động độc lập với nhau, có bảng định tuyến riêng…. Tính năng VRF trên Router giống như tính năng chia VLAN trên switch.

– Mặc định tất cả các interface đều thuộc 1 VRF mặc định là Global, khi khai báo thêm các VRF khác thì chúng ta sẽ phải chỉ rõ từng interface sẽ thuộc VRF nào.

–  VRF có thể span qua nhiều Router bằng cách map VRF vào link nối giữa 2 router. Đây được gọi là VRF Lite.

– Do router được ảo hóa theo các VRF riêng, địa chỉ IP riêng nên có khả năng bị trùng network prefix à cần phân biệt bằng giá trị RD (64 bit)  x:y, trong đó x, y là các số tùy ý 32 bit. Có 2 định dạng của RD

  • ASN:NN: định dạng phổ biến nhất.
  • IP address:NN

2. Kịch bản ứng dụng và lab

2015-07-07_100043

R1 là router của ISP kết nối đồng thời tới 2 khách hàng: A (R2) và B (R3), trên R1 sẽ phân tách làm 2 router ảo (tương đương 2 VRF), mỗi router ảo sẽ kết nối riêng tới 1 khách hàng.

3. Các bước cấu hình:

Bước 1: Khai báo các VRF trên Router.

R1(config)#ip vrf A –> tên của VRF

R1(config)#rd 1:1  –> phân biệt các VRF với nhau

Bước 2: Chỉ định các interface dùng cho VRF.

R1(config)#int f0/0

R1(config-if)#ip vrf forwarding A –> gán interface f0/0 thuộc VRF A.

R1(config-if)#ip add 192.168.1.1 255.255.255.0

Bước 3: Định tuyến cho VRF

Static Routing:

R1(config)#ip route vrf A 2.2.2.2 255.255.255.255 192.168.1.2 (khi cấu hình phải chỉ rõ là cho VRF nào)

R1(config)#ip route vrf B 3.3.3.3 255.255.255.255 192.168.1.3

Với OSPF:

R(config)#router ospf 1 vrf A

#network 192.168.1.0 0.0.0.255 area 0

Với RIP,EIGRP:

R(config)#router rip

#address-family ipv4 vrf A

#network 192.168.1.0

 4. Template cấu hình VRF sử dụng định tuyến OSPF

R1:

ena
conf t
host R1
ip vrf A
rd 1:1
ip vrf B
rd 1:2
int f0/0
no sh
ip vrf forwarding A
ip add 192.168.1.1 255.255.255.0
int f0/1
no sh
ip vrf forwarding B
ip add 192.168.1.1 255.255.255.0
router ospf 1 vrf A
router-id 1.1.1.1
net 192.168.1.0 0.0.0.255 area 0
router ospf 2 vrf B
router-id 1.1.1.2
net 192.168.1.0 0.0.0.255 area 0
do wr
end

!R2

ena
conf t
host R2
int f0/0
no sh
ip add 192.168.1.2 255.255.255.0
int lo0
ip add 2.2.2.2 255.255.255.255
router ospf 1
net 192.168.1.0 0.0.0.255 area 0
net 2.2.2.2 0.0.0.0 area 0
do wr
end

!R3

ena
conf t
host R3
int f0/0
no sh
ip add 192.168.1.3 255.255.255.0
int lo0
ip add 3.3.3.3 255.255.255.255
router ospf 1
net 192.168.1.0 0.0.0.255 area 0
net 3.3.3.3 0.0.0.0 area 0
do wr
end
Kiểm tra:

R1#show ip vrf
Name                             Default RD          Interfaces
A                                1:1                 Fa0/0
B                                1:2                 Fa0/1

R1#show ip route vrf A
2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/11] via 192.168.1.2, 00:05:01, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0

R1#show ip route vrf B
3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/11] via 192.168.1.3, 00:05:46, FastEthernet0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/1

R1#ping vrf A 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/25/40 ms

R1#ping vrf B 3.3.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/24/36 ms

NAT Traversal – Giải pháp cho IPsec Tunnel đi qua các thiết bị NAT (modem, firewall)

Để thiết lập 1 VPN tunnel thì cần trải qua 2 phase:

Phase 1: Sử dụng giao thức ISAKMP (nằm trên L4, luôn sử dụng giao thức truyền tải bên dưới là UDP port 500)

Phase 2: Sử dụng giao thức IPsec có 2 phiên bản là ESP và AH. Trong đó AH không sử dụng được nếu có NAT/PAT device ở giữa vì nó check integrity dựa vào IP header mà các trường như địa chỉ sẽ chắn chắn bị thay đổi khi có NAT/PAT.

ESP sẽ đóng gói toàn bộ TCP/UDP bên trong.  Tuy nhiên, trong ESP header lại không có port giống như TCP/UDP. Đây là điểm khác biệt của ESP với ISAKMP và gây ra vấn đề khi thiết lập IPsec tunnel đi qua thiết bị thực hiện NAT overload (PAT), do không có port để map trong bảng NAT.

Giải quyết với NAT-T.

1. Hai đầu thiết bị kiểm tra xem có hỗ trợ NAT-T không thông qua 2 bản tin số 1 và 2  trong ISAKMP Main Mode.

2. Nếu cả 2 đều hỗ trợ NAT-T, 2 thiết bị kiểm tra trên đường truyền có tồn tại thiết bị NAT không. Quá trình này được gọi là NAT-D (NAT Discovery), cụ thể có 2 bản tin NAT-D được gửi, nội dung là giá trị hash của ip và port (bản tin đầu chưa thông tin src.ip + src.port, bản tin sau chứa dst.ip + dst.port). Thiết bị phía nhận kiểm tra hash xem có tồn tại thiết bị NAT ở giữa không.

3. Nếu có thiết bị PAT ở giữa, NAT-T thông qua các bản tin ISAKMP Main Mode  số 5 và 6, mục đích để ISAKMP chuyển từ dùng UDP port 500 sang dùng UDP port 4500, đồng thời cũng đóng gói Quick Mode (Phase 2 Ipsec) vào trong UDP port 4500 (cả src.port và dst.port đều là 4500).

4. Khi đi qua thiết bị PAT, src.port 4500 được đổi thành random high port, dst.port giữ nguyên.

Điểm khác biệt của NAT-T so với IPsec over UDP:

– NAT-T: chỉ đóng gói bản tin ESP vào UDP 4500 khi gặp phải PAT. NAT-T luôn luôn dùng port 4500, không cấu hình thay đổi được.

– IPsec over UDP: luôn đóng gói vào UDP 10000, giá trị port 10000 có thể thay đổi được.

Tham khảo:

https://supportforums.cisco.com/document/64281/how-does-nat-t-work-ipsec

https://supportforums.cisco.com/discussion/11028366/how-nat-t-works-ipsec

Sử dụng NAT/IPsec để kết nối 2 mạng trùng dải địa chỉ IP (Overlapping Networks)

1

Tình huống: Công ty quyết định kết nối mạng tại 2 site với nhau, tuy nhiên do không có quy hoạch trước nên cả 2 site đều đang dùng dải IP là 192.168.1.0/24. Phương án thay đổi IP không được chấp nhận vì phải thay đổi lại rất nhiều và gây gián đoạn dịch vụ.

 Giải pháp: Cấu hình NAT trên các Router biên R3 và R4, đổi R3 LAN thành 10.0.0.0/24 và đổi R4 LAN thành 20.0.0.24. Khi 2 site gửi dữ liệu cho nhau thì dst.ip sẽ là địa chỉ sau NAT đại diện cho mỗi LAN. Ví dụ khi PC R1 cần gửi dữ liệu cho PCR5 thì sẽ gửi với dst.ip = 20.0.0.10, ngược lại PC R5 gửi dữ liệu cho PC R1 sẽ lấy dst.ip = 10.0.0.10

Cấu hình:

R3:

ena
conf t

int f0/0
no sh
ip add 192.168.1.1 255.255.255.0
ip nat inside
int f0/1
no sh
ip add 200.200.200.1 255.255.255.0
ip nat outside

!Map toàn bộ dải 192.168.1.0/24 sang dải 10.0.0.0/24
ip nat inside source static network 192.168.1.0 10.0.0.0 /24 no-alias

ip route 20.0.0.0 255.255.255.0 f0/1 200.200.200.2

R4:

ena
conf t

int f0/0
no sh
ip add 192.168.1.1 255.255.255.0
ip nat inside
int f0/1
no sh
ip add 200.200.200.2 255.255.255.0
ip nat outside

!Map toàn bộ dải 192.168.1.0/24 sang dải 20.0.0.0/24
ip nat inside source static network 192.168.1.0 20.0.0.0 /24 no-alias

ip route 10.0.0.0 255.255.255.0 f0/1 200.200.200.1

Kết quả: PC R1 có thể kết nối tới PC R5 bằng ip đại diện.

R1#ping 20.0.0.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 20.0.0.10, timeout is 2 seconds:
!!!!!

R3#debug ip nat
*Mar  1 01:12:18.399: NAT*: s=192.168.1.10->10.0.0.10, d=20.0.0.1 [35]
*Mar  1 01:12:18.443: NAT*: s=20.0.0.1, d=10.0.0.10->192.168.1.10 [35]

R3#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
— 10.0.0.10          192.168.1.10       —                —
— 10.0.0.0           192.168.1.0        —                —

R4#debug ip nat
*Mar 1 01:12:17.119: NAT*: s=10.0.0.10, d=20.0.0.1->192.168.1.1 [35]
*Mar 1 01:12:17.123: NAT: s=192.168.1.1->20.0.0.1, d=10.0.0.10 [35]

R4#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
— 20.0.0.1           192.168.1.1        —                —
— 20.0.0.0           192.168.1.0        —                —

Mở rộng: Có thể cấu hình IPsec tunnel cho 2 site bị trùng IP như trên, trong đó chú ý access-list sẽ permit traffic giữa 10.0.0.0/24 và 20.0.0.0/24 vì NAT được xử lý trước khi encryption. Tham khảo cấu hình như  sau:

R3 (R4 tương tự)

crypto isakmp policy 1
encr aes
authentication pre-share
group 2
crypto isakmp key cisco address 200.200.200.2
!
!
crypto ipsec transform-set MYSET esp-aes esp-md5-hmac
!
crypto map MYMAP 10 ipsec-isakmp
set peer 200.200.200.2
set transform-set MYSET
match address 100

int f0/1

crypto map MYMAP
!
ip route 20.0.0.0 255.255.255.0 200.200.200.2
!

access-list 100 permit ip 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255

Tham khảo:

http://www.cisco.com/c/en/us/support/docs/security-vpn/ipsec-negotiation-ike-protocols/14143-same-ip.html

http://nyquist.eu/nat-for-overlapping-networks/

https://cciereview.wordpress.com/2012/03/03/nat-overlapping-subnets/