Bài viết chuyên đề

NAT Overload

20/01/2018 11:07:27

Bài số 4: Chuyên đề Network Address Translation

Tiếp theo chuỗi bài viết về NAT, trong bài viết này, chúng ta sẽ cùng nhau khảo sát về kỹ thuật NAT overload. Như thường lệ, việc khảo sát được tiến hành thông qua một bài lab ví dụ .

Sơ đồ

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

Mô tả

Trên hình 1 là mô hình lab mô phỏng một mạng doanh nghiệp có một đường truyền đi Internet. Trong đó:

  • R1, R2 là các router thuộc về mạng nội bộ của doanh nghiệp (mạng Private):
  • Router R2 đóng vai trò là router biên, thực hiện cung cấp đường ra Internet cho các thiết bị bên trong.
  • Router R1 sử dụng các sub – interface đấu nối đến các VLAN của mạng doanh nghiệp và thực hiện định tuyến giữa các VLAN; trong đó VLAN 10 là VLAN đặt server, các VLAN 20 và 30 là các VLAN người dùng.
  • Router Server được sử dụng để giả lập một server đặt tại VLAN 10, Server này sẽ được public lên môi trường Internet thông qua một IP Public được cấp bởi ISP.
  • Router ISP giả lập môi trường Internet và đóng vai trò là gateway của ISP đấu nối xuống mạng doanh nghiệp để cung cấp đường đi Internet; Loopback 0 được tạo thêm trên ISP để giả lập một subnet trên Internet.
  • Quy hoạch IP cho sơ đồ được chỉ ra như hình 1. Ngoài ra, ISP được cấu hình để rót về cho doanh nghiệp này một dải IP Public thuộc subnet 199.99.9.0/29 để phục vụ cho việc đi Internet của doanh nghiệp.

Trên mô hình lab này, chúng ta sẽ cùng nhau khảo sát việc sử dụng NAT overload để cung cấp việc đi Internet cho các user trên các VLAN, đồng thời thực hiện public server trên VLAN 10 lên Internet bằng Static NAT. Như vậy, các user sẽ đi Internet thông qua một số địa chỉ public được chỉ định và server sẽ được hosting lên mạng bằng một địa chỉ public tĩnh khác.

Thực hiện

Bước 1: Xây dựng mô hình ban đầu:

  • Cấu hình đặt các địa chỉ IP trên các kết nối giữa các router theo quy hoạch IP đã được chỉ ra.
  • R1 và R2 thực hiện chạy định tuyến EIGRP 100 đảm bảo mọi địa chỉ trong mạng thấy nhau. R2 cấu hình một default – route đi Internet và quảng bá default route này vào trong.
  • R1 tạo các sub – interface đấu nối đến các VLAN 10, 20, 30 và thực hiện đặt IP trên các sub – interface tương ứng như được chỉ ra trên hình 1.
  • Cấu hình router Server giả lập server của subnet 192.168.10.0/24 , nhận địa chỉ là 192.168.10.2.
  • Cấu hình router ISP rót về cho mạng doanh nghiệp range IP 199.99.9.0/29.

Cấu hình

Đầu tiên, ta đặt IP cho các các thiết bị:

R1(config)#int f0/0

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.10.1 255.255.255.0

R1(config-if)#exit

R1(config)#interface f0/0.20                   

R1(config-subif)#encapsulation dot1Q 20

R1(config-subif)#ip address 192.168.20.1 255.255.255.0

R1(config-subif)#exit

R1(config)#interface f0/0.30                   

R1(config-subif)#encapsulation dot1Q 30              

R1(config-subif)#ip address 192.168.30.1 255.255.255.0

R1(config-subif)#exit

R1(config)#int f0/1

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.12.1 255.255.255.252

R1(config-if)#exit

R2(config)#int f0/0

R2(config-if)#ip add 192.168.12.2 255.255.255.252

R2(config-if)#exit

R2(config)#int f0/1

R2(config-if)#ip address 200.0.0.1 255.255.255.252

R2(config-if)#exit

ISP(config)#interface f0/1

ISP(config-if)#no shutdown

ISP(config-if)#ip address 200.0.0.2 255.255.255.252

ISP(config-if)#exit

 

ISP(config)#interface loopback 0

ISP(config-if)#ip address 1.1.1.1 255.255.255.0

ISP(config-if)#exit

