一、概述
分发列表(distribute-list)是用来控制路由更新的一种方法
二、不同路由协议使用分发列表
拓扑图
1、距离矢量路由协议
① RIP
配置路由协议
R1
开启RIP,声明网段
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 10.1.1.0
R1(config-router)#network 100.1.1.0
R1(config-router)#network 10.1.2.0
R1(config-router)#network 100.1.3.0
R2
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 10.1.1.0
R2(config-router)#network 20.1.1.0
R3
R3(config)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 20.1.1.0
查看路由表
配置分发列表(IN方向)
R2上配分发列表
R2(config)#access-list 1 deny 100.1.2.0 抓取被过滤的路由条目前缀
R2(config)#access-list 1 permit any 允许其他
R2(config)#router rip
R2(config-router)#distribute-list 1 in IN方向启用分发列表
R2和R3中100.1.2.0路由条目已经被拒绝加入路由表
配置分发列表(OUT方向)
R1上配置分发列表
R1(config)#access-list 1 deny 100.1.3.0 抓取被过滤的路由条目前缀
R1(config)#access-list 1 permit any
R1(config)#router rip
R1(config-router)#distribute-list 1 out
R2和R3中100.1.3.0网段已经被被拒绝加入路由表(上面把100.1.2.0网段拒绝了,所以这里没有100.1.2.0网段)
② EIGRP
配置路由协议
R1
R1(config)#router eigrp 100
R1(config-router)#no auto-summary
R1(config-router)#network 10.1.1.0 0.0.0.255
R1(config-router)#network 100.1.1.0 0.0.0.255
R1(config-router)#network 100.1.2.0 0.0.0.255
R1(config-router)#network 100.1.3.0 0.0.0.255
R2
R2(config)#router eigrp 100
R2(config-router)#no auto-summary
R2(config-router)#network 10.1.1.0 0.0.0.255
R2(config-router)#network 20.1.1.0 0.0.0.255
R3
R3(config)#router eigrp 100
R3(config-router)#no auto-summary
R3(config-router)#network 20.1.1.0 0.0.0.255
查看路由表
配置分发列表(IN方向)
R2
R2(config)#access-list 1 deny 100.1.3.0 抓取被过滤的路由条目前缀
R2(config)#access-list 1 permit any
R2(config)#router eigrp 100
R2(config-router)#distribute-list 1 in
R2和R3中100.1.2.0路由条目已经被拒绝加入路由表
配置分发列表(OUT方向)
R1
R1(config)#access-list 1 deny 100.1.1.0 抓取被过滤的路由条目前缀
R1(config)#access-list 1 permit any
R1(config-router)#router eigrp 100
R1(config-router)#distribute-list 1 out
R2和R3中100.1.1.0网段已经被被拒绝加入路由表(上面把100.1.3.0网段拒绝了,所以这里没有100.1.3.0网段)
2、链路状态路由协议
① OSPF
配置路由协议
R1
R1(config)#router ospf 10
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0
R1(config-router)#network 100.1.1.0 0.0.0.255 area 0
R1(config-router)#network 100.1.2.0 0.0.0.255 area 0
R1(config-router)#network 100.1.3.0 0.0.0.255 area 0
R2
R2(config)#router ospf 10
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0
R2(config-router)#network 20.1.1.0 0.0.0.255 area 0
R3
R1(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 20.1.1.0 0.0.0.255 area 0
查看路由表
配置分发列表(IN方向)
R2
R2(config)#access-list 1 deny 100.1.1.1 抓取路由前缀100.1.1.1
R2(config)#access-list 1 permit any
R2(config)#router ospf 10
R2(config-router)#distribute-list 1 in
R2中100.1.1.1路由条目已经被拒绝加入路由表
R3中的100.1.1.1路由条目依然在路由表中
OSPF传递的是LSA而不是路由条目,在R2上使用分发列表只会筛选路由前缀不会筛选LSA,所以LSA中依然有100.1.1.1的路由信息,当R2传递LSA给R3,R3查看LSA有100.1.1.1的路由信息,然后加入路由表
注:由于OSPF传递的是LSA,而分发列表只过滤路由条目,所以只能在本地使用(IN方向),不能在OUT方向使用
② ISIS
配置路由协议
R1
R1(config)#router isis 10
R1(config-router)#net 49.0001.0000.0000.0001.00
R1(config)#interface range loopback 0 - 2 , gigabitEthernet 0/0
R1(config-if-range)#ip router isis 10
R2
R2(config)#router isis 10
R2(config-router)#net 49.0001.0000.0000.0002.00
R2(config)#interface range g0/0-1
R2(config-if-range)#ip router isis 10
R3
R3(config)#router isis 10
R3(config-router)#net 49.0001.0000.0000.0003.00
R3(config)#interface g0/0
R3(config-if)#ip router isis 10
查看路由表
配置分发列表(IN方向)
R2
R2(config)#access-list 1 deny 100.1.1.0
R2(config)#access-list 1 permit any
R2(config)#router isis 10
R2(config-router)#distribute-list 1 in
R2中100.1.1.1路由条目已经被拒绝加入路由表
R3中的100.1.1.1路由条目依然在路由表中
ISIS传递的是LSP而不是路由条目,在R2上使用分发列表只会筛选路由前缀不会筛选LSP,所以LSP中依然有100.1.1.1的路由信息,当R2传递LSP给R3,R3查看LSA有100.1.1.1的路由信息,然后加入路由表
3、外部网关协议
① IBGP
由于BGP运行在应用层,所以我使用rip保证底层互通
R1,R2,R3分别使用环回接口10地址1.1.1.1、 2.2.2.2 、3.3.3.3 来建立邻居
配置路由协议
R1
R1(config)#router bgp 100
R1(config-router)#neighbor 2.2.2.2 remote-as 100
R1(config-router)#neighbor 2.2.2.2 update-source loopback 10
R1(config-router)#network 100.1.1.0 mask 255.255.255.0
R1(config-router)#network 100.1.2.0 mask 255.255.255.0
R1(config-router)#network 100.1.3.0 mask 255.255.255.0
R2
R2(config)#router bgp 100
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source loopback 10
R2(config-router)#neighbor 3.3.3.3 remote-as 100
R2(config-router)#neighbor 3.3.3.3 update-source loopback 10
R3
R3(config)#router bgp 100
R3(config-router)#neighbor 2.2.2.2 remote-as 100
R3(config-router)#neighbor 2.2.2.2 update-source loopback 10
查看路由表
只有R1上宣告了网段,所以R1上没有BGP的路由条目
R2
IBGP不会将邻居接收的的 路由条目传到另一个邻居,所以R3上不会接收到R1宣告的路由条目
配置分发列表(IN方向)
R2
R2(config)#access-list 1 deny 100.1.2.0
R2(config)#access-list 1 permit any
R2(config)#router bgp 100
R2(config-router)#distribute-list 1 in
R2和R3中100.1.2.0路由条目已经被拒绝加入路由表
查看BGP表可以学到100.1.2.0网段的路由,但是加入路由表失败
R2(config-router)#neighbor 1.1.1.1 distribute-list 1 in
如果在邻居上启用分发列表,BGP表中将不会出现100.1.2.0的网络
配置分发列表(OUT方向)
R1
R1(config)#access-list 1 deny 100.1.3.0
R1(config)#access-list 1 permit any
R1(config)#router bgp 100
R1(config-router)#distribute-list 1 out
从OUT方向过滤就不会将路由向下传递,同时下面的BGP表也不会有100.1.3.0这个网络
① EBGP
配置路由协议
R1
R1(config)#router bgp 100
R1(config-router)#neighbor 2.2.2.2 remote-as 200
R1(config-router)#neighbor 2.2.2.2 update-source loopback 10
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop
R1(config-router)#network 100.1.1.0 mask 255.255.255.0
R1(config-router)#network 100.1.2.0 mask 255.255.255.0
R1(config-router)#network 100.1.3.0 mask 255.255.255.0
R2
R2(config)#router bgp 200
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source loopback 10
R2(config-router)#neighbor 1.1.1.1 ebgp-multihop
R2(config-router)#neighbor 3.3.3.3 update-source loo
R2(config-router)#neighbor 3.3.3.3 update-source loopback 10
R2(config-router)#neighbor 3.3.3.3 ebgp-multihop
R3
R3(config)#router bgp 300
R3(config-router)#neighbor 2.2.2.2 remote-as 200
R3(config-router)#neighbor 2.2.2.2 update-source loopback 10
R3(config-router)#neighbor 2.2.2.2 ebgp-multihop
查看路由表
配置分发列表(IN方向)
R2
R2(config)#access-list 1 deny 100.1.2.0
R2(config)#access-list 1 permit any
R2(config)#router bgp 200
R2(config-router)#distribute-list 1 in
R2和R3中100.1.2.0路由条目已经被拒绝加入路由表
配置分发列表(OUT方向)
R1
R1(config)#access-list 1 deny 100.1.1.0
R1(config)#access-list 1 permit any
R1(config)#router bgp 100
R1(config-router)#distribute-list 1 out
R2和R3中100.1.1.0网段已经被被拒绝加入路由表(上面把100.1.2.0网段拒绝了,所以这里没有100.1.2.0网段)