CISCO 策略路由 PBR (Policy Base On Route) 详解

文章目录

      • 1. 什么是策略路由
      • 2. 案例研究
        • 1. 拓扑及需求
        • 2. 设备配置
        • 3. 测试结果
      • 3. 深入研究
        • 1. route-map permit 空策略
        • 2. route-map deny 空语句
        • 3. route-map permit + ACL deny
        • 4. route-map permit + ACL permit
        • 5. route-map deny + ACL deny
        • 4. route-map deny + ACL permit

1. 什么是策略路由

Cisco中策略路由是在接口上通过配置route-map入方向的数据包进行筛选,将符合规则的数据包转发到特定的下一跳地址。从而实现灵活的路径选择,通常在特殊场景中使用;与本地路由表相比,策略路由更优先,如果策略路由匹配失败,则再查找本地路由,如果本地路由未匹配,则丢弃报文;
策略路由对数据包的匹配可以基于源IP源和目的IP端口号的自由组合。要掌握策略路由,需要记住以下几点:

  1. route-map只对入方向流量生效;
  2. 使用access-list来匹配数据报文(标准ACL和扩展ACL均可)
  3. ACLpermit表示符合规则的数据报文在当前route-map的语句中进行转发;
  4. ACLDeny表示符合规则的数据报文跳出当前route-map语句,从下一条route-map语句开始逐条匹配直到匹配成功,若整个route-map均未匹配,则跳出route-map由本地路由转发;
  5. route-map xx permit 表示如果数据包匹配该语句下的规则,则执行对应的动作;如未匹配,则扫描下一个route-map xx 语句
  6. route-map xx deny 表格如果数据包匹配该语句下的规则,则跳出策略路由执行路由表转发。
  7. route-map permit 语句没有set语句,默认动作跳出route-map,执行本地转发
  8. route-map permit 语句默认 match all 并进行本地路由转发
  9. 空**route-map deny **语句默认 match all 并进行本地路由转发

2. 案例研究

1. 拓扑及需求

拓扑详见下图,需求如下:

  1. 所有主机网段及未来扩展网段默认访问 R2的换回口 2.2.2.2
  2. 主机192.168.1.1 可以访问 R3和R5的环回口 3.3.3.3和5.5.5.5,不能方案R4的环回口4.4.4.4
  3. 主机192.168.1.2 可以访问R4和R5的环回口4.4.4.4 和 5.5.5.5, 不能访问R3的环回口3.3.3.3

以上需求只能通过PBR实现,不能配置任何其他路由。
CISCO 策略路由 PBR (Policy Base On Route) 详解_第1张图片

2. 设备配置

网络寻址如上图所示, R2、R3、R4、R5路由配置如下:用于给主机回包。

ip route 192.168.1.0 255.255.255.0 12.1.1.1				//R2路由配置
ip route 192.168.1.0 255.255.255.0 13.1.1.1				//R3路由配置
ip route 192.168.1.0 255.255.255.0 14.1.1.1				//R4路由配置
ip route 192.168.1.0 255.255.255.0 15.1.1.1				//R5路由配置

R1 PBR配置:

#只允许192.168.1.1到3.3.3.3
access-list 2003 deny   ip host 192.168.1.2 host 3.3.3.3
access-list 2003 permit ip host 192.168.1.1 host 3.3.3.3

#只允许192.168.1.2到4.4.4.4
access-list 2004 deny   ip host 192.168.1.1 host 4.4.4.4
access-list 2004 permit ip host 192.168.1.2 host 4.4.4.4

#允许192.168.1.1和192.168.1.2 到5.5.5.5
access-list 2006 permit ip host 192.168.1.1 host 5.5.5.5
access-list 2006 permit ip host 192.168.1.2 host 5.5.5.5
!
route-map pbr permit 32
 match ip address 2003
 set ip next-hop 13.1.1.2
!
route-map pbr permit 42
 match ip address 2004
 set ip next-hop 14.1.1.2
!
route-map pbr permit 52
 match ip address 2006
 set ip next-hop 15.1.1.2
!
route-map pbr permit 65535
 set ip default next-hop 12.1.1.2

3. 测试结果

主机192.168.1.1 测试结果:
CISCO 策略路由 PBR (Policy Base On Route) 详解_第2张图片

主机192.168.1.2 测试结果:
CISCO 策略路由 PBR (Policy Base On Route) 详解_第3张图片

3. 深入研究

1. route-map permit 空策略

在上面的配置中 我们新增一条语句route-map pbr permit 35:完整代码如下:

route-map pbr permit 32
 match ip address 2003
 set ip next-hop 13.1.1.2
