路由过滤 汇总.note

noteId: WEBb0f029375e2471c98b7fc914de963f20 · 原始路径:/ALL/网络 - C模块/1-路由协议合集、路由控制、策略路由/路由控制、PBR/路由过滤 汇总.note · 图片:1 · 附件待处理:0

 
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/1
 
 
2、OSPF 专用:
 
(1)ip ospf prefix-suppression:
# 作用,该直连接口仅建立OSPF邻居,但是不将该接口的OSPF网段通告进OSPF进程中:
## 可以用 distribute-list + filter-list 实现一样的效果,但是不如这一条命令方便快捷
int g0/0    //两端邻居都配置
 ip ospf prefix-suppression
 
 
 
 
3、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/2
 
distribute-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 out
 
 
4、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 out
 
 
6、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