XYCOVO CONSOLE KURISU · WEB 渗透 / AI 辅助攻防 ONLINE
#007 · 2025-06-25✓ PASS

路由策略

控制层与数据层流量的区别、ACL/IP 前缀列表抓取路由、Filter-Policy 过滤、Route-Policy 修改路由属性及 OSPF 集成实战。
网络网络安全路由策略route-policyAUTHOR: KURISU

路由策略(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/16172.16.0.0/24172.16.0.0/30172.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.1.1.0/24 → 拒绝(不引入 OSPF)
  • 2.2.2.0/24 → 引入,修改 Cost 为 10
  • 3.3.3.0/24 → 引入,修改 Cost Type 为 Type-1
  • 4.4.4.0/24 → 引入,修改 Cost Type + Tag 666
  • 12.0.0.0/24 → 直接引入(不做处理)

配置步骤

# ============ 步骤 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 前缀列表:相比 ACL,IP 前缀列表能精准匹配掩码,更适合路由过滤场景
  2. Route-Policy 末尾放行:如果 Route-Policy 有多个 deny 节点,务必在最后一个节点使用 permit 放行其他路由
  3. 预留节点序号:Route-Policy 节点序号间隔建议 10,便于后续插入
  4. 理解 LSA 过滤差异:OSPF 中不同 LSA 类型的过滤行为完全不同,需根据需求选择正确的调用方向
  5. 入方向 vs 出方向:入方向影响本地路由表(不影响其他设备),出方向影响下游设备
  6. 测试优先:在生产环境部署前,使用 display 命令验证策略效果

← #006 Shell 脚本编程…#008 OSPF 进阶… →