Tuesday, September 17, 2024

[Cisco] Policy Based Routing 2

-

Trong bài viết tuần trước, chúng ta đã cùng nhau trao đổi về kỹ thuật Policy Based  Routing (PBR). Trong bài viết tuần này, chúng ta sẽ cùng tiếp tục tìm hiểu về kỹ thuật  path – control quan trọng này. 

Như thường lệ, chúng ta sẽ cùng trao đổi vấn đề cần quan tâm thông qua một bài lab ví  dụ: 

Sơ đồ

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

Mô tả 

  • Bài lab này sử dụng lại sơ đồ của bải lab trong bài viết trước. Sơ đồ gồm 5 router  được đấu nối với nhau và được đặt IP theo quy hoạch IP được chỉ ra trên hình 1.  Các router trên sơ đồ cũng được cấu hình định tuyến OSPF Area 0 đảm bảo mọi  địa chỉ thấy nhau. 
  • Trên sơ đồ này, chúng ta tiếp tục cấu hình các kịch bản khác có sử dụng đến công  cụ PBR để thực hiện path – control.
  • Bạn đọc có thể sử dụng router thật hoặc giả lập trên GNS – 3 để thực hiện bài lab  này. 
  • Để tiện cho việc theo dõi, phần “Thực hiện” tiếp theo đây sẽ trình bày lại phần  cấu hình cơ bản cho sơ đồ lab mà ta đã thực hiện trong bài viết trước. 

Thực hiện 

Bước 1: Cấu hình cơ bản cho sơ đồ lab

  • Thực hiện đặ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.
  • Chạy định tuyến OSPF đảm bảo mọi địa chỉ thấy nhau. Câu hình để các loopback  được quảng bá đi đúng subnet của chúng. 

Cấu hình 

Trên R1: 

R1(config)#interface f0/0 
R1(config-if)#no shutdown 
R1(config-if)#ip address 192.168.12.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.15.1 255.255.255.0 
R1(config-if)#exit 

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

R1(config)#interface loopback 0 
R1(config-if)#ip address 192.168.1.1 255.255.255.0 
R1(config-if)#ip ospf network point-to-point  
R1(config-if)#exit 

R1(config)#router ospf 1 
R1(config-router)#network 192.168.1.1 0.0.0.0 area 0 
R1(config-router)#network 192.168.12.1 0.0.0.0 area 0 
R1(config-router)#network 192.168.13.1 0.0.0.0 area 0 
R1(config-router)#network 192.168.15.1 0.0.0.0 area 0 
R1(config-router)#exit

Trên R2:

R2(config)#interface f0/0 
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 f0/1 
R2(config-if)#no shutdown 
R2(config-if)#ip address 192.168.24.2 255.255.255.0 
R2(config-if)#exit

R2(config)#interface loopback 0 
R2(config-if)#ip address 192.168.2.1 255.255.255.0 
R2(config-if)#ip ospf network point-to-point  
R2(config-if)#exit 

R2(config)#router ospf 1 
R2(config-router)#network 192.168.2.1 0.0.0.0 area 0 
R2(config-router)#network 192.168.12.2 0.0.0.0 area 0 
R2(config-router)#network 192.168.2.2 0.0.0.0 area 0  
R2(config-router)#network 192.168.24.2 0.0.0.0 area 0 
R2(config-router)#exit

Trên R3

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

R3(config)#interface s0/0/0 
R3(config-if)#no shutdown  
R3(config-if)#ip address 192.168.13.3 255.255.255.0 
R3(config-if)#exit 

R3(config)#interface loopback 0 
R3(config-if)#ip address 192.168.3.1 255.255.255.0 
R3(config-if)#ip ospf network point-to-point  
R3(config-if)#exit 

R3(config)#router ospf 1 
R3(config-router)#network 192.168.3.1 0.0.0.0 area 0 
R3(config-router)#network 192.168.13.3 0.0.0.0 area 0 
R3(config-router)#network 192.168.13.3 0.0.0.0 area 0 
R3(config-router)#network 192.168.34.3 0.0.0.0 area 0 
R3(config-router)#exit

