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. 刘政:别着急颠覆传统数据分析人才培养,先将落脚点放在实处
  2. java itemcf_大规模电商推荐数据分析-基于ItemCF的召回
  3. 编程之美-斐波那契(Fibonacci)数列方法整理
  4. C#中字段、属性、只读、构造函数赋值、反射赋值的相关
  5. React.js 小书 Lesson24 - PropTypes 和组件参数验证
  6. 苹果误用美元结算工资,中国开发者们“暴富”:感动却不敢动啊!
  7. Objective-C 相关Category
  8. c语言函数调用后必须带回返回值?
  9. 如何批量修改Word文档Mathtype公式字体
  10. 学位认证上‘学位网’办理即可
  11. 千万不要嫁给程序猿,我是认真的
  12. 小朋友把游戏藏在计算机里,如何设置孩子玩电脑游戏的时间
  13. 总结-空洞卷积(Dilated/Atrous Convolution)、gridding问题以及解决方案、训练技巧BN和PReLU、CReLU
  14. shutter截图编辑功能
  15. Ubuntu下安装UE和AirSim并使用UE4.27编译C++项目
  16. 核查清单-小程序分享功能
  17. Stress命令Linux性能测试,压力测试工具(Centos演示)
  18. 微信小程序 - 在线预览 Office 文件(doc / docx / xls / xlsx / ppt / pptx / pdf)
  19. react hooks学习之useState set值后,获取值没有更新
  20. 物联网最常见的5个核心关键技术与2种技术难点

热门文章

  1. VM报错Before you can run VMware several modules must be compiled and loaded into the running kernel
  2. 百度地图和高德地图坐标系的互相转换
  3. IT30: 软件团队的工作职责与岗位要求
  4. 斗鱼直播相关iOS视频by文明
  5. Python文件内容搜索工具
  6. 哈尔滨工业大学软件构造课程学习笔记第一章第一节
  7. android 查询快捷方式,android桌面快捷方式的创建和查询
  8. 数据开发面试题2020总结
  9. 深入浅出大数据存储架构,如何设计才能满足需求?
  10. Glide 如何实现正确加载图片而没有错位