Bài viết chuyên đề

IP Overlapping

25/01/2018 10:31:03

Bải viết số 5: Chuyên đề Network Address Translation

Trong các bài viết trước, chúng ta đã cùng nhau tìm hiểu các kỹ thuật khác nhau của NAT thông qua các bài lab ví dụ. Trong bài viết này, chúng ta sẽ tiếp tục khảo sát một ví dụ khác về cách sử dụng NAT để giải quyết vấn đề trùng lặp IP trong hệ thống mạng (IP Overlapping).

Sơ đồ

Hình 1 – Sơ đồ bài lab ví dụ.

Mô tả

Trên hình 1 là sơ đồ đấu nối mạng giữa 3 công ty. Kịch bản lab đặt ra là có 3 công ty đối tác của nhau cần trao đổi dữ liệu với nhau. Để thực hiện điều này, họ cùng thuê một kết nối Metronet để đấu nối giữa 3 site của 3 công ty. Tiếp đó, mỗi công ty lại cử ra một phòng ban liên quan để tiến hành trao đổi dữ liệu hợp tác; subnet IP của các phòng ban này sẽ được quảng bá vào một giao thức định tuyến nào đó chạy chung giữa 3 site của 3 công ty để các phòng ban này có thể đi đến nhau. Tuy nhiên, một vấn đề nảy sinh trong quá trình triển khai là hai phòng ban liên quan của hai công ty 1 và 2 bị trùng subnet IP (xem hình 1). Yêu cầu đặt ra cho đội ngũ triển khai là vẫn phải đảm bảo các phòng ban của 3 công ty đi đến nhau được mà không được phép thay đổi IP vốn có của bất kỳ phòng ban nào.

Trên sơ đồ hình 1:

  • Các router R1, R2 và R3 đóng vai trò là 3 router thuộc 3 doanh nghiệp đang giao tiếp với nhau.
  • Ba router này đấu nối với nhau thông qua một kết nối multi – access. Trong môi trường lab, ta có thể sử dụng một switch để xây dựng kết nối này; trong thực tế, đây thường là một kết nối Metronet như đã mô tả trong kịch bản lab. Các cổng kết nối trên các router là các cổng F0/1. Các địa chỉ IP đấu nối được chỉ ra như trên hình 1.
  • Các cổng F0/0 của 3 router đóng vai trò là các cổng gateway nối đến các subnet của các phòng ban sẽ tham gia trao đổi dữ liệu. Các router Client1, Client2 và Client3 được sử dụng để giả lập các user trên các subnet của các phòng ban này.
  • Ta sẽ sử dụng định tuyến RIPv2 giữa 3 router để đảm bảo các subnet liên quan đi được đến nhau. NAT sẽ được sử dụng để giải quyết vấn đề trùng lặp IP giữa R1 và R2.

Thực hiện

Bước 1: Cấu hình ban đầu cho sơ đồ lab

Trong bước này, chúng ta thực hiện những công việc như sau:

  • Đặt địa chỉ IP trên các cổng của các router theo quy hoạch IP được chỉ ra trên hình 1.
  • Cấu hình các router Client1, Client2 và Client3 giả lập các end – user trên các subnet của các phòng ban.

Cấu hình

Trên R1:

R1(config)#interface f0/1

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.123.1 255.255.255.0

R1(config-if)#exit

R1(config)#interface f0/0

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.10.1 255.255.255.0

R1(config-if)#exit

Trên R2:

R2(config)#interface f0/1

R2(config-if)#no shutdown

R2(config-if)#ip address 192.168.123.2 255.255.255.0

R2(config-if)#exit

R2(config)#interface f0/0

R2(config-if)#no shutdown

R2(config-if)#ip address 192.168.10.1 255.255.255.0

R2(config-if)#exit

Trên R3:

R3(config)#interface f0/1

R3(config-if)#no shutdown

R3(config-if)#ip address 192.168.123.3 255.255.255.0

R3(config-if)#exit

R3(config)#interface f0/0

R3(config-if)#no shutdown

R3(config-if)#ip address 192.168.3.1 255.255.255.0

R3(config-if)#exit

Tiếp theo, ta cấu hình các router giả lập các end – user:

Client1(config)#interface f0/0

Client1(config-if)#ip address 192.168.10.2 255.255.255.0

Client1(config-if)#exit

