路由过滤 汇总.note
1、office-list:
可使用 office-list的路由协议:RIP、EIGRP
不能使用 office-list的路由协议:ospf、BGP(1)RIP / EIGRP:
in方向:对邻居传入的路由增加跳数/度量值
out方向:对从本地传给邻居的路由增加跳数/度量值
access-list 1 permit 1.1.1.1 /32
router eigrp 100
# 第一个值指定0可以匹配所有路由
# 第二个值表示要增加的路由跳数/度量值
# 最后的接口可以不加,加了就只对单个接口生效,不加就对所有接口生效
offset-list 1 out 1 g0/12、OSPF 专用:
(1)ip ospf prefix-suppression:
# 作用,该直连接口仅建立OSPF邻居,但是不将该接口的OSPF网段通告进OSPF进程中:
## 可以用 distribute-list + filter-list 实现一样的效果,但是不如这一条命令方便快捷
int g0/0 //两端邻居都配置
ip ospf prefix-suppression3、distribute-list:
可使用 distribute-list的路由协议:RIP、EIGRP、ospf、BGP
但是BGP不建议使用distribute-list,直接使用route-map更好(1)RIP/EIGRP:
in方向:过滤邻居传入的路由
out方向:过滤从本地传给邻居的路由
ip prefix-list R1_Loop0 seq 5 deny 1.1.1.1/32
ip prefix-list R1_Loop0 seq 10 permit 0.0.0.0/0 le 32
router eigrp 100
# 最后的接口可以不加,加了就只过滤单个接口的路由,不加就过滤所有接口的路由
distribute-list prefix R1_Loop0 in g0/2(2)OSPF:
注意:OSPF只能过滤in方向的路由,并且只影响路由进入本地路由表,不影响该路由发给其他邻居
ip prefix-list R1_Loop0 seq 5 deny 1.1.1.1/32
ip prefix-list R1_Loop0 seq 10 permit 0.0.0.0/0 le 32
router ospf 100
# 最后的接口可以不加,加了就只过滤单个接口的路由,不加就过滤所有接口的路由
distribute-list prefix R1_Loop0 in g0/2distribute-list out方向在OSPF其实也能生效,但是只能过滤本地重分发进ospf进程的路由,例如重分发eigrp,但是这样做多此一举,在重分发时调用 route-map 过滤还更简单
(3)BGP(比较鸡肋):
BGP也支持distribute-list 过滤,但是跟ospf的out方向一样鸡肋,还不如直接使用 route-map
router bgp 100
neighbor 12.1.1.2 distribute-list 10 in
neighbor 12.1.1.2 distribute-list 20 out
# 还不如使用route-map:
neighbor 12.1.1.2 route-map RM-IN in
neighbor 12.1.1.2 route-map RM-OUT out4、filter-list:
可使用 filter-list的路由协议:ospf、BGP
不可使用 filter-list的路由协议RIP、EIGRP、
BGP filter-list:用AS-PATH ACL 过滤BGP路由。
OSPF area filter-list:在ABR 上过滤区域间路由,也就是3类LSA。(1)OSPF(ABR上配置):
只能在ABR上配置,只能过滤三类LSA(区域间路由:O IA 路由),一类、二类LSA(区域内路由)过滤不了,也无法过滤五类、7类LSA(重分发路由),当然,5类、7类路由可以在重分发时直接route-map过滤
只能使用prefix-list 进行匹配
area 1 ... in:过滤从其他区域传入 area 1的路由:3类LSA
area 1 ... out:过滤从 area 1出去的路由(过滤从area 1传递到其他区域的路由:3类LSA)
ip prefix-list R1_Loop0 seq 5 deny 1.1.1.1/32
ip prefix-list R1_Loop0 seq 10 permit 0.0.0.0/0 le 32
router ospf 1
area 1 filter-list prefix R1_Loop0 in(2)BGP(配置as-path acl使用):
只能通过 AS-PATH 属性过滤
# 定义 as-path list(这个需要使用正则表达式匹配):
## 匹配本地始发的路由(next-hop为:0.0.0.0的路由):
ip as-path access-list 10 permit ^$
## 匹配所有BGP路由:
ip as-path access-list 10 permit .*
## 只接收AS 200的路由(匹配AS PATH中只有AS 200的路由):
ip as-path access-list 10 permit ^200$
ip as-path access-list 10 deny .*
## 禁止将AS-PATH包含AS 100的路由通告(过滤经过AS 100的路由):
ip as-path access-list 10 deny _100_
ip as-path access-list 10 permit .*
## 匹配以 AS 100结尾的路由(匹配始发于AS 100的路由):
ip as-path access-list 10 permit _100$
ip as-path access-list 10 deny .*
## 匹配以AS 100开头的路由:
ip as-path access-list 10 permit ^100_
ip as-path access-list 10 deny .*
### as-path access-list 默认末尾有一条 deny .* 拒绝所有的规则# AS-PATH的方向:
左边 = 离你最近的 AS
右边 = 路由的始发 AS / Origin AS
# 例如:
100 200 300
这条路由经过AS 300始发,经过AS 200,再经过AS 100,最后传到这里需要注意如果开了反射器之类的、有多路径之类的,把最优路由拒绝了该路由是否会通过其他邻居的次优路径再传进来
neighbor ... filter-list 10 in:邻居传入路由时,将路由用as-path access-list 过滤一遍
neighbor ... filter-list 10 out:传路由给邻居前,将路由用as-path access-list 过滤一遍
# 允许始发于AS 200的路由,过滤经过AS 200的路由:
ip as-path access-list 10 permit _200$
ip as-path access-list 10 deny _200_
ip as-path access-list 10 permit .*
router bgp 400
neighbor 100.2.4.2 filter-list 10 in
neighbor 100.3.4.3 filter-list 10 in
5、database-filter:
可使用 database-filter的路由协议:ospf
不可使用 datebase-filter的路由协议RIP、EIGRP、BGP
database-filter 无法直接过滤指定路由,但是可以禁止向指定接口发送(泛洪)SLA(相当于过滤所有OSPF路由)
与被动接口的区别:
database-filter:不发送LSA,仍然能够发送Hello包建立邻居
passive-interface:不发送Hello,不建立邻居,自然也不会发送LSA
## 根据试题要求判断要选择哪个进行配置(1)OSPF:
## 接口配置:
# 不通过G0/0接口向外发送 LSA(与G0/0接口建立邻接关系的邻居将无法从本机获取到任何OSPF路由,但是这个邻居它自身的OSPF路由还是能够正常传递给本机)
interface GigabitEthernet0/0
ip ospf database-filter all out
## 单独针对邻居配置(指定邻居router-id):
router ospf 1
neighbor 5.5.5.5 database-filter all out6、PBR:
(1)在 源接口应用,控制通过的路由:
# 配置 ACL匹配路由:
access-list 10 permit 192.168.1.0 0.0.0.255
# 配置 route-map 设置下一跳:
route-map PBR permit 10
match ip address 10
set ip next-hop 1.1.1.1
# 在 源接口应用 PBR:(该路由从哪个接口进入,就在哪个接口应用)
interface g0/0
ip policy route-map PBR (2)在 本地应用,控制始发于本地的路由:
# 配置 ACL匹配路由:
access-list 10 permit 192.168.1.0 0.0.0.255
# 配置 route-map 设置下一跳:
route-map PBR permit 10
match ip address 10 / match interface Loopback 0 //这里使用 match interface 会好一点
set ip next-hop 1.1.1.1
# 应用PBR(控制始发于本地的路由)
ip local policy route-map PBR测试使用 traceroute [IP] source
(3)配置 SLA、Track检测,设置两条或多条 set ip next-hop:
# 先配置 sla监测:
ip sla 1
icmp-echo 1.1.1.2 source-interface GigabitEthernet0/0 //监测 1.1.1.2 的对端地址,使用Gig0/0为源地址
frequency 5 //监测间隔为 5秒
ip sla schedule 1 life forever start-time now //启用sla1
ip sla 2
icmp-echo 2.2.2.2 source-interface GigabitEthernet0/3
frequency 5
ip sla schedule 2 life forever start-time now
# 配置 track关联sla:
track 1 ip sla 1 reachability
track 2 ip sla 2 reachability
# 配置 ACL,匹配内网流量:
ip access-list extended NAT
deny ip 192.168.1.0 0.0.0.255 172.16.1.0 0.0.0.255 // 这条是拒绝VPN流量(如果配置了VPN就需要,如果不拒绝就会将去往VPN的流量也NAT,导致VPN内网无法通信)
permit ip 192.168.1.0 0.0.0.255 any
# 配置 路由策略:
route-map POLICY
match ip address NAT
set ip next-hop verify-availability 1.1.1.2 1 track 1 //匹配内网地址,设置下一跳为 1.1.1.2,设置优先级为1,应用track 1,当track 1状态为 up时应用该策略,当为 down时则不应用(优先启用这条,因为优先级为 1)
set ip next-hop verify-availability 2.2.2.2 2 track 2 //匹配内网地址,设置下一跳为 2.2.2.2,设置优先级为2,应用track 2,当track 2状态为 up时应用该策略,当为 down时则不应用
## 如果想要优先走 G0/3 进行NAT转换,那么就将 2.2.2.2 那条的优先级设置为1,将 1.1.1.1 的优先级设置为 2
# 在内网接口应用路由策略:
int g0/2
ip policy route-map POLICY
## 如果有多个内网接口:
int ra g0/1-2
ip policy route-map POLICY