Distribute-list(分发列表)用来过滤路由信息
Distribute-list使用方法:
Out方向distribute分发列表

Route(config-router)#distribute-list {access-list-number|name} out [interface-name|routing-process[routing-process parameter]]

in方向distribute分发列表

Route(config-router)#distribute-list {access-list-number|name} in [interface-name|routing-process[routing-process parameter]]

Distribute-list对距离矢量路由协议(RIPv1&RIPv2&EIGRP)在in和out方向都可以很好的工作,但是对于链路状态路由协议(OSPFv2&OSPFv3&IS-IS)在使用的时候要多加注意
环境一:

需求:R3路由器关于R1路由器三个Loopback接口路由信息,只能学习Loopback0的
上边全网运行RIPv2协议,R2可以在e0/1使用out方向来过滤路由信息
R2上配置:

R2(config)#access-list 10 deny 172.16.2.0
R2(config)#access-list 10 deny 172.16.3.0
R2(config)#access-list 10 permit any
R2(config)#router rip
R2(config-router)#distribute-list 10 out e0/1

R3上查看路由表只有R1路由器Loopback0路由信息

R4上查看路由表发现关于R1路由器三个Loopback接口路由都是存在的
这是因为R2在做distribute-list的时候out方向关联了e0/1接口只针对了R3路由器,没有针对R4路由器。
如果希望对R4路由器也生效,R2路由器可以在RIP进程中补一条命令
R2(config-router)#distribute-list 10 out e0/2
R2在做distribute-list时候out后边也可以不关联任何接口信息,如果不关联任何接口信息代表针对所有接口都生效

Distribute-list对链状态路由协议:
Distibute-list对于链路状态路由协议的out方向如果路由不是本地始发的,将不能起到任何效果
只有一种场合下out方向的distribute-list才能去部署,要去过滤到本地始发的外部路由。就是说比如R1上的Loopback是采用redistribute的方式注入OSPF,那么这个时候就叫本地始发的路由。这种情况如果在R1上去部署out方向distribute那么就可以起到过滤作用,因为对于redistribute来讲,redistribute这个外部路由进OSPF其实是以路由方式进来的,所以这个时候在本地做out方向Distribute-list就可以起到过滤作用。

环境二:
R1通过redistribute方式将三个Loopback接口宣告进OSPF进程,同时在R1上做out方向的distribute,过滤掉Loopback1和Loopback2两个接口路由信息
R1上配置:

R1(config)#access-list 10 deny 172.16.2.0
R1(config)#access-list 10 deny 172.16.3.0
R1(config)#access-list 10 permit any
R1(config)# router ospf 100
R1(config-router)#redistribute connected subnets
R1(config-router)#distribute-list 10 out

OSPF在做distracted out方向时候不可以关联任何接口
R2上查看路由表及OSPF database
cisco路由器查看OSPF LSDB 5类LSA命令:Router#show ip ospf database external


R3上查看路由表及OSPF database


R4 上查看路由表及OSPF database


通过观察R2、R3、R4三台路由器路由表及OSPF database可以看出R1路由器成功将自身Loopback1和Loopback2两条路由过滤掉并且连LSA信息都没有传递给邻居路由器
环境三:

R1上将环境二拓扑图中的redistribute给删掉,将三个Loopback接口通过network方式引入到OSPF进程,再次使用distribute out方向看下还会不会生效
R1上配置:

R1(config)#access-list 10 deny 172.16.2.0
R1(config)#access-list 10 deny 172.16.3.0
R1(config)#access-list 10 permit any
R1(config)#router ospf 100
R1(config-router)#no redistribute connected subnets
R1(config-router)#network 172.16.1.1 0.0.0.0 area 0
R1(config-router)#network 172.16.2.1 0.0.0.0 area 0
R1(config-router)#network 172.16.3.1 0.0.0.0 area 0
R1(config-router)#distribute-list 10 out

R2上查看路由表

R3上查看路由表

R4上查看路由表

通过观察R2、R3、R4三台路由器的路由表发现R1通过network命令将自身Loopback接口引入OSPF进程时,再次使用distribute out方向时并没有起到任何效果
环境四:
需求:R2上使用in方向distribute 观察R2、R3、R4三台路由器路由表
在R2上过滤掉R1路由器Loopback1和Loopback2路由信息,使用in方向

R1上配置:删掉network方式引入路由方式,通过redistribute方式引入R1自身Loopback信息

R1(config)#router ospf 100
R1(config-router)#no network 172.16.1.1 0.0.0.0 area 0
R1(config-router)#no network 172.16.2.1 0.0.0.0 area 0
R1(config-router)#no network 172.16.3.1 0.0.0.0 area 0
R1(config-router)#no distribute-list 10 out
R1(config-router)#redistribute connected subnets

R2上配置:

