Tuesday, September 10, 2024

[Cisco] NAT với Route-map

-

Các kỹ thuật NAT được khảo sát trong bài viết trước đều được cấu hình tham khảo đến  các ACL để chỉ ra loại lưu lượng nào trong mạng Private sẽ được tham gia NAT. Trong  bài viết tuần này, chúng ta sẽ cùng nhau trao đổi về việc sử dụng route – map để chỉ ra  loại lưu lượng sẽ được tham gia NAT. Sử dụng route – map sẽ cho phép chỉ ra thông tin  chi tiết hơn so với ACL, và trong nhiều trường hợp, ta không thể dùng ACL mà chỉ có  thể dùng route – map để thực hiện được yêu cầu đặt ra. Như thường lệ, chúng ta cùng  khảo sát chủ đề của bài viết thông qua một ví dụ lab. 

Sơ đồ

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

Mô tả 

Trên sơ đồ hình 1 là một phần của một mạng doanh nghiệp đang được đấu nối đi Internet.  Để đảm bảo về vấn đề dự phòng đường truyền đi Internet, công ty thực hiện thuê hai  đường Internet từ ISP1 và ISP2; trong đó, đường đi chính là theo ISP1, đường đi theo  ISP2 chỉ sử dụng để dự phòng.  

Khi thuê hai đường leased – line Internet này, công ty cũng được các ISP1 và ISP2 cấp  cho hai địa chỉ public là 200.0.1.1/32 và 200.0.2.1/32. Đội ngũ quản trị mạng của công ty  quyết định sử dụng hai IP public này để đại diện cho Server 192.168.1.2 trên môi trường  Internet. Địa chỉ 200.0.1.1 sẽ được sử dụng chính thức trong điều kiện bình thường và địa chỉ 200.0.2.1 sẽ chỉ được sử dụng để đại diện cho Server khi đường Internet nối đến ISP1  bị down. 

Tất cả các user còn lại trong mạng nội bộ sẽ đi Internet bằng địa chỉ IP đấu nối lên ISP1  trong điều kiện bình thường và sẽ chuyển sang sử dụng địa chỉ IP đấu nối lên ISP2 để đi  Internet khi đường truyền nối lên ISP1 bị down. 

Bài lab này sẽ thực hiện cấu hình trên các router để thực hiện được yêu cầu về dự phòng  Internet đã nêu ra ở trên. 

Thực hiện 

Bước 1: Cấu hình ban đầu cho bài lab 

  • Cấu hình đặt IP cho các thiết bị như được chỉ ra trên hình 1.
  • Chạy định tuyến EIGRP trên mạng Private đảm bảo mọi địa chỉ trong mạng nội  bộ thấy nhau. 
  • Cấu hình router Server giả lập một server trên mạng 192.168.1.0/24. ∙ Cấu hình các router public ISP đảm bảo mọi địa chỉ đấu nối của vùng public thấy  nhau. 
  • Hai router ISP1 và ISP2 thực hiện cấp IP public về cho R2 hai địa chỉ như được  chỉ ra trên hình 1. 

Cấu hình 

Đặt IP trên các thiết bị:

R1(config)#interface f0/0 
R1(config-if)#no shutdown  
R1(config-if)#ip address 192.168.1.1 255.255.255.0 
R1(config-if)#exit 

R1(config)#interface f0/1 
R1(config-if)#no shutdown  
R1(config-if)#ip address 192.168.12.1 255.255.255.0 
R1(config-if)#exit 

R2(config)#interface f0/1 
R2(config-if)#no shutdown  
R2(config-if)#ip address 192.168.12.2 255.255.255.0 
R2(config-if)#exit 

R2(config)#interface s0/0/0 
R2(config-if)#no shutdown  
R2(config-if)#ip address 100.1.1.1 255.255.255.252 
R2(config-if)#exit 

R2(config)#interface s0/1/0 
R2(config-if)#no shutdown  
R2(config-if)#ip address 100.1.2.1 255.255.255.252 
R2(config-if)#exit 