!
route-map pbr permit 35           
!
route-map pbr permit 42
 match ip address 2004
 set ip next-hop 14.1.1.2
!
route-map pbr permit 52
 match ip address 2006
 set ip next-hop 15.1.1.2
!
route-map pbr permit 65535
 set ip default next-hop 12.1.1.2

此时测试结果如下:

主机 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5
192.168.1.1 不通 不通 不通
192.168.1.2 不通 不通 不通 不通

为什么到2.2.2.2都不通了?
因为到2.2.2.2之前是因为匹配了route-map pbr permit 65535才通的。下载在编号为35的空语句将所有数据拦截跳出route-map转发进行本地转发了,故35之后的语句都不执行,所以不通了。如果在本地路由加去往2.2.2.2的路由,则能通
此例想说明route-map permit空语句默认匹配all,默认行为跳出route-map

2. route-map deny 空语句

route-map pbr permit 35修改为route-map pbr deny 35,测试结果为

主机 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5
192.168.1.1 不通 不通 不通
192.168.1.2 不通 不通 不通 不通

此时在R1上加一条默认路由到12.1.1.2,如下:

R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

在添加路由后发现192.168.1.1 能ping 通2.2.2.2,通过这个例子想说明 route-map deny 语句将数据弹出route-map,转为本地路由表转发,故只要本地有路由即能通信

3. route-map permit + ACL deny

route-map pbr permit 35下匹配acl2005,ACL为deny,配置如下:

access-list 2005 deny ip 192.168.0.0 0.0.255.255 any

route-map pbr permit 32
 match ip address 2003
!
route-map pbr permit 35
 match ip address 2005
!
route-map pbr permit 42
 match ip address 2004
 set ip next-hop 14.1.1.2
!
route-map pbr permit 52
 match ip address 2006
 set ip next-hop 15.1.1.2
!
route-map pbr permit 65535
 set ip default next-hop 12.1.1.2,

ping测试结果与第二部分案例研究一致,通过该例子想表示当ACL为deny时,将跳出当前route-map语句,即route-map pbr permit 35语句不能执行,执行其他route-map语句检测

4. route-map permit + ACL permit

route-map pbr permit 35下匹配acl2005,ACL为permit,配置如下:

access-list 2005 permit ip 192.168.0.0 0.0.255.255 any

route-map pbr permit 32
 match ip address 2003
 set ip next-hop 13.1.1.2
!
route-map pbr permit 35
 match ip address 2005
 set ip next-hop 13.1.1.2
!
route-map pbr permit 42
 match ip address 2004
 set ip next-hop 14.1.1.2
!
route-map pbr permit 52
 match ip address 2006
 set ip next-hop 15.1.1.2
!
route-map pbr permit 65535
 set ip default next-hop 12.1.1.2,

192.168.1.1 ping 2.2.2.2 不通,被送到13.1.1.2;如果将set ip next-hop 13.1.1.2拿掉(即没有set语句有match语句,)则数据跳出route-map进行本地转发

5. route-map deny + ACL deny

route-map35 修改为deny,ALC为deny:

access-list 2005 deny   ip 192.168.0.0 0.0.255.255 any
!
route-map pbr permit 32
 match ip address 2003
 set ip next-hop 13.1.1.2
!
route-map pbr deny 35
 match ip address 2005
!
route-map pbr permit 42
 match ip address 2004
 set ip next-hop 14.1.1.2
!
route-map pbr permit 52
 match ip address 2006
 set ip next-hop 15.1.1.2
!
route-map pbr permit 65535
 set ip default next-hop 12.1.1.2

ping测试结果与第二部分案例研究一致,通过该例子想表示当ACL为deny时,将跳出当前route-map语句(故route-map deny语句执行前就被跳出了),执行其他route-map语句检测

4. route-map deny + ACL permit

设置route-map deny 35 , ACL 为permit:

access-list 2005 permit ip 192.168.0.0 0.0.255.255 any
!
route-map pbr permit 32
 match ip address 2003
 set ip next-hop 13.1.1.2
!
route-map pbr deny 35
 match ip address 2005
!
route-map pbr permit 42
 match ip address 2004
 set ip next-hop 14.1.1.2
!
route-map pbr permit 52
 match ip address 2006
 set ip next-hop 15.1.1.2
!
route-map pbr permit 65535
 set ip default next-hop 12.1.1.2

主机 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5
192.168.1.1 不通 不通 不通
192.168.1.2 不通 不通 不通 不通

通过该例子想表明 当遇到route-map deny 的语句是,将跳出整个route-map,进行本地路由转发

你可能感兴趣的:(网络工程)