distribute 列表.docx
《distribute 列表.docx》由会员分享,可在线阅读,更多相关《distribute 列表.docx(8页珍藏版)》请在冰豆网上搜索。
distribute列表
distribute-list分发列表
一、工具概述
distribute-list分发列表是用于控制路由更新的一个工具,只能过滤路由信息,不能过滤LSA。
如上图,R1、R2、R3运行RIP。
R2在初始情况下,会将自己的路由表更新给R1,其中假设包含三条路由1.0、2.0及3.0。
现在我们可以通过在R2上部署分发列表distribute-list,使得R2在更新给R1的路由信息中过滤掉3.0这条路由。
这就是分发列表的一个使用示例。
当然,它还有更加广泛的应用。
二、部署要点
分发列表是用于控制路由更新的一个工具,只能过滤路由信息,不能过滤LSA。
因此:
分发列表在距离矢量路由协议中使用,无论是in或者是out方向,都能正常的过滤路由。
但是在链路状态路由协议中的工作就有点问题了。
Thecommanddistribute-listoutworksonlyontheroutesbeingredistributedbytheAutonomousSystemBoundaryRouters(ASBRs)intoOSPF.Itcanbeappliedtoexternaltype2andexternaltype1routes,butnottointra-areaandinterarearoutes.
1.对于距离矢量路由协议
路由器之间,传递的是路由信息,分发列表对路由信息是有绝对的控制权的。
因此如果是in方向,那么通过部署分发列表,可以过滤特定的路由,使得执行分发列表的本地路由路由表发生变化,同时,本地路由器在更新路由信息给下游路由器的时候,实际上更新的内容是受分发列表影响之后的条目。
同时在out方向,也是没有问题的。
2.对于链路状态路由协议,如OSPF
值的注意的是,对于OSPF这样的链路状态路由协议,路由器之间传递的消息不再是路由信息了,而是LSA,而分发列表是无法对LSA进行过滤的。
因此,在链路状态协议中部署分发列表,就需要留意了:
in方向,分发列表只能在本地收到LSA后,生成路由的那一刹那进行路由的过滤,执行分发列表的路由器自己路由表会被分发列表影响(但是本地LSDB仍然是有LSA的),而且该路由器仍会将LSADB中的LSA发送给邻居,因此本地被过滤的路由,邻居还有。
out方向,分发列表只能工作在执行路由重发布动作的那个ASBR上,且只能针对外部引入的路由起作用。
因为OSPF执行重发布时,其实这些外部路由是以路由的形式引入进来的,因此分发列表在这个场合下能够正常工作,但是如果不是本地始发的外部路由,或者是内部的OSPF路由,out方向的分发列表均束手无策。
例如在R1上重发布直连进OSPF,用out方向的分发列表可过滤掉1.1.1.0这条外部路由。
但R1重发布进来的路由,如果在R2上用out方向的分发列表试图阻挡R3接受路由或LSA,则无法,因为这不是本地始发的外部路由。
三、配置命令
1.In方向
R1(config-router)#distribute-list1in?
//都是接口
AsyncAsyncinterface
BVIBridge-GroupVirtualInterface
CDMA-IxCDMAIxinterface
DialerDialerinterface
FastEthernetFastEthernetIEEE802.3
MultilinkMultilink-groupinterface
Port-channelEthernetChannelofinterfaces
TunnelTunnelinterface
VifPGMMulticastHostinterface
Virtual-PPPVirtualPPPinterface
Virtual-TemplateVirtualTemplateinterface
……
2.OUT方向
R1(config-router)#distribute-list1out?
//接口或协议
AsyncAsyncinterface
BVIBridge-GroupVirtualInterface
DialerDialerinterface
FastEthernetFastEthernetIEEE802.3
LoopbackLoopbackinterface
MultilinkMultilink-groupinterface
Port-channelEthernetChannelofinterfaces
TunnelTunnelinterface
Virtual-PPPVirtualPPPinterface
Virtual-TemplateVirtualTemplateinterface
Virtual-TokenRingVirtualTokenRing
bgpBorderGatewayProtocol(BGP)
connectedConnected
eigrpEnhancedInteriorGatewayRoutingProtocol(EIGRP)
ospfOpenShortestPathFirst(OSPF)
ripRoutingInformationProtocol(RIP)
staticStaticroutes
……
四、应用场合
1.配置示例1(单一路由协议环境下-RIP)
初始情况下,R3能够学习到R1的三条loopback路由,以及192.168.12.0/24路由。
现在我们不希望R3学习到192.168.3.0/24的路由,那么可以在R2上如下配置:
R2(config)#access-list1deny192.168.3.0
R2(config)#access-list1permitany
R2(config)#routerrip
R2(config-router)#distribute-list1outfa1/0
当然,在R3上,用in方向的分发列表也可以达到同样的效果。
2.配置示例2(单一路由协议环境下-RIP)
在R2上如果做如下配置:
R2(config)#access-list1deny192.168.3.0
R2(config)#access-list1permitany
R2(config)#routerrip
R2(config-router)#distribute-list1infa0/0
那么,首先R2自己的路由表会发生改变,3.0的路由被过滤掉了,同时R3也就是下游RIP路由器,3.0也学不到。
3.配置示例3(单一路由协议环境下-OSPF)
R2的配置如下:
R2(config)#access-list1deny192.168.3.0
R2(config)#access-list1permitany
R2(config)#routerospf1
R2(config-router)#distribute-list1infa0/0
注意这时候,首先在R2的路由表里,3.0的路由就被干掉了。
注意,这时候实际上,area内OSPF路由器产生的LSA已经是装载到了R2的OSPFdatabase之中,而在R2从OSPFdatabase中计算路由,并准备将路由条目装载进路由表之前,in方向的分发列表发生作用了,将3.0的路由过滤掉了,因此R2的路由表中,是没有3.0的OSPF路由的。
但是,虽然R2自己路由表里没3.0路由,这不妨碍R2将相关LSA泛洪给R3,因此,R3仍然是有1.0、2.0、3.0以及12.0的OSPF路由的。
4.配置示例4(单一路由协议环境下-OSPF)
现在我们在R2上做如下配置:
R2(config)#access-list1deny192.168.3.0
R2(config)#access-list1permitany
R2(config)#routerospf1
R2(config-router)#distribute-list1out
R3的路由表会是什么情况?
实际上,没有任何影响,R3能学习到全网的路由。
至于为什么,我相信前面已经解释的非常清楚了。
5.配置示例5(单一路由协议环境下-OSPFout方向分发列表)
分发列表,部署在OSPF这样的链路状态路由协议中,如果要用out方向,则只能用在这样的场合。
如上图,在R1上部署,R1使用重发布直连的方式引入这三条外部路由,那么out方向的分发列表,只能在R1上部署,且对这三条路由产生作用。
R1(config)#access-list1deny192.168.3.0
R1(config)#access-list1permitany
R1(config)#routerospf1
R1(config-router)#redistributeconnectedsubnets
R1(config-router)#network192.168.12.10.0.0.0area0
R1(config-router)#distribute-list1out
上述配置实现后,R1将过滤掉3.0路由。
6.配置示例6协议间重发布时部署分发列表
RIP重发布进OSPF
情况1
R2的配置如下:
access-list1permit1.1.1.0
routerospf1
redistributeripmetric10subnets
distribute-list1outrip
这里这条命令的意思是,从RIP路由协议重分发过来的路由中,只允许1.1.1.0出去(到OSPF协议,没有方向,只要是运行了OSPF的接口)
R3的路由表里,只有1.1.1.0的路由
情况2
在R2上开设loopback接口2.2.2.0/24,R2既重发布RIP进OSPF,又重发布直连进OSPF
access-list1permit1.1.1.0
routerospf1
redistributeconnectedsubnets
redistributeripmetric10subnets
network192.168.23.00.0.0.255area0
distribute-list1out
//在R3上只有1.1.1.0的路由,也就是说distribute-list1out此处这条命令,对所有从外部注入进OSPF的路由都生效,最终只有1.1.1.0路由存活下来。
而不断路由的来源是直连路由,还是RIP。
情况3
在R2上开设loopback接口2.2.2.0/24,R2既重发布RIP进OSPF,又重发布直连进OSPF
access-list1permit1.1.1.0
routerospf1
redistributeconnectedsubnets
redistributeripmetric10subnets
distribute-list1outrip
//R3的路由表中有路由:
1.1.1.0、2.2.2.0、192.168.12.0
//也就是屏蔽掉了从RIP重发布进来的除了1.1.1.0以外的路由,并重发布本地直连接口