ISP1(config)#interface s0/0/0 
ISP1(config-if)#no shutdown  
ISP1(config-if)#ip address 100.1.1.2 255.255.255.252 
ISP1(config-if)#exit 

ISP1(config)#interface s0/1/0 
ISP1(config-if)#no shutdown 
ISP1(config-if)#ip address 100.1.12.1 255.255.255.252 
ISP1(config-if)#exit 

ISP2(config)#interface s0/0/0 
ISP2(config-if)#no shutdown  
ISP2(config-if)#ip address 100.1.2.2 255.255.255.252 
ISP2(config-if)#exit 

ISP2(config)#interface s0/1/0 
ISP2(config-if)#no shutdown  
ISP2(config-if)#ip address 100.1.12.2 255.255.255.252 
ISP2(config-if)#exit

Cấu hình router Server:

Server(config)#interface f0/0 
Server(config-if)#no shutdown  
Server(config-if)#ip address 192.168.1.2 255.255.255.0 
Server(config-if)#exit 

Server(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1

Chạy định tuyến trong mạng nội bộ:

R1(config)#router eigrp 100 
R1(config-router)#no auto-summary  
R1(config-router)#network 192.168.1.0 
R1(config-router)#network 192.168.12.0 
R1(config-router)#exit 

R2(config)#router eigrp 100 
R2(config-router)#no auto-summary  
R2(config-router)#network 192.168.12.0 
R2(config-router)#exit

Cấu hình các router ISP cấp IP cho khách hàng:

ISP1(config)#ip route 200.0.1.1 255.255.255.255 s0/0/0 
ISP2(config)#ip route 200.0.2.1 255.255.255.255 s0/0/0

Cấu hình định tuyến trên các router của vùng Public để đảm bảo các địa chỉ trên vùng  Public thấy nhau. Để đơn giản, ta chọn phương thức định tuyến tĩnh.

ISP1(config)#ip route 100.1.2.0 255.255.255.252 s0/1/0 
ISP1(config)#ip route 200.0.2.1 255.255.255.255 s0/1/0 

ISP2(config)#ip route 100.1.1.0 255.255.255.252 s0/1/0 
ISP2(config)#ip route 200.0.1.1 255.255.255.255 s0/1/0

Router R2 cần phải chỉ default – route về các ISP. Để đảm bảo mạng nội bộ luôn chọn  đường đi Internet qua ISP1, ta chọn AD cho default – route theo hướng ISP1 thấp hơn  AD của default – route theo hướng ISP2. Sau khi cấu hình xong default – route, ta thực  hiện quảng bá default – route này vào bên trong để các thiết bị bên trong có thể đi được  Internet:

R2(config)#ip route 0.0.0.0 0.0.0.0 s0/0/0 5 
R2(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0 10 
R2(config)#router eigrp 100 
R2(config-router)#redistribute static 

Kiểm tra 

Các router nội bộ đã hội tụ định tuyến:

R1#show ip route eigrp 
D*EX 0.0.0.0/0 [170/2195456] via 192.168.12.2, 00:01:49, FastEthernet0/1 

R2#show ip route eigrp 
D 192.168.1.0/24 [90/307200] via 192.168.12.1, 00:18:47, FastEthernet0/1

R2 đã đi đến được các mạng thuộc R1:

R2#ping 192.168.12.1 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/43/60 ms Success rate is 80 percent (4/5), round-trip min/avg/max = 60/65/72 ms 

R2#ping 192.168.1.2 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/69/84 ms

Các địa chỉ public đã đi đến nhau được:

R2#ping 100.1.1.2 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 100.1.1.2, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/40/80 ms
 
R2#ping 100.1.2.2 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 100.1.2.2, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/37/64 ms 

R2#ping 100.1.12.1 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 100.1.12.1, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/54/128 ms 

R2#ping 100.1.12.2 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/109/144 ms
 
ISP1#ping 100.1.12.2 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/39/64 ms

Đến đây, chúng ta đã thực hiện xong cấu hình ban đầu cho bài lab.

Bước 2: Cấu hình NAT tĩnh cho Server 

  • Cấu hình NAT tĩnh địa chỉ của Server là 192.168.1.2 thành hai địa chỉ 200.0.1.1 và 200.0.2.1 được các ISP cấp phát. 
  • Trong điều kiện bình thường, Server đi Internet bằng địa chỉ 200.0.1.1. Khi đường  nối đến ISP1 down, Server sẽ đi Internet bằng địa chỉ 200.0.2.1. 

Cấu hình 

Với yêu cầu được đặt ra, ta phải thực hiện NAT tĩnh một địa chỉ Inside local thành hai địa  chỉ Inside global. Ta thử thực hiện cấu hình hai lệnh NAT tĩnh để NAT một địa chỉ bên  trong thành hai địa chỉ bên ngoài theo yêu cầu ở trên:

R2(config)#interface f0/1
R2(config-if)#ip nat inside
R2(config-if)#exit

R2(config)#interface s0/0/0
R2(config-if)#ip nat outside
R2(config-if)#exit

R2(config)#interface s0/1/0
R2(config-if)#ip nat outside
R2(config-if)#exit

R2(config)#ip nat inside source static 192.168.1.2 200.0.1.1
R2(config)#ip nat inside source static 192.168.1.2 200.0.2.1
% 192.168.1.2 already mapped (192.168.1.2 -> 200.0.1.1)

Khi ta thực hiện hai câu lệnh NAT, thông báo lỗi hiện ra cho biết rằng 192.168.1.2 đã  được NAT thành 200.0.1.1 và không thể NAT thành địa chỉ khác được nữa.

Kết quả show bảng NAT chỉ ra rằng chỉ có một entry NAT tĩnh được chấp nhận. 

Như vậy ta thấy rằng sử dụng phương pháp NAT tĩnh như đã làm trước đây không đáp  ứng được yêu cầu đặt ra.  

Để giải quyết được vấn đề này, chúng ta phải sử dụng NAT kèm thêm route – map. Cấu  hình ở trên được hiệu chỉnh lại như sau:

R2(config)#no ip nat inside source static 192.168.1.2 200.0.1.1

R2(config)#route-map TO_ISP1
R2(config-route-map)#match interface s0/0/0
R2(config-route-map)#exit

R2(config)#route-map TO_ISP2
R2(config-route-map)#match interface s0/1/0
R2(config-route-map)#exit

R2(config)#ip nat inside source static 192.168.1.2 200.0.1.1 route-map TO_ISP1
R2(config)#ip nat inside source static 192.168.1.2 200.0.2.1 route-map TO_ISP2

Route – map được tham chiếu trong câu lệnh NAT đã giúp phân biệt hai mệnh đề NAT cùng một địa chỉ inside local, do đó cả hai lệnh cấu hình NAT tĩnh đã được IOS chấp  nhận. 

Kiểm tra 

Chúng ta kiểm tra bảng NAT để xác nhận rằng cả hai mệnh đề NAT đã được cài vào  bảng NAT:

Ta thấy một địa chỉ Inside local đã được NAT thành hai địa chỉ Inside global.
Tiếp theo ta kiểm tra tính dự phòng của cấu hình NAT:
Bật debug trên R2:

R2#debug ip nat
IP NAT debugging is on

Từ Server, ta thực hiện ping đến một địa chỉ public bên ngoài, ví dụ: 100.1.12.2.

Server#ping 100.1.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 128/172/212 ms

Kết quả debug trên R2 cho thấy địa chỉ của Server đã được NAT thành địa chỉ Public được cấp bởi ISP1:

*Mar 1 01:41:47.543: NAT*: s=192.168.1.2->200.0.1.1, d=100.1.12.2 [5]
*Mar 1 01:41:47.687: NAT*: s=100.1.12.2, d=200.0.1.1->192.168.1.2 [5]

Bảng NAT của R2:

Trên R2, ta thử shutdown cổng nối lên ISP1 để giả lập tình huống kết nối này bị down:

R2(config)#interface s0/0/0
R2(config-if)#shutdown
R2(config-if)#exit
R2(config)#
*Mar 1 01:49:01.559: %LINK-5-CHANGED: Interface Serial0/0/0, changed
state to administratively down
*Mar 1 01:49:02.559: %LINEPROTO-5-UPDOWN: Line protocol on Interface
Serial0/0/0, changed state to down

Lúc này R2 đã chọn lại default – route theo hướng ISP2:

R2#show ip route static
S*     0.0.0.0/0 is directly connected, Serial0/1/0

Như vậy, khi đường chính down, các lưu lượng sẽ được lái qua đường dự phòng. Ta cùng kiểm tra hoạt động dự phòng của NAT:

Server#ping 100.1.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 96/112/156 ms

Kết quả debug trên R2:

*Mar 1 01:53:02.395: NAT*: s=192.168.1.2->200.0.2.1, d=100.1.12.2 [15]
*Mar 1 01:53:02.427: NAT*: s=100.1.12.2, d=200.0.2.1->192.168.1.2 [15]

Ta thấy, lúc này địa chỉ của Server đã được chuyển đổi thành 200.0.2.1 là địa chỉ được cấp bởi ISP2.
Bảng NAT trên R2:

Ta cho cổng chính đi Internet up trở lại:

R2(config)#interface s0/0/0
R2(config-if)#no shutdown
*Mar 1 01:58:20.463: %SYS-5-CONFIG_I: Configured from console by console
*Mar 1 01:58:21.227: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0, changed state to up

Lúc này, lưu lượng đi Internet từ Server sẽ chuyển lại theo hướng ISP1 và được NAT thành địa chỉ do ISP1 cung cấp:

Như vậy, hoạt động public lên Internet của Server đã được đảm bảo tính dự phòng qua hai đường truyền nối lên hai ISP khác nhau.

Bước 3: Cấu hình NAT overload cho các user khác 

Cấu hình NAT overload đảm bảo cho các user khác đi Internet. Các user đi  Internet bằng cách sử dụng địa chỉ đấu nối trên các cổng của R2 lên các ISP. ∙ Đảm bảo rằng trong điều kiện bình thường, các user đi Internet bằng cách NAT  overload thành địa chỉ public đấu nối lên ISP1. Khi đường chính đi Internet down,  các user sẽ được NAT thành địa chỉ đấu nối của R2 lên ISP2 để đi Internet. 

Cấu hình 

Như thường lệ, với trường hợp này, chúng ta viết một ACL bao gồm địa chỉ của tất cả  các user cần đi Internet rồi NAT overload ACL này thành địa chỉ đấu nối lên ISP của  router: 

R2(config)#access-list 1 deny 192.168.1.2 
R2(config)#access-list 1 permit any 
R2(config)#ip nat inside source list 1 interface s0/0/0 overload R2(config)#ip nat inside source list 1 interface s0/1/0 overload

Để thực hiện dự phòng, ta đã NAT ACL 1 thành địa chỉ đấu nối trên hai cổng S0/0/0 và  S0/1/0. Tuy nhiên vì ta NAT cùng một list 1 thành hai cổng nên Cisco IOS sẽ chỉ giữ lại  câu lệnh được khai báo sau:

R2#show run | inc ip nat
ip nat inside
ip nat outside
ip nat outside
ip nat inside source list 1 interface Serial0/1/0 overload
ip nat inside source static 192.168.1.2 200.0.1.1 route-map TO_ISP1
ip nat inside source static 192.168.1.2 200.0.2.1 route-map TO_ISP2
R2#

Như vậy, nếu làm theo cách thức NAT overload bình thường chỉ tham chiếu đến ACL, ta  không thể thực hiện dự phòng được. Tương tự như đã thực hiện ở bước 2, chúng ta phải  tham chiếu thêm route – map trong các câu lệnh NAT để có thể có được cùng lúc hai câu  lệnh NAT và từ đó thực hiện được thao tác dự phòng.

R2(config)#route-map LINK1
R2(config-route-map)#match ip address 1
R2(config-route-map)#match interface s0/0/0
R2(config-route-map)#exit

R2(config)#route-map LINK2
R2(config-route-map)#match ip address 1
R2(config-route-map)#match interface s0/1/0
R2(config-route-map)#exit

R2(config)#no ip nat inside source list 1 interface s0/1/0 overload
R2(config)#ip nat inside source route-map LINK1 interface s0/0/0 overload
R2(config)#ip nat inside source route-map LINK2 interface s0/1/0 overload

Với các route – map LINK1 và LINK2, các lưu lượng đi Internet đã được phân biệt dựa  trên thông số output interface nên cả hai mệnh đề NAT đều được IOS giữ lại. 

Tiếp theo, ta thực hiện các thao tác kiểm tra.

Kiểm tra 

Bật debug trên router R2:

R2#debug ip nat 
IP NAT debugging is on

Từ R1 thực hiện đi Internet:

R1#ping 100.1.12.2 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds: !!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/118/156 ms

Kết quả debug trên R2:

*Mar 1 02:42:37.959: NAT*: s=192.168.12.1->100.1.1.1, d=100.1.12.2 [0]
*Mar 1 02:42:38.051: NAT*: s=100.1.12.2, d=100.1.1.1->192.168.12.1 [0]

Ta thấy rằng địa chỉ của R1 (192.168.12.1) đã được NAT thành địa chỉ cổng đấu nối của  R2 ISP1. 

Bảng NAT của R2:

Tương tự như trên, ta kiểm tra khả năng dự phòng bằng cách shutdown cổng S0/0/0 của  R2 đấu lên ISP1:

R2(config)#interface s0/0/0
R2(config-if)#shutdown
R2(config-if)#
*Mar 1 02:47:19.287: %LINK-5-CHANGED: Interface Serial0/0/0, changed state to administratively down
*Mar 1 02:47:20.287: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to down

Sau khi shutdown cổng, chúng ta thực hiện ping đi Internet lại từ R1:

R1#ping 100.1.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/69/96 ms

R1 vẫn đi được Internet chứng tỏ rằng dự phòng đã được thực hiện. Ta kiểm tra kết quả debug trên R2:

*Mar 1 02:48:21.195: NAT*: s=192.168.12.1->100.1.2.1, d=100.1.12.2 [10]
*Mar 1 02:48:21.259: NAT*: s=100.1.12.2, d=100.1.2.1->192.168.12.1 [10]

Ta thấy địa chỉ của R1 đã được NAT thành địa chỉ 100.1.2.1 của cổng đấu nối từ R2 lên ISP2.
Bảng NAT trên R2:

Ta mở lại cổng S0/0/0 của R2 để kiểm tra rằng các user sẽ đi Internet theo đường ISP1 và NAT thành địa chỉ đấu nối với ISP1:

R2(config)#interface s0/0/0
R2(config-if)#no shutdown
R2(config-if)#
*Mar 1 03:05:52.959: %LINK-3-UPDOWN: Interface Serial2/0, changed state to up
*Mar 1 03:05:53.963: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0, changed state to up

Từ R1 thực hiện ping đi Internet:

R1#ping 100.1.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/128/156 ms

Kết quả debug và bảng NAT trên R2:

Ta thấy rằng các user đã chuyển qua đi Internet lại theo đường chính và được NAT thành địa chỉ đấu nối từ R2 lên ISP1, đúng như yêu cầu đặt ra. 

Trên đây, chúng ta đã cùng nhau khảo sát cách thực hiện NAT có tham chiếu đến route – map để thực hiện thao tác dự phòng khi router biên có nhiều đường đấu nối lên các ISP  khác nhau. Bài viết này đã kết thúc chuỗi bài viết về chuyên đề NAT đã được trình bày  trong thời gian gần đây trên trang của NTPS.  

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