Tiếp theo, ta thực hiện chạy định tuyến EIGRP 100 trên các router R1 và R2 để đảm bảo các địa chỉ trên các mạng nội bộ thấy nhau và có thể đi được Internet:

R1(config)#router eigrp 100

R1(config-router)#no auto-summary

R1(config-router)#network 192.168.12.0

R1(config-router)#network 192.168.10.0

R1(config-router)#network 192.168.20.0

R1(config-router)#network 192.168.30.0

R1(config-router)#exit

R2(config)#ip route 0.0.0.0 0.0.0.0 200.0.0.2

R2(config)#router eigrp 100

R2(config-router)#no auto-summary

R2(config-router)#network 192.168.12.0

R2(config-router)#redistribute static

R2(config-router)#exit

Cấu hình router giả lập server của VLAN 10:

Server(config)#interface f0/0

Server(config-if)#no shutdown

Server(config-if)#ip address 192.168.10.2 255.255.255.0

Server(config-if)#exit

Server(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.1

Cấu hình ISP rót subnet 199.99.9.0/29 xuống cho doanh nghiệp:

ISP(config)#ip route 199.99.9.0 255.255.255.248 200.0.0.1

Khi một ISP rót một range IP nào đó cho doanh nghiệp, ISP sẽ đảm bảo về mặt định tuyến rằng mọi gói tin trên Internet đi đến range này sẽ được chuyển tới tay router biên của mạng doanh nghiệp. Trong trường hợp của bài lab này, chúng ta chỉ cần cấu hình một route tĩnh cho subnet 199.99.9.0/29 như ở trên để giả lập tình huống “rót IP public cho doanh nghiệp”.

Kiểm tra

Chúng ta cùng kiểm tra cấu hình ban đầu đã thực hiện.

Định tuyến nội bộ đã hội tụ:

R1#sh ip route eigrp 

D*EX 0.0.0.0/0 [170/307200] via 192.168.12.2, 00:01:09, FastEthernet0/1

R2#sh ip route eigrp

D    192.168.30.0/24 [90/307200] via 192.168.12.1, 00:00:10, FastEthernet0/0

D    192.168.10.0/24 [90/307200] via 192.168.12.1, 00:11:19, FastEthernet0/0

D    192.168.20.0/24 [90/307200] via 192.168.12.1, 00:00:12, FastEthernet0/0

R2 đã đi đến được các VLAN 10, 20 và 30:

R2#ping 192.168.10.2

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/97/128 ms

R2#ping 192.168.20.1

Type escape sequence to abort.

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

!!!!!

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

R2#ping 192.168.30.1

Type escape sequence to abort.

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

!!!!!

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

Bên ngoài vùng Public, các địa chỉ public đi đến được nhau:

R2#ping 1.1.1.1

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 12/41/80 ms

Bước 2: Public server 192.168.10.2 lên môi trường Internet

  • Thực hiện cấu hình trên R2 đảm bảo các user trên Internet có thể truy nhập đến Server bằng cách đi đến địa chỉ 199.99.9.2.

Cấu hình

Ta thực hiện cấu hình NAT trên router R2 để đáp ứng yêu cầu đặt ra:

R2(config)#ip nat inside source static 192.168.10.2 199.99.9.2

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

Để public một server nội bộ lên Internet, chúng ta thực hiện NAT tĩnh địa chỉ nội bộ của server này ở bên trong mạng thành một địa chỉ public tĩnh được cấp bởi ISP; trong bài lab này là 192.168.10.2 được NAT thành 199.99.9.2. Lúc này, các user trên Internet muốn đi đến server này sẽ thực hiện truy nhập đến địa chỉ public 199.99.9.2. Ta nói địa chỉ 199.99.9.2 là địa chỉ đại diện của server trên Internet. Các user trong mạng nội bộ vẫn thực hiện truy nhập đến server này bằng địa chỉ nội bộ 192.168.10.2.

Kỹ thuật Static NAT này đã được khảo sát chi tiết trong bài viết số 2 về chuyên đề NAT nên ta sẽ không phân tích kỹ hơn trong bài viết này. Việc public server bằng Static NAT được lặp lại trong bài lab này chỉ với mục đích làm phong phú thêm kịch bản lab. Chúng ta không khảo sát lại kỹ thuật Static NAT.

Kiểm tra

Sau khi cấu hình xong, chúng ta thực hiện một số thao tác kiểm tra.

Trước hết, chúng ta quan sát bảng NAT của router R2:

R2#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 199.99.9.2         192.168.10.2       ---                ---

Ta có thể từ một host bên ngoài ping đến được server bên trong thông qua IP đại diện 199.99.9.2:

ISP#ping 199.99.9.2

Type escape sequence to abort.

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

!!!!!

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

Server 192.168.10.2 cũng có thể đi Internet được bằng cách sử dụng địa chỉ public 199.99.9.2:

Server#ping 1.1.1.1

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 108/132/172 ms

Bước 3: NAT overload thành địa chỉ cổng outside

  • Cấu hình NAT để tất cả các địa chỉ còn lại trong mạng nội bộ có thể đi được Internet bằng cách sử dụng địa chỉ đấu nối trên cổng outside F0/1 của router biên R2.

Cấu hình

Ta cấu hình NAT overload trên R2 để thực hiện yêu cầu trên:

R2(config)#access-list 1 permit any

R2(config)#ip nat inside source list 1 interface f0/1 overload

Như đã trình bày trong bài viết lý thuyết tổng quan, NAT overload cho phép NAT nhiều địa chỉ bên trong thành một địa chỉ bên ngoài bằng cách sử dụng thêm thông số port trong thao tác NAT.  Do đó, ta còn gọi NAT overload là PAT (Port Address Translation). Trong ví dụ này, chúng ta thực hiện NAT toàn bộ các địa chỉ bên trong thành địa chỉ IP đấu nối trên cổng F0/1 của R2. Để mô tả “tất cả các địa chỉ bên trong”, chúng ta sử dụng một access – list permit tất cả (“access-list 1 permit any”). Tiếp theo, chúng ta chỉ việc yêu cầu router NAT ACL “tất cả” này thành địa chỉ cổng outside F0/1 của router (“ip nat inside source list 1 interface f0/1 overload”).

Kiểm tra

Ta thực hiện kiểm tra rằng các địa chỉ bên trong mạng nội bộ đã đi được Internet:

R1#ping 1.1.1.1 source 192.168.20.1

Type escape sequence to abort.

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

Packet sent with a source address of 192.168.20.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 48/65/80 ms

R1#ping 1.1.1.1 source 192.168.30.1

Type escape sequence to abort.

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

Packet sent with a source address of 192.168.30.1

!!!!!

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

R1#ping 1.1.1.1                   

Type escape sequence to abort.

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

!!!!!

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

Bảng NAT trên router R2 cho thấy rằng các địa chỉ nội bộ đã được NAT thành địa chỉ đấu nối:

R2#sh ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 199.99.9.2         192.168.10.2       ---                ---

icmp 200.0.0.1:9       192.168.12.1:9     1.1.1.1:9          1.1.1.1:9

icmp 200.0.0.1:7       192.168.20.1:7     1.1.1.1:7          1.1.1.1:7

icmp 200.0.0.1:8       192.168.30.1:8     1.1.1.1:8          1.1.1.1:8

Từ bảng NAT ta thấy, tuy tất cả các địa chỉ bên trong đều được NAT chung thành một địa chỉ đấu nối nhưng các session khác nhau được NAT sử dụng các port khác nhau nên chúng được phân biệt hoàn toàn và không ảnh hưởng đến nhau.

Ta cũng để ý rằng NAT overload không tạo ra các entry NAT non – extendable như với Dynamic NAT nên các host từ bên ngoài không thể khởi tạo kết nối đến các host bên trong mà chỉ có thể đi đến các host bên trong thông qua kết nối trả về cho các kết nối đã khởi tạo trước đó từ các host bên trong.

Bước 4: NAT overload với pool

Hiệu chỉnh lại cấu hình NAT overload đã thực hiện đảm bảo yêu cầu sau:

  • VLAN 20 sẽ đi Internet bằng địa chỉ 199.99.9.3 trong range IP được cấp bởi ISP.
  • VLAN 30 sẽ đi Internet bằng địa chỉ 199.99.9.4 trong range IP được cấp bởi ISP.
  • Các user khác vẫn tiếp tục đi Internet bằng địa chỉ trên cổng outside của R2.

Cấu hình

Trên R2:

R2(config)#ip nat pool VLAN20 199.99.9.3 199.99.9.3 prefix-length 24

R2(config)#ip nat pool VLAN30 199.99.9.4 199.99.9.4 prefix-length 24

R2(config)#no access-list 1

R2(config)#access-list 1 deny 192.168.20.0 0.0.0.255

R2(config)#access-list 1 deny 192.168.30.0 0.0.0.255

R2(config)#access-list 1 permit any

R2(config)#access-list 20 permit 192.168.20.0 0.0.0.255

R2(config)#ip nat inside source list 20 pool VLAN20 overload

R2(config)#access-list 30 permit 192.168.30.0 0.0.0.255

R2(config)#ip nat inside source list 30 pool VLAN30 overload  

Một yêu cầu đặt ra khi doanh nghiệp có nhiều địa chỉ IP public được cấp phát là họ muốn sử dụng các IP public khác nhau cho các subnet khác nhau ở bên trong đi Internet thay vì chỉ sử dụng một địa chỉ bên ngoài cho tất cả các địa chỉ bên trong như đã thực hiện ở bước 3. Điều này giúp doanh nghiệp tận dụng được tất cả các IP được cấp phát cũng như có thể thực hiện tốt hơn các vấn đề về quản lý và bảo mật.

Giải pháp được sử dụng cho trường hợp này là ta có thể chia range IP public được cấp thành nhiều pool và thực hiện NAT các subnet nội bộ thành các pool tương ứng, từ đó mỗi subnet sẽ đi Internet bằng cách sử dụng IP public trong pool riêng của mình. Trong ví dụ đang xét, chúng ta tạo pool VLAN 20 chứa địa chỉ 199.99.9.3 dành riêng cho subnet của VLAN 20 và pool VLAN 30 chứa địa chỉ 199.99.9.4 dành riêng cho subnet của VLAN 30. Kế tiếp, chúng ta viết các ACL 20 và 30 đề cập đến các subnet IP của VLAN 20 và 30 rồi thực hiện NAT các ACL này thành các pool tương ứng đã khai báo. Điểm khác biệt so với NAT pool của cấu hình Dynamic NAT one – to – one là trong trường hợp này ta dùng thêm tùy chọn “overload” cho các câu lệnh NAT để cho phép NAT một ACL nhiều địa chỉ thành một pool ít địa chỉ hơn.

Kiểm tra

Ta thực hiện kiểm tra cấu hình NAT đã thực hiện.

Thực hiện đi Internet từ VLAN 20:

R1#ping 1.1.1.1 source 192.168.20.1

Type escape sequence to abort.

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

Packet sent with a source address of 192.168.20.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/72/88 ms

Quan sát bảng NAT trên R2:

R2#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 199.99.9.2         192.168.10.2       ---                ---

icmp 199.99.9.3:2      192.168.20.1:2     1.1.1.1:2          1.1.1.1:2

Ta thấy rằng VLAN 20 đã sử dụng địa chỉ 199.99.9.3 để đi Internet.

Ta tiếp tục kiểm tra với việc đi Internet của VLAN 30:

R1#ping 1.1.1.1 source 192.168.30.1

 

Type escape sequence to abort.

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

Packet sent with a source address of 192.168.30.1

!!!!!

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

R2#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 199.99.9.2         192.168.10.2       ---                ---

icmp 199.99.9.4:3      192.168.30.1:3     1.1.1.1:3          1.1.1.1:3

Ta thấy rằng VLAN 30 đã sử dụng địa chỉ 199.99.9.4 đúng theo yêu cầu đặt ra.

Ta cũng thử kiểm tra rằng các IP thuộc các subnet khác vẫn đi Internet bằng cách sử dụng IP public trên cổng outside:

R1#ping 1.1.1.1

Type escape sequence to abort.

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

!!!!!

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

R2#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- 199.99.9.2         192.168.10.2       ---                ---

icmp 200.0.0.1:4       192.168.12.1:4     1.1.1.1:4          1.1.1.1:4

Như vậy, việc đi Internet của các user trong mạng nội bộ đã diễn ra đúng theo yêu cầu đặt ra.

Trên đây, chúng ta đã thực hiện xong một kịch bản lab ví dụ về triển khai NAT trong mạng doanh nghiệp; trong đó, server của doanh nghiệp được public lên Internet bằng Static NAT còn các user còn lại đi Internet bằng cách sử dụng chung một IP Public thông qua NAT overload. Ta cũng thực hiện giải pháp chia tải trên các IP Public thông qua NAT overload các pool khác nhau cho nhiều subnet nội bộ khác nhau. Trong các bài viết sắp tới, chúng ta sẽ tiếp tục tìm hiểu một số kỹ thuật khác thường được sử dụng trong NAT.

TRUNG TÂM WAREN