路由策略专题(二)之分发列表(Distribute-List)

前面的博文中咱们讲到了具体的路由的抓取工具,感兴趣的同窗能够参考上篇博文:《路由策略专题(一)之路由抓取工具
数据库


这篇博文中,咱们将详细讲解一下分发列表(Distribute-List)。分发列表在IGP中使咱们经常使用的一种路由控制工具之一。能够同各类IGP协议进行协同工做。ide


distribute-list:是一种用于路由更新的工具,只能过滤路由信息,而不能过滤LSA。所以在调用的时候咱们须要注意的是不一样的路由协议下的不一样点。工具

因此咱们按路由协议的种类进行划分。能够与ACL或者PREFIX-LIST搭配使用spa


在距离矢量协议中(RIP和EIGRP)设计

在距离矢量中路由之间,路由器之间传递的是路由信息,分发列表能够分别做用于in方向和out方向,不管在哪一个方向都可以实现对路由的控制。也就是说,若是要针对某条路由,既能够在某个路由器的出方向控制接收路由器能收到那些路由,也能够在接收路由器上作过滤入站的路由以达到路由的控制的目的。3d


分发列表工做流程图以下:router

图片.png


在链路状态协议下:blog

如OSPF,协议自己传递的是LSA而不是路由信息。所以distribute-list在应用上也应该多多注意。接口

在in方向调用,而影响的并非路由信息,而是在由数据库生成路由表的过程当中。而在LSDB中的LSA会继续向其余路由器传递而不受到影响。所以效果只能做用于路由器自己而没法对其余路由器构成影响。进程

所以在此类协议中对out方向的调用有必定要求,只会影响本地始发的OE和ON路由,只能在ASBR上,在重分布的信息生成相应的LSA以前发生并做用,阻止了某条具体的路由造成LSA传递给邻居。对于其余类型的路由和其余路由器上没有做用。换句话说,只有在执行了重分布的路由器上而且只对重发布进来的路由有效。


工做流程图以下:

图片.png



配置命令:


在协议进程下

in方向

distribute-list 1 in [接口]

out方向

distribute-list 1 out[接口|协议]

注意:没法在OSPF的进程下在出方向调用接口



示例1(单一路由环境,且路由协议为距离矢量的):

要求R3收不到192.168.2.0/24这条路由。

这里以EIGRP为例,RIP操做相同不作多余赘述。

图片.png


咱们先来看一下三个路由器的路由表

图片.png

配置:

R3(config)#ip prefix-list 2.0 deny 192.168.2.0/24

R3(config)#ip prefix-list 2.0 permit 0.0.0.0/0 le 32

R3(config)#router eigrp 1

R3(config-router)#distribute-list prefix 2.0 in e0/0

一样,能够在R2的out方向调用,也能够实现只在R3上过滤的目的

图片.png

经过实例1和2分析能够验证,Prefix-list在距离矢量路由协议中过滤了对应的路由,而且会对下游路由器形成影响。



实例2(单一路由环境OSPF)要求R3上收不到这条192.168.2.0/24这条路由

图片.png

环境说明,路由条目192.168.0.0/2四、192.168.1.0/2四、192.168.2.0/24这三条路径均由R1经过重分布引入ospf。

配置:

在R3的E0/0入方向上

R3(config)#ip prefix-list 2.0 deny 192.168.2.0/24

R3(config)#ip prefix-list 2.0 permit 0.0.0.0/0 le 32

R3(config)#router ospf 1

R3(config-router)#distribute-list prefix 2.0 in e0/0

配置与距离矢量协议同样发现能够实现

注意:没法在OSPF在出方向调用接口

图片.png


可是若是调用在R2入方向调用接口e0/0呢?

R2(config)#ip prefix-list 2.0 deny 192.168.2.0/24

R2(config)#ip prefix-list 2.0 permit 0.0.0.0/0 le 32

R2(config)#router ospf 1

R2(config-router)#distribute-list prefix 2.0 in e0/0

经过观察路由表咱们能够看出来,仅仅在R2上丢失了这条路由,而在R3上没有。这与咱们以前所说的一致,由于没法阻止LSA的传播,所以只是在加路由表的瞬间会有所影响。可是不会影响到下游的路由器,那么这样会存在一个问题。那就是若是在R3上若是ping丢失的路由会ping不一样。这是因为R5丢失了该路由的缘故。经过查看LSDB咱们能够看到虽然R2上没有了这条路由可是LSDB中依然存在关于192.168.2.0/24的LSA描述信息。

所以咱们在距离矢量路由器中使用的时候应该注意这点。不然会形成排错时没必要要的麻烦。

图片.png


实例3(单一链路状态协议下,在ASBR的出方向调用)

拓扑图如同实例二,环境也是如同实例二

R1上配置

R1(config)#ip prefix-list 2.0 deny 192.168.2.0/24

R1(config)#ip prefix-list 2.0 permit 0.0.0.0/0 le 32

R1(config)#router ospf 1

R1(config-router)#distribute-list prefix 2.0 out

经过现象观察咱们能够看到,在R2和R3上均不存在了192.168.2.0/24这条路由

图片.png


同时咱们查看一下R1的LSDB能够发如今ASBR R1并无生成相关的5类LSA,这才是R2和R3上没有这条路由的根本缘由。

图片.png


实例4(多路由协议重分布之一)

环境说明,R一、R2运行EIGRP,R二、R3运行OSPF。R2上作单点双向重分布。

拓扑图以下:

这样R3能够收到关于192.168.0.0/24 192.168.1.0/24 192.168.2.0/24这三条路由。咱们要求OSPF全部的路由器(不包括R2)不能收到192.168.2.0这条路由,而且全部的EIGRP路由器(R2除外)不能收到10.0.3.0/24这条路由

图片.png


咱们先来看一下R1和R3的路由表。肯定一下初始状态的路由均为正常存在的。通过验证发现的确存在所需路由

图片.png


实验配置:

R2:

首先咱们禁止在OSPF区域收到192.168.2.0这条路由。

配置以下命令

R2(config)#ip prefix-list DENY-EIGRP seq 5 deny 192.168.2.0/24

R2(config)#ip prefix-list DENY-EIGRP seq 10 permit 0.0.0.0/0 le 32

R2(config)#router ospf 1

R2(config-router)#distribute-list prefix DENY-EIGRP out eigrp   1      #这里out方向跟的是eigrp,意思是针对EIGRP 1经过重分布引入的外部路由

相似的咱们在EIGRP区域禁止10.0.3.0

R2(config)#ip prefix-list DENY-OSPF seq 5 deny 10.0.3.0/24

R2(config)#ip prefix-list DENY-OSPF seq 10 permit 0.0.0.0/0 le 32

R2(config)#router eigrp 1

R2(config-router)#distribute-list prefix DENY-OSPF out ospf 1    #这里out方向跟的是ospf,意思是针对EIGRP 1经过重分布引入的外部路由


咱们再次查看一下R1和R3的路由,发现相应的路由已经经过过滤达到效果

图片.png


实例5(多路由协议环境重分布之二)

继续沿用上一个实验的环境,咱们在R2上咱们作一个小小的配置改动。R2有一个直连网段,假设是2.2.2.0/24,R2把这个直连网段同时既重分布进EIGRP又重分布进OSPF。

图片.png


咱们先来查看一下R3的路由表确保R2重分布的路由已经在R3上有所体现

图片.png


假设咱们不容许R3收到这条R2的直连网段2.2.2.0/24这个信息,若是咱们作了如下的操做,那么会怎么样呢?

R2(config)#ip prefix-list DENY-CONNECTED seq 5 deny 2.2.2.0/24     

R2(config)#ip prefix-list DENY-CONNECTED seq 10 permit 0.0.0.0/0 le 32

R2(config)#router ospf 1

R2(config-router)#distribute-list prefix DENY-CONNECTED out connected  


咱们再来查看一下R3的路由表,结果发现这条路由信息依然存在于R3的路由表中。那这又是为何呢?这是由于咱们不只仅在把这条路由重分布进了OSPF同时也重分布进了EIGRP这就致使了虽然咱们经过上面的命令DENY掉了直连的重分布,可是经过EIGRP又再一次重分布进了OSPF之中。所以就存在了这样的信息。

图片.png


那么针对这个应该怎么作呢?咱们能够经过经过下面这个命令在原有的EIGRP-DENY这个preffix-list中插入一个条目来实现。

R2(config)#ip prefix-list DENY-EIGRP seq 6 deny 2.2.2.0/24    #注意咱们这里插入的为seq值为6

可是这样咱们作了两次关于同一条路由的禁止过于繁琐。这一段命令来涵盖咱们以前的全部操做。

R2(config)#ip prefix-list DENY-ALL seq 5 deny 2.2.2.0/24

R2(config-router)#ip prefix-list DENY-ALL seq 10 permit 0.0.0.0/0 le 32

R2(config)#router ospf 1

R2(config-router)#distribute-list prefix DENY-ALL out         #注意这里的out以后没有跟任何的参数(协议),这里就是默认了经过全部方式得到的外部路由。


再次查看R3的路由表发现这是2.2.2.0/24这个路由被成功的过滤掉了。


本篇文档就介绍到这里,但愿能帮助到你。本博客内全部内容均为博主一个字一个字码上去的,而且专门设计了专门的实验拓扑。

须要实验拓扑的小伙伴能够关注一下我,给我私信或者加个人QQ,我能够将个人实验拓扑分享给你。谢谢

相关文章
相关标签/搜索