Trên R4:

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

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

R4(config)#interface loopback 0 
R4(config-if)#ip address 192.168.4.1 255.255.255.0 
R4(config-if)#ip ospf network point-to-point  
R4(config-if)#exit 

R4(config)#router ospf 1 
R4(config-router)#network 192.168.4.1 0.0.0.0 area 0 
R4(config-router)#network 192.168.24.4 0.0.0.0 area 0 
R4(config-router)#network 192.168.34.4 0.0.0.0 area 0 
R4(config-router)#exit

Trên R5:

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

R5(config)#interface loopback 0 
R5(config-if)#ip address 192.168.5.1 255.255.255.0 
R5(config-if)#ip ospf network point-to-point 
R5(config-if)#exit 

R5(config)#interface loopback 1 
R5(config-if)#ip address 192.168.55.1 255.255.255.0 
R5(config-if)#ip ospf network point-to-point  
R5(config-if)#exit 

R5(config)#router ospf 1  
R5(config-router)#network 192.168.5.1 0.0.0.0 area 0 
R5(config-router)#network 192.168.55.1 0.0.0.0 area 0 
R5(config-router)#network 192.168.15.5 0.0.0.0 area 0 
R5(config-router)#exit

Kiểm tra 

Ta kiểm tra kết quả cấu hình vừa thực hiện:

R1#show ip route ospf 
O 192.168.24.0/24 [110/2] via 192.168.12.2, 00:17:35, FastEthernet0/0 O 192.168.55.0/24 [110/2] via 192.168.15.5, 00:12:39, FastEthernet0/1 O 192.168.4.0/24 [110/3] via 192.168.12.2, 00:13:59, FastEthernet0/0 O 192.168.5.0/24 [110/2] via 192.168.15.5, 00:12:39, FastEthernet0/1 O 192.168.34.0/24 [110/3] via 192.168.12.2, 00:13:59, FastEthernet0/0 O 192.168.2.0/24 [110/2] via 192.168.12.2, 00:17:45, FastEthernet0/0 O 192.168.3.0/24 [110/4] via 192.168.12.2, 00:13:59, FastEthernet0/0 

R2#show ip route ospf 
O 192.168.13.0/24 [110/65] via 192.168.12.1, 00:17:08, FastEthernet0/0 O 192.168.15.0/24 [110/2] via 192.168.12.1, 00:17:51, FastEthernet0/0 O 192.168.55.0/24 [110/3] via 192.168.12.1, 00:12:47, FastEthernet0/0 O 192.168.4.0/24 [110/2] via 192.168.24.4, 00:14:08, FastEthernet0/1 O 192.168.5.0/24 [110/3] via 192.168.12.1, 00:12:47, FastEthernet0/0 O 192.168.34.0/24 [110/2] via 192.168.24.4, 00:14:08, FastEthernet0/1 O 192.168.1.0/24 [110/2] via 192.168.12.1, 00:17:51, FastEthernet0/0 O 192.168.3.0/24 [110/3] via 192.168.24.4, 00:14:08, FastEthernet0/1 

R3#show ip route ospf 
O 192.168.12.0/24 [110/3] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.15.0/24 [110/4] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.24.0/24 [110/2] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.55.0/24 [110/5] via 192.168.34.4, 00:12:50, FastEthernet0/1 O 192.168.4.0/24 [110/2] via 192.168.34.4, 00:14:11, FastEthernet0/1 
O 192.168.5.0/24 [110/5] via 192.168.34.4, 00:12:50, FastEthernet0/1 O 192.168.1.0/24 [110/4] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.2.0/24 [110/3] via 192.168.34.4, 00:14:11, FastEthernet0/1 

R4#show ip route ospf  
O 192.168.12.0/24 [110/2] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.13.0/24 [110/65] via 192.168.34.3, 00:14:07, FastEthernet0/1 O 192.168.15.0/24 [110/3] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.55.0/24 [110/4] via 192.168.24.2, 00:12:54, FastEthernet0/0 O 192.168.5.0/24 [110/4] via 192.168.24.2, 00:12:54, FastEthernet0/0
O 192.168.1.0/24 [110/3] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.2.0/24 [110/2] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.3.0/24 [110/2] via 192.168.34.3, 00:14:07, FastEthernet0/1 

