Thursday, January 23, 2025

[Cisco] NAT Overload

-

Tiếp theo chuỗi bài viết về NAT, trong bài viết tuần 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:

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:

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:

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

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 

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. 

Cảm ơn các bạn! 

Hẹn gặp lại các bạn trong các bài viết tiếp theo!

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories