Skip to content
Kurisu
Go back

路由策略

路由策略(Routing Policy)在控制层面截取路由信息并修改或过滤,从而影响路由表生成与选路结果,是网络精细化管理的核心技术。


一、控制层流量 vs 数据层流量

流量类型定义示例
控制层流量路由协议传递路由信息产生的流量OSPF LSU、RIP Update、BGP Update
数据层流量设备访问目标地址时产生的流量用户访问网站、文件传输、Ping

ACL 主要针对数据层流量;路由策略主要针对控制层流量。

核心逻辑两步:

第一步:截取流量(抓流量)── 确定要处理哪些路由
第二步:执行策略(做策略)── 对抓取的路由进行修改或拒绝

二、抓取流量的工具

2.1 ACL 列表

ACL 本为数据层设计,也能抓路由信息,但存在明显局限:

优点:通过通配符可以灵活匹配 IP 地址的数字特征

缺点:无法匹配路由的掩码特征

# ACL 只能按数字特征匹配
rule permit source 192.168.1.0 0.0.0.255

# 但是无法区分以下三条路由:
# 192.168.1.0/24
# 192.168.1.0/25
# 192.168.1.0/26
# 以上 ACL 会同时匹配所有三条

2.2 IP 前缀列表(ip-prefix)

IP 前缀列表专为路由过滤设计,可精确匹配网络地址(前缀)与掩码长度(前缀长度)。

ip ip-prefix <名称> index <序号> <permit|deny> <网络地址> <掩码长度> \
    [greater-equal <最小掩码>] [less-equal <最大掩码>]

匹配规则:自上而下逐一匹配,一旦匹配即执行、不再向下;末尾隐含拒绝所有。

精确匹配示例

四条路由:172.16.0.0/16、172.16.0.0/24、172.16.0.0/30、172.16.1.1/32

IP 前缀列表匹配结果说明
permit 172.16.0.0 24仅 /24精确匹配掩码 24
permit 172.16.0.0 16 less-equal 24/16、/24掩码 16-24
permit 172.16.0.0 16 greater-equal 24/24、/30、/32掩码 24-32
permit 172.16.0.0 16 greater-equal 24 less-equal 30/24、/30掩码 24-30

通配匹配示例

IP 前缀列表匹配结果说明
permit 0.0.0.0 0 less-equal 32所有路由通配地址 = 任意前缀
permit 0.0.0.0 0 greater-equal 32 less-equal 32仅主机路由 /32掩码严格等于 32
permit 0.0.0.0 0仅默认路由 0.0.0.0/0特殊语句

多条目示例

# 拒绝 172.16.0.0/30,允许 /24,拒绝其他所有
ip ip-prefix ee index 10 deny 172.16.0.0 30
ip ip-prefix ee index 20 permit 172.16.0.0 24
# 最终只有 172.16.0.0/24 被允许(末尾隐含拒绝)

# 拒绝 172.16.0.0/30,允许所有其他
ip ip-prefix gg index 10 deny 172.16.0.0 30
ip ip-prefix gg index 20 permit 0.0.0.0 0 less-equal 32
# 除了 172.16.0.0/30,所有路由都被允许

三、执行策略的工具

3.1 Filter-Policy(过滤策略)

Filter-Policy 只能允许/拒绝路由,不能修改路由属性,也不能过滤 LSA。

调用方向含义影响
import入方向过滤阻止接收的路由进入路由表
export出方向过滤阻止路由被通告出去

配置示例:RIP 路由过滤

需求:禁止 R2/R3 学习到 192.168.2.0/24 路由

# 1、抓取流量
[R2] ip ip-prefix aa deny 192.168.2.0 24    # 拒绝该路由
[R2] ip ip-prefix aa permit 0.0.0.0 0 less-equal 32  # 允许其他

# 2、做策略(入方向)
[R2] rip 1
[R2-rip-1] filter-policy ip-prefix aa import

使用 ACL 实现:

# 1、抓取流量
[R2] acl 2000
[R2-acl-basic-2000] rule deny source 192.168.2.0 0.0.0.255
[R2-acl-basic-2000] rule permit source any

# 2、做策略(出方向)
[R2] rip 1
[R2-rip-1] filter-policy 2000 export

3.2 Route-Policy(路由策略)

Route-Policy 支持 If-Match(条件匹配)+ Apply(修改动作) 的组合模式。

Route-Policy <名称>
  ├── Node 10:  if-match 条件 → apply 动作  (匹配则执行,不再向下)
  ├── Node 20:  if-match 条件 → apply 动作
  ├── Node 30:  if-match 条件 → apply 动作
  └── (末尾隐含拒绝所有)

匹配规则:自上而下逐一匹配,节点内所有 if-match 都满足才执行 apply、不再向下匹配;末尾隐含拒绝所有。

序号留间隔(10、20、30)便于后续插入新节点。


四、OSPF 路由策略深度分析

OSPF 等链路状态协议中,Filter-Policy 对各类型 LSA 行为不同:

4.1 各类 LSA 的策略行为

LSA 类型调用方向影响效果过滤原因
1/2 类 LSA入方向仅影响本地阻止拓扑生成路由
3 类 LSA入方向影响 ABR 自身及后续区域阻止根据 LSA 生成路由 → 不产生 3 类 LSA
3 类 LSA出方向无效-
5/7 类 LSA入方向本地不将 LSA 转路由,不阻止 LSA 传播阻止路由生成 LSA
5/7 类 LSA出方向影响除 ASBR 外的所有设备阻止 LSA 产生

4.2 OSPF Filter-Policy 配置示例

需求 1:禁止 R2/R3 学习到 192.168.1.0/24 路由

# 在 R1 出方向做过滤(3 类 LSA,影响所有区域)
[R1] acl 2000
[R1-acl-basic-2000] rule deny source 192.168.1.0 0.0.0.255
[R1-acl-basic-2000] rule permit source any
[R1-acl-basic-2000] quit
[R1] ospf 1
[R1-ospf-1] filter-policy 2000 export

需求 2:禁止 R5 收到 192.168.12.0/24 路由

# 在 R5 入方向过滤(仅影响本地路由表)
[R5] acl 2000
[R5-acl-basic-2000] rule deny source 192.168.12.0 0.0.0.255
[R5-acl-basic-2000] rule permit source any
[R5-acl-basic-2000] quit
[R5] ospf 1
[R5-ospf-1] filter-policy 2000 import

五、Route-Policy 配置实战

5.1 场景:RIP 重发布到 OSPF

R1 跑 RIP,R2 同时跑 RIP 与 OSPF,需把 RIP 路由重发布进 OSPF 并做差异化处理。

R1 环回路由:

# ============ 步骤 1:抓取流量 ============
# 使用 ACL 抓取(用于 Node 10 和 Node 20)
[R2] acl 2000
[R2-acl-basic-2000] rule permit source 1.1.1.0 0.0.0.255
[R2-acl-basic-2000] quit

[R2] acl 2001
[R2-acl-basic-2001] rule permit source 2.2.2.0 0.0.0.255
[R2-acl-basic-2001] quit

# 使用 IP 前缀列表抓取(用于 Node 30 和 Node 40)
[R2] ip ip-prefix aa permit 3.3.3.0 24
[R2] ip ip-prefix bb permit 4.4.4.0 24

# ============ 步骤 2:做路由策略 ============
# Node 10:拒绝 1.1.1.0/24
[R2] route-policy RP permit node 10
[R2-route-policy] if-match acl 2000
[R2-route-policy] quit
# 注意:Node 10 模式是 deny(但这里是 permit 模式,apply 不写默认拒绝?)

# 正确写法 — Node 10 拒绝
[R2] route-policy RP deny node 10
[R2-route-policy] if-match acl 2000
[R2-route-policy] quit

# Node 20:允许 2.2.2.0/24,修改 Cost 为 10
[R2] route-policy RP permit node 20
[R2-route-policy] if-match acl 2001
[R2-route-policy] apply cost 10
[R2-route-policy] quit

# Node 30:允许 3.3.3.0/24,修改 Cost Type 为 Type-1
[R2] route-policy RP permit node 30
[R2-route-policy] if-match ip-prefix aa
[R2-route-policy] apply cost-type type-1
[R2-route-policy] quit

# Node 40:允许 4.4.4.0/24,修改 Cost Type + Tag
[R2] route-policy RP permit node 40
[R2-route-policy] if-match ip-prefix bb
[R2-route-policy] apply cost-type type-1
[R2-route-policy] apply tag 666
[R2-route-policy] quit

# Node 50:允许所有其他路由(相当于放行剩余路由)
[R2] route-policy RP permit node 50
[R2-route-policy] quit

# ============ 步骤 3:在重发布中调用 ============
[R2] ospf 1
[R2-ospf-1] import-route rip route-policy RP

5.2 验证配置

# 查看 Route-Policy 配置
display route-policy

# 查看 Route-Policy 名称 RP
display route-policy name RP

# 在 OSPF 中查看引入的外部路由
display ospf routing

# 查看路由的 Tag 和 Cost
display ip routing-table verbose

六、配置命令速查

6.1 IP 前缀列表

# 创建 IP 前缀列表
ip ip-prefix <名称> index <序号> <permit|deny> <网络地址> <掩码> \
    [greater-equal <值>] [less-equal <值>]

# 常用通配模式
ip ip-prefix ALL permit 0.0.0.0 0 less-equal 32       # 允许所有
ip ip-prefix DEFAULT permit 0.0.0.0 0                   # 仅默认路由
ip ip-prefix HOST permit 0.0.0.0 0 greater-equal 32 less-equal 32  # 仅主机路由

# 查看 IP 前缀列表
display ip ip-prefix
display ip ip-prefix name <名称>

6.2 Route-Policy

# 创建 Route-Policy
route-policy <名称> <permit|deny> node <序号>

# 常用 if-match 条件
if-match acl <编号>
if-match ip-prefix <名称>
if-match ip address prefix-list <名称>
if-match interface <接口>
if-match tag <值>

# 常用 apply 动作
apply cost <值>                    # 修改开销
apply cost-type type-1             # 修改开销类型
apply tag <值>                     # 修改 Tag
apply ip-address next-hop <IP>     # 修改下一跳
apply preference <值>              # 修改优先级

# 查看
display route-policy
display route-policy name <名称>

6.3 Filter-Policy

# RIP 中调用
[Router-rip-1] filter-policy <acl|ip-prefix> <编号|名称> <import|export>

# OSPF 中调用
[Router-ospf-1] filter-policy <acl|ip-prefix> <编号|名称> <import|export>

# 在接口下调用(RIP)
[Router-GigabitEthernet0/0/1] rip metricin route-policy <名称> <import|export>

七、ACL vs IP 前缀列表 vs Route-Policy 对比

特性ACLIP 前缀列表Route-Policy
匹配对象IP 地址路由前缀 + 掩码长度路由(可组合多种条件)
掩码匹配不支持精确 + 范围匹配通过调用前缀列表
修改能力仅 permit/deny仅 permit/deny支持 apply 多种修改
节点机制逐条匹配逐条匹配多节点,if-match + apply
典型用途数据层 ACL路由精准过滤路由重发布、BGP 策略
灵活性低中高

八、路由策略设计最佳实践

  1. 优先 IP 前缀列表——能精准匹配掩码;
  2. Route-Policy 末尾放行——多个 deny 节点后务必用 permit 放行其余路由;
  3. 预留节点序号——间隔 10,便于插入;
  4. 理解 LSA 过滤差异——OSPF 各 LSA 类型过滤行为不同,要选对调用方向;
  5. 入方向影响本地路由表,出方向影响下游设备;
  6. 生产部署前用 display 命令验证策略效果。


Share this post:

Previous Post
OSPF 进阶
Next Post
Ansible 自动化运维