PBR策略路由


PBR策略路由

Policy-based routing

之前所学习的是路由策略,这两个是完全不同的东西

路由策略:必须有路由,然后针对于路由施加策略

策略路由:很策略,后路由,可以没有路由

啥意思,

 

这样说,当一个数据包进入到路由器以后,

是先查策略,再查路由,然后再进行转发。

当然了,这项技术也是离不开route-map的。

 

配置思路

1 ACL匹配数据

2 route-map定义

3 接口挂接route-map。(PBR)

定义好的PBR,是一定要进行挂接的,如果不挂接,显然是不生效的,

另外,所挂接的接口也是有讲究的,是数据来的方向。

针对的数据有两种,一种是经过这里的,一种是本地的,所使用的挂接命令也是不同的,后面会详细讲到的。

 

应用场景

局域网出口网关,当出现多条路径时,可以使用PBR来实现指定选路,而不需要设置路由策略。

 

1

 

 

 

 

如图所示,

R1和R2上分别做默认路由指向R3,

R3做r4-r4两台模拟pc的GW,

R1和R2上分别有一个loop 接口,地址都是100.1.1.1

R1,R2开启TELNET 功能

 

现要求,

R4 icmp 请求让其去往R2

R4 telnet 请求去往R1

 

R5 icmp请求去往R1

R5 telnet 请求去往R2

 

R3上不做任何的路由指向

 

分析,

考虑到数据走向的问题,就要借助PBR,(policy based routing)策略路由

策略路由的实现也无外乎route-map

route-map还要依靠acl,

刚才要求中提到的,有关于数据类型的,如telnet ,icmp,那么就可以使用较为精确的扩展ACL来帮助route-map实现这一功能,

 

 

具体实施

配置IP地址我就不说了

1 定义ACL,抓取具体的主机去往何处目标,干什么(更加的精细)

在实际的工作环境中,应该是针对网段的

Router(config)#access-list 100 permit icmp host 192.168.1.4 host 100.1.1.1 echo      

Router(config)#access-list 101 permit icmp host 192.168.1.5 host 100.1.1.1 echo        

Router(config)#access-list 102 per tcp hos 192.168.1.4 host 100.1.1.1 eq 23

Router(config)#access-list 103 per tcp hos 192.168.1.5 host 100.1.1.1 eq 23

 

 

 

编辑route-map

Router(config)#route-map wfy per 10

Router(config-route-map)#match ip add 100

Router(config-route-map)#set ip next-hop 23.0.0.1   ///强制指定下一跳为23.0.0.1,

 

 

                                                  就是R4请求的icmp去往R2

Router(config-route-map)#exit

 

Router(config)#route-map wfy per 20

Router(config-route-map)#match ip add 101

Router(config-route-map)#set ip next-hop 13.0.0.1   //R5请求的ICMP去往R1

Router(config-route-map)#exit

 

Router(config)#route-map wfy per 30

Router(config-route-map)#match  ip add 102

Router(config-route-map)#set ip next-hop 13.0.0.1   //R4的telnet 去往R1

Router(config-route-map)#exit

 

Router(config)#route-map wfy per 40

Router(config-route-map)#match ip add 103

Router(config-route-map)#set ip next-hop 23.0.0.1    //R5的TELNET请求去往R2

 

3 挂接

Router(config-route-map)#inter f1/0

Router(config-if)#ip policy route-map wfy

 将策略挂接在接口上,使用route-map wfy

 

 问:为什么要将它挂在接口上,而为什么又非得把它挂接在f1/0口上呢?

答:策略路由必须挂接在接口上才会生效,另外,这要考虑到数据的走向,

做为R4-R5的GW路由,F1/0口是他们的网关地址,

当路由进入到接口以后,就要先查策略,如果有相应的策略就要按照策略进行转发,

如果没有策略的话,就要直接进行路由表的查询,

 

因为策略的优先级高于路由,所以必须让它在查路由表之前运行策略。

说人话,在查找策略的时候必须得有东西可查,要不然就查路由表出去了,策略也就没生效

 

4 测试

 

 

 

 R4 进行telnet测试,去的是R1,并且可以相连

 

 

 

 R5进行telnet测试,去的是R2,并且可以连接

 

至于icmp

我们要在R1 和 R2上开启debug ip icmp

来检测一个收到的echo包

 

 

 

 R4是去往R2的,没问题

 

 

 

 OK ,也是没有问题的。

至此实验结束

 

通过此实验得出以后结论

 

1 使用PBR 在定义route-map以及acl时,可以更加灵活的定义数据的走向,而不单纯的是路由

2 在部署PBR时,本地可以没有路由,但是必须两点互通,强制性的指向下一跳方向

  

其实PBR的应用方法还有几个,我们不防来看一下,

 

1 使用PBR实现多个下一跳

 

什么意思呢

就是当拥有多个下一跳时,可以通过pbr去设置他们的顺序,一条命令全部搞写,而不用再写多条,当第一个不可达,自动切换到第二个,第二个不行,则第三个,....

就是这样

 

R4(config-route-map)#set ip next-hop 14.0.0.1 24.0.0.2 34.0.0.3

直接在后面写个多next-hop即可

 

 

 

  

R4(config)#access-list 1 per host 192.168.1.10

R4(config)#route-map

R4(config)#route-map aa per 10

R4(config-route-map)#ma ip add 1

R4(config-route-map)#set ip next-hop 14.0.0.1 24.0.0.2 34.0.0.3  //指定多个下一跳地址

然后就可以去模拟断到R4的F0/0,F0/1口,看效果啦~

 

 2 PBR的下一跳(隔跳),next-hop非直连

那么非直连,肯定是要有路由的,确认自己的路由表中有这个地址的可达条目,且两端可以通信即可。

 

 

 R1为一跳,R3为第二跳,最后的R4为备选默认路由,如果没有PBR策略路由最后则执行默认路由,优先级不同嘛.

 

下面只使用了一台PC,来进行模仿,省事儿了,

R5(config)#access-list 1 per host 92.168.1.10

R5(config)#route-map wfy per 10

R5(config-route-map)#ma ip add 1

R5(config-route-map)#set ip next-hop 15.0.0.1

R5(config-route-map)#set ip next-hop recursive 23.0.0.3   //设置可达的下一跳地址

R5(config-route-map)#ip route 0.0.0.0 0.0.0.0 45.0.0.4

R5(config)#inter f2/0

R5(config-if)#ip policy route-map wfy

R5(config-if)#end

 

  以一是几个PBR常见的场景,没有路由也可以正常使用,

 

PBR有没有可能是针对自己本设备上生的数据进行设置方向呢?

当然可以

但是针对于本地而言,要在全局下进行

 

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

然后,并不是所有的pbr都优先于路由,有一种特殊的配置就是在路由之后的,

R1(config-route-map)#set ip default next-hop x.x.x.x

 

可如果PBR结合NAT使用呢? 如何实现呢?

敬请期待宿主NAT文档


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM