路由分发列表-distribute-list
路由分发列表 distribute list
什么是路由分发列表?
用来控制路由条目的传递
具体有什么用?
可以阻止单个的路由条目传递到某一网络内,可以起到防环的作用
依据是什么?
通过ACL来抓取路由条目,然后挂接到路由协议中
IN/OUT,这个方向是路由条目的传递方向
如图中所示

R1-R2-R3运行rip
R1-R2-R3运行OSPF
R1,R3两个设备都进行双向重分发~
请问,此时,如果R3请求去往2.2.2.2的路由条目,走哪里呢?
如果不出意外的话,肯定是走R3—R4—R1—R2,为什么??
因为不同协议之间要比较管理距离 ,OSPF=110 RIP=120
数据能通,没问题,但是有没有想过一个问题呢?
从R3上看,去往2.2.2.2 的路由条目应该是RIP的,但是现在变成了OSPF的,这在一个重分布的过程中,是否会造成不可达呢~(也就是环路)
咱们来看一下具体的路由条目
R1---去往2.2.2.0的条目下一跳指向的是14.0.0.2(R4)

R4---去往2.2.2.0的条目下一跳,指向R3

R3---2.2.2.0的条目下一跳又指回34.0.0.2(R4)

最终会在R1-R3-R4之间行成环路

那么解决办法就是在R1/R3上,组织收到来自R4伟来的ospf 更新路由条目2.2.2.2
使用distribute-list,
其思路,
1 利用ACL定义路由条目(是拒绝还是允许)
2 和ACL的格式相同,但是要注意的是,这里所输入的路由前缀,必须和路由表中的条目是相同的
3 定义路由更新进或出方向,
4 OSPF是一个特殊的路由协议,因为,OSPF更新的是LSA ,并不是路由条目,所以,说人话就是你放在OUT方向上你干不过它,可以更新出去,放在OUT方向是肯定不行的。当然,IN方向可以接收进来LSA,但是更新到LSDB后,要进行计算再放入路由表中,而放到路由表的这个过程,IN就起到做用了,不让它写入到路由表中。
也就是说,对于OSPF,distribute-list,只适用于IN,而且还得加上具体的接口才生效,
看刚才的那个实例,
2.2.2.2的路由条目,我们现在不想让它是OE2的条目,想让它直接是R的条目,
怎么办?
那就直接 在R3的F0/1口,干掉这个路由条目的更新
R3(config)#access-list 1 deny 2.2.2.0 //拒绝的路由前缀,必须和路由表中的一致,图1
R3(config)#access-list 1 per any ///拒绝了一个千万别忘了放行其它的
R3(config)#router ospf 1 //进入到具体的协议中
R3(config-router)#distribute-list 1 in f0/1 //分发列表调用ACL列表1,in方向,接口F0/1
图1


策略完之后,就可以看到,这个路由条目,直接 变成了R,也就是RIP ,而它的下一跳也正好是R2,并且出接口为F0/0 完成要求 .
而上面部份的RIP协议中,由于重分发所定义的全都是metric 1 那就一定会形成等价负载均衡

其它应用场景
其实做为distribute-list ,不光是用在重分发上面,也可以用在单独的路由协议中
如图

R1---R2运行rip 协议,R1宣告了自己的下游接口192.168.1.0 -3.0
但是现在不想让R2 接收到192.168.1.0和192.168.3.0,它只能接收到192.168.2.0


如上图所示,可以很直接的看出来,192.168.1.0被干掉了
那可不可以在R2上进行设置?????当然可以,no problem

一样的效果,
没有了路由表,也就无法进行与之通信,
EIGRP也是同样的道理,
就不在这里多说了.
最应该注意的是OSPF ,再次强调一下,OSPF更新的不是路由条目,而是LSA,链路状态通告。
所以你使用distribute-list 理论上是不可能将其限制住的。
-------------------------------------------------------
CCIE成长之路 ---- 梅利
浙公网安备 33010602011771号