Client1(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.1

Client2(config)#interface f0/0

Client2(config-if)#ip address 192.168.10.2 255.255.255.0

Client2(config-if)#exit

Client2(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.1

Client3(config)#interface f0/0

Client3(config-if)#no shutdown

Client3(config-if)#ip address 192.168.3.2 255.255.255.0

Client3(config-if)#exit

Client3(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.1

Kiểm tra

Chúng ta thực hiện kiểm tra rằng các kết nối đã thông suốt:

R1#ping 192.168.123.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.123.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/32/40 ms

R1#ping 192.168.123.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.123.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/32/40 ms

R2#ping 192.168.123.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.123.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/29/40 ms

Các client đã đi đến được các gateway của mình:

Client1#ping 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/27/36 ms

Client2#ping 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/36/44 ms

Client3#ping 192.168.3.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.3.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/49/60 ms

Sau khi hoàn tất cấu hình ban đầu, chúng ta chuyển qua bước tiếp theo là cấu hình định tuyến và NAT để 3 phòng ban có thể đi đến được nhau.

Bước 2: Cấu hình định tuyến và NAT

  • Cấu hình NAT trên các router R1 và R2 đảm bảo:
    • Subnet 192.168.10.0/24 của R1 được các router R2 và R3 nhìn thấy là 192.168.1.0/24.
    • Subnet 192.168.10.0/24 của R2 được các router R1 và R3 nhìn thấy là 192.168.2.0/24.
  • Cấu hình định tuyến RIPv2 đảm bảo các subnet nằm sau R1, R2 và R3 đi đến nhau được.

Cấu hình

Giải pháp NAT được chọn trong bước này để giải quyết vấn đề trùng lắp IP giữa R1 và R2 là mỗi router thực hiện NAT subnet trùng ra thành một subnet khác khi truyền thông với nhau.

NAT trên R1:

R1(config)#ip nat inside source static network 192.168.10.0 192.168.1.0 /24

R1(config)#interface f0/0

R1(config-if)#ip nat inside

R1(config-if)#exit

R1(config)#interface f0/1

R1(config-if)#ip nat outside

R1(config-if)#exit

NAT trên R2:

R2(config)#ip nat inside source static network 192.168.10.0 192.168.2.0 /24

R2(config)#interface f0/0

R2(config-if)#ip nat inside

R2(config-if)#exit

R2(config)#interface f0/1

R2(config-if)#ip nat outside

R2(config-if)#exit

Như vậy, subnet trùng của R1 được chuyển đổi thành 192.168.1.0/24, subnet trùng của R2 được chuyển đổi thành 192.168.2.0/24 trong quá trình các router giao tiếp với nhau.

Thao tác tiếp theo mà chúng ta phải thực hiện là cấu hình định tuyến đảm bảo các địa chỉ có thể giao tiếp được với nhau. Lúc này, R1 và R2 phải quảng bá các subnet 192.168.1.0/24 và 192.168.2.0/24 chứ không phải subnet gốc 192.168.10.0/24 vào giao thức định tuyến đang chạy giữa 3 router. Các subnet mới này không có sẵn trên các cổng của hai router R1 và R2 nên R1 và R2 phải tạo các route static giả cho các subnet này rồi redistribute chúng vào RIP. Ta quan sát cấu hình:

Trên R1:

R1(config)#ip route 192.168.1.0 255.255.255.0 null0

R1(config)#router rip

R1(config-router)#version 2

R1(config-router)#no auto-summary

R1(config-router)#network 192.168.123.0

R1(config-router)#redistribute static

R1(config-router)#exit

Trên R2:

R2(config)#ip route 192.168.2.0 255.255.255.0 null0

R2(config)#router rip

R2(config-router)#version 2

R2(config-router)#no auto-summary

R2(config-router)#network 192.168.123.0

R2(config-router)#redistribute static

R2(config-router)#exit

Trên R3:

R3(config)#router rip

R3(config-router)#version 2

R3(config-router)#no auto-summary

R3(config-router)#network 192.168.123.0

R3(config-router)#network 192.168.3.0

R3(config-router)#exit

Kiểm tra

Chúng ta kiểm tra xác nhận rằng thao tác cấu hình trên đây đã đảm bảo các subnet thấy nhau.

Đầu tiên, chúng ta kiểm tra bảng định tuyến của các router:

R1#show ip route rip

R    192.168.2.0/24 [120/1] via 192.168.123.2, 00:00:15, FastEthernet0/1

R    192.168.3.0/24 [120/1] via 192.168.123.3, 00:00:14, FastEthernet0/1

R2#show ip route rip

R    192.168.1.0/24 [120/1] via 192.168.123.1, 00:00:14, FastEthernet0/1

R    192.168.3.0/24 [120/1] via 192.168.123.3, 00:00:19, FastEthernet0/1

R3#show ip route rip

R    192.168.1.0/24 [120/1] via 192.168.123.1, 00:00:01, FastEthernet0/1

R    192.168.2.0/24 [120/1] via 192.168.123.2, 00:00:07, FastEthernet0/1

Ta thấy rằng các subnet của các phòng ban của các công ty đã xuất hiện trong bảng định tuyến của các router. Ta cũng để ý rằng các subnet 192.168.1.0/24 và 192.168.2.0/24 đã xuất hiện thay thế cho subnet 192.168.10.0/24 của hai công ty 1 và 2.

Ta quan sát bảng NAT của hai router R1 và R2:

R1#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 192.168.1.0        192.168.10.0       ---                ---

R2#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 192.168.2.0        192.168.10.0       ---                ---

Bảng NAT thể hiện cấu hình NAT đã thực hiện. Trong cấu hình NAT static ở trên, thay vì chỉ NAT từng địa chỉ một, chúng ta đã cấu hình router NAT cả một subnet thành một subnet khác.

Ta bật “debug ip nat” trên các router R1 và R2 để quan sát hoạt động NAT:

R1#debug ip nat

IP NAT debugging is on

R2#debug ip nat

IP NAT debugging is on

Ta kiểm tra rằng các client đã đi đến nhau được:

Client1#ping 192.168.2.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 124/152/176 ms

Client1#ping 192.168.3.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 124/147/188 ms

Client2#ping 192.168.3.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 96/133/188 ms

Ta quan sát kết quả debug trên các router.

Trên R1, khi Client 1 giao tiếp với Client2:

*Mar  1 00:09:11.027: NAT*: s=192.168.10.2->192.168.1.2, d=192.168.2.2 [2]

*Mar  1 00:09:11.167: NAT*: s=192.168.2.2, d=192.168.1.2->192.168.10.2 [2]

Trên R1, khi Client1 giao tiếp với Client3:

*Mar  1 00:11:40.475: NAT*: s=192.168.10.2->192.168.1.2, d=192.168.3.2 [10]

*Mar  1 00:11:40.623: NAT*: s=192.168.3.2, d=192.168.1.2->192.168.10.2 [10]

Trên R2, khi Client2 giao tiếp với Client1:

*Mar  1 00:08:38.699: NAT*: s=192.168.1.2, d=192.168.2.2->192.168.10.2 [3]

*Mar  1 00:08:38.711: NAT*: s=192.168.10.2->192.168.2.2, d=192.168.1.2 [3]

Trên R2, khi Client2 giao tiếp với Client3:

*Mar  1 00:09:16.571: NAT*: s=192.168.10.2->192.168.2.2, d=192.168.3.2 [1]

*Mar  1 00:09:16.663: NAT*: s=192.168.3.2, d=192.168.2.2->192.168.10.2 [1]

Ta quan sát bảng NAT của các router:

R1#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

icmp 192.168.1.2:3     192.168.10.2:3     192.168.2.2:3      192.168.2.2:3

icmp 192.168.1.2:4     192.168.10.2:4     192.168.3.2:4      192.168.3.2:4

--- 192.168.1.2        192.168.10.2       ---                ---

--- 192.168.1.0        192.168.10.0       ---                ---

R2#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

icmp 192.168.2.2:2     192.168.10.2:2     192.168.3.2:2      192.168.3.2:2

icmp 192.168.2.2:3     192.168.10.2:3     192.168.1.2:3      192.168.1.2:3

--- 192.168.2.2        192.168.10.2       ---                ---

--- 192.168.2.0        192.168.10.0       ---                ---

Ta thấy các entry NAT tương ứng cho từng cặp địa chỉ cụ thể đã được tạo ra cùng với các entry extendable khác thể hiện rõ giao thức nền cũng như các port được sử dụng.

Đến đây, chúng ta đã hoàn thành yêu cầu đặt ra ở bước 2.

Bước 3: NAT trên một router

  • Thực hiện chuyển đổi giải pháp cấu hình NAT đã thực hiện ở bước 2 thành giải pháp cấu hình NAT chỉ tiến hành trên router R1, không tiến hành trên router R2.

Cấu hình

Gỡ bỏ cấu hình NAT đã thực hiện trên R2 ở bước 2:

R2(config)#no ip nat inside source static network 192.168.10.0 192.168.2.0 /24

Static entry in use, do you want to delete child entries? [no]: y

R2(config)#no ip route 192.168.2.0 255.255.255.0 Null0

R2(config)#router rip

R2(config-router)#no redistribute static

R2(config-router)#exit

Tiếp theo, ta thực hiện quảng bá subnet trùng 192.168.10.0/24 trên R2 vào RIPv2:

R2(config)#router rip

R2(config-router)#network 192.168.10.0

R2(config-router)#exit

Cuối cùng, ta hiệu chỉnh lại cấu hình NAT trên R1. Trong bước này, ta thực hiện thêm thao tác NAT outside để mạng trùng 192.168.10.0/24 bên ngoài sẽ được các host bên trong nhìn thấy như là mạng 192.168.2.0/24:

R1(config)#ip nat outside source static network 192.168.10.0 192.168.2.0 /24

Để đảm bảo thông suốt về mặt định tuyến, chúng ta thực hiện cấu hình thêm route cho subnet mới 192.168.2.0/24 trên R1:

R1(config)#ip route 192.168.2.0 255.255.255.0 192.168.123.2

Như vậy, ta đã hoàn thành xong cấu hình NAT trên R1 để đảm bảo các phòng ban cần trao đổi dữ liệu của ba công ty thấy được nhau. Để tiện theo dõi, phần cấu hình trên R1 được nhắc lại ở đây:

ip nat inside source static network 192.168.10.0 192.168.1.0 /24

ip nat outside source static network 192.168.10.0 192.168.2.0 /24

interface FastEthernet0/0

 ip nat inside

interface FastEthernet0/1

 ip nat outside

ip route 192.168.1.0 255.255.255.0 Null0

ip route 192.168.2.0 255.255.255.0 192.168.123.2

router rip

 version 2

 redistribute static

 network 192.168.123.0

 no auto-summary

Kiểm tra

Kiểm tra bảng định tuyến của các router:

R1#show ip route rip

R    192.168.3.0/24 [120/1] via 192.168.123.3, 00:00:13, FastEthernet0/1

R1#show ip route static

S    192.168.1.0/24 is directly connected, Null0

S    192.168.2.0/24 [1/0] via 192.168.123.2

R2#show ip route rip

R    192.168.1.0/24 [120/1] via 192.168.123.1, 00:00:06, FastEthernet0/1

R    192.168.3.0/24 [120/1] via 192.168.123.3, 00:00:18, FastEthernet0/1

R3#show ip route rip

R    192.168.10.0/24 [120/1] via 192.168.123.2, 00:00:01, FastEthernet0/1

R    192.168.1.0/24 [120/1] via 192.168.123.1, 00:00:23, FastEthernet0/1

Tiếp theo, chúng ta kiểm tra rằng các client đã có thể đi đến nhau được:

Client 1 đã đi đến được Client 2 và Client3:

Client1#ping 192.168.2.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 84/112/140 ms

Client1#ping 192.168.3.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 92/119/160 ms

Client 2 và 3 đã đi đến được nhau:

Client2#ping 192.168.3.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 96/134/184 ms

Bảng NAT trên router R1:

R1#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- ---                ---                192.168.2.2        192.168.10.2

--- ---                ---                192.168.2.0        192.168.10.0

icmp 192.168.1.2:13    192.168.10.2:13    192.168.2.2:13     192.168.10.2:13

icmp 192.168.1.2:14    192.168.10.2:14    192.168.3.2:14     192.168.3.2:14

--- 192.168.1.2        192.168.10.2       ---                ---

--- 192.168.1.0        192.168.10.0       ---                ---

Như vậy, ta đã hoàn tất chuyển đổi cấu hình NAT ở bước 2 thành việc NAT chỉ phải tiến hành trên một router.

Trên đây, chúng ta đã cùng nhau khảo sát một ví dụ về cách sử dụng NAT để khắc phục vấn đề trùng lắp IP trên hệ thống mạng. Vấn đề trùng IP có thể xảy ra giống như trong kịch bản lab đã nêu hoặc khi có sự sáp nhập giữa hai công ty với hai hệ thống sử dụng nhiều dải IP trùng nhau. Trong bài viết tới, chúng ta sẽ cùng nhau tiếp tục khảo sát các kỹ thuật khác của NAT.

TRUNG TÂM WAREN