R5#show ip route ospf 
O 192.168.12.0/24 [110/2] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.13.0/24 [110/65] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.24.0/24 [110/3] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.4.0/24 [110/4] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.34.0/24 [110/4] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.1.0/24 [110/2] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.2.0/24 [110/3] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.3.0/24 [110/5] via 192.168.15.1, 00:12:59, FastEthernet0/0

Kết quả show cho thấy tất cả các subnet trên sơ đồ đều đã hiển thị trong bảng định tuyến  của các router. 

Bước 2: Cấu hình Policy Based Routing 

Thực hiện cấu hình PBR trên R1 để bẻ đường đi của gói tin theo yêu cầu sau: 

  • Mọi lưu lượng web xuất phát từ mạng 192.168.5.0/24 đi đến server 192.168.4.1 tại subnet 192.168.4.0/24 và mọi lưu lượng telnet xuất phát từ mạng  192.168.55.0/24 đến router R4 đều phải được chuyển đi theo đường serial point – to – point nối giữa R1 và R3. 
  • Các lưu lượng còn lại được chuyển đi bình thường theo kết quả chỉ đường trong  bảng định tuyến. 

Cấu hình 

Trên R1:

R1(config)#access-list 100 permit tcp 192.168.5.0 0.0.0.255 host 192.168.4.1 eq  80  
R1(config)#access-list 100 permit tcp 192.168.55.0 0.0.0.255 host 192.168.4.1  eq 23  
R1(config)#access-list 100 permit tcp 192.168.55.0 0.0.0.255 host 192.168.24.4  eq 23 
R1(config)#access-list 100 permit tcp 192.168.55.0 0.0.0.255 host 192.168.34.4  eq 23 

R1(config)#route-map PBR permit 10 
R1(config-route-map)#match ip address 100 
R1(config-route-map)#set ip next-hop 192.168.13.3 
R1(config-route-map)#exit 

R1(config)#interface f0/1 
R1(config-if)#ip policy route-map PBR 
R1(config-if)#exit

Ghi chú 

Với PBR, ta có thể hiệu chỉnh đường đi không chỉ theo source của gói tin IP như đã thực  hiện trong bài lab trước mà còn có thể hiệu chỉnh đường đi cho các gói tin dựa vào các  đặc điểm khác của chúng như giao thức nền TCP, UDP, port được sử dụng,… Điều này  khiến cho PBR trở thành một công cụ rất mạnh cho hoạt động định tuyến của Cisco IOS,  giúp chúng ta có thể bẻ đường đi cho rất nhiều loại lưu lượng mà ta quan tâm.

Để có thể tác động lên đường đi của các loại lưu lượng khác nhau, chúng ta chỉ cần viết  access – list dạng mở rộng (extended) permit đúng loại lưu lượng cần tác động và viết  route – map tham chiếu đến access – list này. Như chúng ta đã biết, ACL dạng extended của Cisco IOS cho phép chúng ta lựa chọn được rất nhiều loại lưu lượng khác nhau nên  khi sử dụng cùng với route – map trong một cấu hình PBR, chúng ta có thể thực hiện  được các tác vụ bẻ đường rất đa dạng cho các loại lưu lượng mà ta cần thiết lập chính  sách về đường đi. 

Kiểm tra 

Ta bật debug trên R1 để quan sát hoạt động của PBR:

R1#debug ip policy 
Policy routing debugging is on

Thực hiện cấu hình Telnet và bật HTTP trên router R4 để kiểm tra:

R4(config)#line vty 0 4 
R4(config-line)#password cisco 
R4(config-line)#exit 

R4(config)#ip http server

Ta thực hiện telnet từ mạng 192.168.5.0/24 đến địa chỉ 192.168.4.1 bằng port 80 để giả  lập lưu lượng web đi từ mạng 192.168.5.0/24 đến địa chỉ này:

R5#telnet 192.168.4.1 80 /source-interface lo0 
Trying 192.168.4.1, 80 ... Open 