R2(config)#access-list 10 deny 172.16.2.0
R2(config)#access-list 10 deny 172.16.3.0
R2(config)#access-list 10 permit any
R2(config)#router ospf 100
R2(config-router)#distribute-list 10 in ethernet 0/0

OSPF在使用distribute in方向时可以关联接口,关联接口和不关联接口区别
如果关联某一个接口代表只是对关联的接口收到的路由信息做过滤,如果不关联某一个接口代表对自身所有接口生效
R2上路由表及OSPF database


R3上路由表及OSPF database


R4上路由表及OSPF database


通过查看R2、R3、R4三台路由器的路由表及OSPF LSDB 5类LSA信息可以发现
R2在in方向使用distribute只对自己的路由表生效,但是R2的OSPF LSDB中还是存在R1路由器三个Loopback接口5类LSA信息
R3、R4路由器的路由表及OSPF LSDB并没有受到任何影响,从这里也就可以总结出OSPF在使用distribute in方向时影响的是自身路由表,对邻居R2、R3并没有什么影响。

总结:OSPF在使用distribute时,in方向影响的是自己的路由表,out方向只有在过滤本地始发的路由才生效(例如本地通过redistribute方式引入路由时,因为重发布的时候这个动作引入的刚好是路由信息而不是LSA)。OSPF在in方向的时候实际上是在OSPF计算LSA生成路由表的时候过滤掉路由,所以distribute在in方向虽然路由表消失了路由条目,但是LSA依然存在OSPF database中的

环境五:
Distribute还可以在out方向后边关联特定的协议,distribute在in方向是不可以关联协议的

R2上配置:

R2(config)#access-list 10 deny 4.4.4.0
R2(config)#router eigrp 100
R2(config-router)#redistribute rip metric 10000 1000 1 1 1
R2(config-router)#redistribute ospf 100 metric 10000 1000 1 1 1

R2 show rip database 是有从R1学习到1.1.1.0/24路由信息

R2 show ospf database 可以看到也有从R4学习到1.1.1.0/24路由信息

R2上查看路由表发现关于1.1.1.0/24是“O”标记,此时是正常的,RIP AD值120 OSPF AD值110

R3上查看路由表同样学习到了1.1.1.0/24路由信息

如果不做distribute过滤,R1和R4任意一台路由器down掉,R2和R3都可以访问1.1.1.0/24目的地
下边在R2上做distribute,只针对从RIP路由协议过来的1.1.1.0/24做过滤,其他方式学习到的一律放行
R2上配置:

R2(config)#access-list 10 deny 4.4.4.0
R2(config)#router eigrp 100
R2(config-router)#redistribute rip metric 10000 1000 1 1 1
R2(config-router)#redistribute ospf 100 metric 10000 1000 1 1 1
R2(config-router)#distribute-list 10 out rip

R3上查看路由表,还是有关于1.1.1.0/24路由信息,说明R2上配置是生效的

可以进一步验证R2的配置,将R2连接R4的ethernet 0/2 shutdown掉

R2(config)#interface ethernet 0/0
R2(config-if)#shutdown

R3上查看路由表,发现没有1.1.1.0/24路由条目

环境六:
使用distribute还可以解决双点双向redistribute次优路径及环路问题
看下图,R4将自身Loopback0接口宣告进RIP进程,R2和R3都互相学习到该路由信息
此时R2先做RIP到OSPF的redistribute动作,R4 Loopback0路由到了R1,R1传递给R3路由器。此时R3路由器因为先前从RIP进程R4邻居学习到了该路由条目,此时从两个邻居不同路由协议学习到去往相同目的地的路由信息,R3先比较AD值,结果发现OSPF的110 AD值要小于RIP的120 AD值,R3自然而然的选择从R1到4.4.4.0/24目的地。
此时是很奇怪的,R3产生了次优路径问题,明明可以从R4直接到目的地,为什么要从R1绕了一圈到目的地。
最关键的是,R3在想做RIP到OSPF的redistribute动作是失败的,因为R3关于4.4.4.0/24路由是“OE2”的而不是“R”的
在下边我们使用distribute来解决这个次优路径问题。

IP编制规则:10.xy.xy.x/24,其中x是较小的路由器,y为较大的路由器。例如:R2和R4的编制:R2e0/1:10.24.24.2/24R4e/1:10.24.24.4/24
R2上配置:

R2(config)#router ospf 100
R2(config-router)#redistribute rip subnets

查看R3上路由表关于4.4.4.0/24路由是“OE2的”

R3上配置:

R3(config)#access-list 10 deny 4.4.4.0
R3(config)#access-list 10 permit any
R3(config-router)#distribute-list 10 in

查看R3上路由表关于4.4.4.0/24的路由变成了“R”的,此时R3在做RIP到OSPF的redistribute是完全没有问题的

