HCNP Routing&Switching之路由控制-策略路由
前文我们了解了路由策略工具Route-Policy相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15322135.html;今天我们来聊一聊策略路由相关话题;
策略路由(Policy Based Route 基于策略的路由,简称PBR);我们知道路由策略的核心就是通过过滤工具将要处理的路由过滤出来,然后使用策略或调用工具将过滤出来的路由做某些动作,比如拒绝或者允许;如果我们需要修改路由属性,则使用策略工具Route-Policy,然后使用调用工具在某个动态路由进程下应用对应的路由策略;路由策略的作用是通过各种工具影响路由表,从而实现影响数据的转发;我们今天说的策略路由和前边的路由策略,它们都是可以实现影响数据的转发,即策略路由和路由策略的最终目的是一样的;策略路由和路由策略不同的是,路由策略是影响路由表来实现影响数据包的转发,而策略路由它并不会影响路由表,它是通过策略来定义转发报文的规则,即打破了传统路由转发数据包规则;默认情况下路由器是通过路由表来转发数据,而定义了策略路由的路由器,它会优先根据策略路由来转发数据,如果对应报文没有被策略路由匹配到,那么对应报文会通过路由表来进行转发;简单讲策略路由就是通过管理员定义规则来实现报文转发,如果对应报文没有被策略匹配到,那么它还是会根据路由表来进行转发;
策略路由应用场景
提示:我们可以制定策略来实现学生网段访问外网走ISP1,教师网段访问外网访问ISP2;对应路由器的路由表对应网段的下一跳或出接口我们都可以不用管,直接根据自己的需求写策略路由来描述对应流量的转发过程;即我们可以根据制定策略路由实现数据包转发根据对应数据包源地址选路(而路由表是通过目标地址,根本不看源地址);
提示:策略路由除了可以实现通过源地址来选路以外,我们还可以通过不同应用来选路;比如上图FTP的流量走s2/0,www流量走s2/1;对于路由策略我们根本无法做到根据不同应用流量来选路;
路由策略和策略路由的区别
提示:路由策略中,拒绝的将不会被通过,其原因是路由策略最终是影响路由表,然后对应数据包转发已经是通过影响后的路由表,所以路由策略中明确拒绝的路由,对应路由表中也不会存在,没有路由,很显然数据包转发也不能正常进行;但在路由策略中,拒绝的将做正常路由表转发;因为策略路由它不会去修改路由表,所以没有被策略路由匹配上或者被拒绝的流量,都会再去根据路由表进行数据包转发;路由策略和策略路由两者最大的区别在于路由策略基于控制平面,为路由协议和路由表服务;而策略路由是基于转发平面,为转发策略服务;一个直接影响路由表,一个不影响路由表,只影响满足对应策略的数据转发;
策略路由规则
提示:策略路由和路由策略规则语法都比较像,都有是以节点为单位,一个节点里可以包含多个条件和apply 子句;都有名称、匹配模式和节点编号;节点与节点之间的关系是或关系;节点里如果有多个条件或apply 子句,则它们的关系是与关系,即多个条件都必须同时满足,同时对应apply子句也会同时都被执行;
策略路由匹配流程
提示:策略路由的匹配流程和路由策略的匹配流程基本一样,都是从上至下一次匹配每个节点,如果被某一节点匹配上以后,对应不再继续向下匹配,匹配上的流量根据匹配模式,如果匹配模式是permit则执行apply子句;如果匹配模式deny则按照普通报文根据路由表转发;如果没有被任何一个节点上的规则匹配,对应报文也会按照普通报文根据路由表转发;策略路由匹配规则和路由策略匹配规则唯一不同之处就是最后的默认规则,路由策略的默认规则是拒绝操作,而策略路由的默认规则是按照普通报文根据路由表转发;即最后被策略路由拒绝或没有被策略路由匹配的报文最终都会当作普通报文根据路由表进行转发处理;
本地策略路由:本地策略路由是指经对本机下方的报文进行处理,对转发到报文不起作用;
提示:本地策略路由只影响本机下发的报文,并不影响经过本机转发的报文;
接口策略路由:接口路由策略是指只对转发到报文起作用,对本地下发的报文不起作用;
提示:转发报文是指不是本地发送的报文,像这类报文只会被接口策略路由匹配,本地策略路由不会去匹配;简单讲,本地策略路由只能匹配本地下发的报文,而接口策略路由只能匹配被转发的报文;
实验:如下拓扑,配置ospf
R1的配置
sys sys R1 int g0/0/0 ip add 172.16.0.1 24 int g0/0/1 ip add 172.17.0.1 24 int g0/0/2 ip add 192.168.12.254 24 ospf 1 router-id 1.1.1.1 area 0 net 172.16.0.1 0.0.0.0 net 172.17.0.1 0.0.0.0 net 192.168.12.254 0.0.0.0
R2的配置
sys sys R2 int g0/0/0 ip add 172.16.0.2 24 int g0/0/1 ip add 172.17.0.2 24 int g0/0/2 ip add 192.168.21.254 24 ospf 1 router-id 2.2.2.2 area 0 net 172.16.0.2 0.0.0.0 net 172.17.0.2 0.0.0.0 net 192.168.21.254 0.0.0.0
client1的配置
server1的配置
验证:查看R1的路由表
提示:可以看到R1学习到了192.168.21.0/24网段路由,且出接口和下一跳都有两个;从上面的信息可以看到R1去往192.168.21.0/24网段的流量会被172.16.0.0和172.17.0.0这两条链路负载分担;
验证:在R1上用ping命令测试,看看R1去往192.168.21.1的流量走哪一条链路?
提示:左边是R1 的g0/0/0口抓包,右边是g0/0/1口抓包;可以看到R1tracert 192.168.21.1走的是172.17.0.2下一跳;
在R1上指定策略路由,让ping 192.168.21.1的流量下一跳是172.16.0.2
在R1上新建acl匹配去往192.168.21.1的流量
在R1上新建策略路由,调用acl 3000,执行修改下一跳地址为172.16.0.2
在R1上调用策略路由,再次ping 192.168.21.1 ,抓包看看对应报文会走那边?
提示:可以看到调用了策略路由以后,对应R1ping R2的流量就走g0/0/0口了;因为下一跳为172.16.0.2和R1的g0/0/0口直连;
验证:用客户端ping服务端,看看对应流量是否会走172.16.0.2?
提示:可以看到从客户端转发的流量并不会受本地策略的影响,它还是走没有做本地策略前172.17.0.2的链路;从上面实验可以看到本地策略路由对转发的流量是不生效的;
接口策略路由配置
接口策略路由是通过流策略技术实现;流策略是指流分类和流行为关联;流策略形成了模块化配置最大优点是可以节省配置,支持匹配修改;流分类我们可以理解为流量匹配分类工具,它主要将对应流量抓去出来,进行分类;流行为我们可以理解为对流量的处理动作的描述;比如打标签、重定向、负载分担、报文分片、流量限速、流量统计等等;流策略就是调用流分类和流行为关联的调用用工具,即我们在那个接口的那个方向应用流分类和流行为;
实验:还是上述实验拓扑,使用流分类过滤FTP流量、调整FTP流量链路或www流量链路
验证:用客户端访问服务端的FTP和HTTP服务,抓包看看对应流量是怎么走的
提示:可以看到FTP的流量来回都是走的G0/0/0口到达服务器,HTTP的流量来回都是走g0/0/1口;
在R1上创建ACL匹配FTP流量
在R1上创建流分类,调用acl name FTP
提示:创建流分类,需要给流分类取一个名称,以示区分其他流分类;在流分类里用if-match 语句调用acl;这里acl可以写acl编号,或者是acl名称;
在R1上创建流行为
提示:以上命令表示创建一个名为redirect-g0/0/1的流行为,具体动作是重定向下一跳地址为172.17.0.2;
在R1上创建流策略
提示:创建流策略就是把流分类和流行为进行关联的过程;
在R1的g0/0/2接口调用流策略filter-FTP-to-g0/0/1
提示:接口策略路由只能在接口的入方向调用,因为出方向的流量是经过路由表选路以后才能匹配到;
验证:查看路由器流策略应用的接口
提示:可以看到我们创建的流策略在R1的g0/0/1口应用着;
验证:现在用客户端访问服务端FTP服务,看看对应流量是否是我们流策略定义的走呢?
提示:可以看到现在客户端访问服务端FTP服务,对应流量不再从g0/0/0口发出,而是根据我们定义的流策略从g0/0/1口发出;