exit 
HTTP/1.1 400 Bad Request 
Date: Fri, 01 Mar 2002 00:37:07 GMT 
Server: cisco-IOS 
Accept-Ranges: none 

400 Bad Request 

[Connection to 192.168.4.1 closed by foreign host]

Kết quả debug trên R1:

Ta thấy lưu lượng web đi từ mạng 192.168.5.0/24 đến địa chỉ 192.168.4.1 đã được thực  hiện policy based routing. 

Tiếp theo, ta thực hiện telnet từ mạng 192.168.55.0/24 đến R4 (có thể chọn địa chỉ của  một trong 03 interface của R4):

R5#telnet 192.168.24.4 /source-interface lo1  
Trying 192.168.24.4 ... Open
User Access Verification 
Password:  
R4>

Kết quả debug trên R1:

Ta thấy lưu lượng telnet từ mạng 192.168.55.0/24 đi đến R4 đều đã được thực hiện  policy based routing. 

Bước 3: Local policy – based routing 

Thực hiện policy based routing trên R1 đảm bảo mọi lưu lượng xuất phát từ  loopback 0 mới tạo đi đến loopback 0 của R4 đều phải được chuyển hướng đi  theo cổng s0/0/0 của R1. 

Cấu hình 

Trên R1:

R1(config)#access-list 101 permit ip host 192.168.1.1 host 192.168.4.1 

R1(config)#route-map LOCAL_PBR permit 10 
R1(config-route-map)#match ip address 101 
R1(config-route-map)#set ip next-hop 192.168.13.3 
R1(config-route-map)#exit 

R1(config)#ip local policy route-map LOCAL_PBR

Ghi chú Câu lệnh “R(config-if)#ip policy route-map…” chỉ có tác dụng với lưu lượng đi  vào cổng và trung chuyển qua router, không có tác dụng với lưu lượng xuất phát từ chính  bản thân router. Để có thể sử dụng Policy Based Routing với lưu lượng xuất phát từ chính  bản thân router, chúng ta phải sử dụng một lệnh khác để áp policy: 

R(config)#ip local policy route-map Tên_route_map

Việc khai báo route – map để thực hiện chính sách bẻ đường đi cho dữ liệu được thực  hiện hoàn toàn giống như với khai báo route – map để áp lên cổng. 

Kiểm tra 

Ta thực hiện ping từ R1 để kiểm tra:

R1#ping 192.168.4.1 
Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 192.168.4.1, timeout is 2 seconds:
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/73/104 ms
R1# 
*Mar 1 00:57:49.779: IP: s=192.168.12.1 (local), d=192.168.4.1, len 100, policy rejected -- normal forwarding 
*Mar 1 00:57:49.867: IP: s=192.168.12.1 (local), d=192.168.4.1, len 100, policy rejected -- normal forwarding 
*Mar 1 00:57:49.927: IP: s=192.168.12.1 (local), d=192.168.4.1, len 100, policy rejected -- normal forwarding 
*Mar 1 00:57:50.031: IP: s=192.168.12.1 (local), d=192.168.4.1, len 100, policy rejected -- normal forwarding 
*Mar 1 00:57:50.083: IP: s=192.168.12.1 (local), d=192.168.4.1, len 100, policy rejected -- normal forwarding

Ta thấy, lưu lượng đi đến 192.168.4.1 không xuất phát từ loopback 0 mới tạo trên R1 sẽ  được forward bình thường theo kết quả trong bảng định tuyến. 

Tiếp theo, ta thực hiện ping đến 192.168.4.1 từ loopback 0:

Kết quả debug cho thấy lưu lượng xuất phát từ địa chỉ 192.168.1.1 đi đến 192.168.4.1 đã  được thực hiện policy – based routing đúng theo yêu cầu. 

Trên đây, chúng ta đã cùng thực hiện thêm một số yêu cầu với policy – based routing tiêp  theo bài lab đã thực hiện trong bài viết trước. Trong các bài viết tới, chúng ta sẽ tiếp tục  tìm hiểu về PBR. 

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