R2上也要做和R3相同的动作,具体原因自己好好琢磨,哈哈

R2(config)#access-list 10 deny 4.4.4.0
R2(config)#access-list 10 permit any
R2(config-router)#distribute-list 10 in

总结:其实使用distribute来解决双点双向redistribute次有路径问题并不太适合,distribute是直接把路由过滤掉了,假设R3和R4相连接的链路故障了,那么R3就没有备用路径可以走了,下边可以试验下,我们把R3的ethernet0/0口shutdown掉

R3(config)#interface ethernet 0/0
R3(config-if)#shutdown

查看R3的路由表可以看出,R3是丢失了4.4.4.0/24路由信息的

转载于:https://blog.51cto.com/13595867/2334784

distribute-list相关推荐

  1. windows XP下Python2.7包管理工具安装-setuptool,pip、distribute、nose、virtualenv

    在Python开发中为了对项目进行管理和调试.必须安装一些特定的软件包.据说业内这个叫做yak shaving-做一个非常酷非常绚丽的Python项目之前,必须做的一些枯燥无味的准备工作.本文介绍了s ...

  2. Python包管理工具Distribute的安装

    Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...

  3. hive中order by,sort by, distribute by, cluster by作用以及用法

    1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会 ...

  4. hive 的分隔符、orderby sort by distribute by的优化

    一.Hive 分号字符 分号是SQL语句结束标记,在HiveQL中也是,可是在HiveQL中,对分号的识别没有那么智慧,比如: select concat(cookie_id,concat(';',' ...

  5. 575. Distribute Candies 平均分糖果,但要求种类最多

    [抄题]: Given an integer array with even length, where different numbers in this array represent diffe ...

  6. HiveQL之Sort by、Distribute by、Cluster by、Order By详解

    在这里解释一下select语法中的order by.sort by.distribute by.cluster by.order by语法. 一.order by语法 在hiveQL中Order by ...

  7. HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By

    1.全局排序(Order By) Order By:全局排序,一个Reducer 1.使用 ORDER BY 子句排序 ASC(ascend): 升序(默认) DESC(descend): 降序 2. ...

  8. Linux 下安装python软件包(pip、nose、virtualenv、distribute )

    在Python开发中为了对项目进行管理和调试,必须安装一些特定的软件包.据说业内这个叫做yak shaving-做一个很酷很绚丽的Python项目之前,必须做的一些枯燥无味的准备工作.本文介绍了set ...

  9. HDU - 1723 - Distribute Message

    先上题目: Distribute Message Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  10. 2.12 Hivet中order by,sort by、distribute by和cluster by

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy 一.order by 对全局数据的排序,仅仅只有一个red ...

最新文章

  1. @query传参_VueRouter之query与params两种传参区别
  2. 恐怖如斯,阿里P9总结的这份Java八股文,已经帮近百人拿到offer了
  3. Android开发之百度地图经纬度转换地址(以及获取详细地址的方法自测成功)
  4. [react] 有在项目中使用过Antd吗?说说它的好处
  5. [转]如何写一份交互说明文档
  6. mybatis 二级缓存使用注意
  7. Intellij_idea-15 常用快捷键
  8. 软件测试岗位,BAT大厂面试题集锦
  9. 科学计算机度转弧度,角度弧度换算器在线(70°角度转换弧度)
  10. Matlab/Python两方,三方甚至四方演化博弈仿真图及 代码 演化博弈敏感性分析仿真图及相轨迹图/相位图及代码
  11. android listview表格分页显示,Android ListView分页简单实现
  12. matlab 四面体,《有限元基础教程》【MATLAB算例】481基于4节点四面体单元的空间块体分析(Tetrahedron3D4Node)...
  13. 程序员客栈 接不到单子_常见(但不常见)单子
  14. pandoc 转换html,pandoc将markdown转换输出HTML slide
  15. Windows凭据管理器
  16. 万年历功能c语言,万年历(c语言多功能).doc
  17. 使用mac几年后,得换电池了
  18. Java导出多个excel并且打包成zip压缩文件
  19. 三菱PLC FB库新建和调用-(Gx Work2版本)
  20. IF: 8+ m6A调控因子与m6A相关的lnc/mRNA作为结直肠癌预后因子的综合性分析

热门文章

  1. 离散制造与流程制造的区别与特点
  2. 鼠标悬浮事件的hover的使用
  3. W520 改造通电自动开机
  4. Python 微积分数值和符号计算(计算机代数)
  5. C语言中,如何通过函数来改变一个变量的值
  6. 刚需买房考虑未来房价涨跌没有意义
  7. Python微信好友信息意义及取值分析(基于itchat)
  8. Burpsuite插件 -- 伪造IP
  9. 虚幻引擎5 C++编程学习2
  10. zabbix监测redis连接数