news 2026/8/27 9:27:42

eNSP实战 | Filter-Policy 路由策略过滤 —— 用 ip-prefix 精准 “屏蔽“ 一条路由

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
eNSP实战 | Filter-Policy 路由策略过滤 —— 用 ip-prefix 精准 “屏蔽“ 一条路由

面向对象:网络运维 / 数通入门学习者,eNSP + 华为 VRP 平台

实验目标:让某台路由器只不学某一条指定路由,其余路由照常学习

一、实验目标与场景引入

在实际网络中,我们会遇到这样的需求:

  • 某条路由网段不想出现在本机路由表里(例如业务隔离、安全策略、临时割接屏蔽);
  • 其他路由必须正常学习,网络不能断。

这就是路由策略过滤(Filter-Policy)要解决的问题。本实验用最经典的组合:

plaintext

ip-prefix(IP 前缀列表) 定义"哪些要、哪些不要" + filter-policy import 在 OSPF 中拦截"进入路由表"的路由

一句话总结需求:过滤掉 192.168.5.0/24 这条路由,让它不进路由表,其余路由全部放行。

二、实验拓扑与地址规划

为聚焦本实验主题,采用最简两台路由器背靠背拓扑:

plaintext

[R1] GE0/0/0 -------- GE0/0/0 [R2] 10.0.12.1/24 10.0.12.2/24 R1 内侧:GE0/0/1 = 192.168.5.1/24 ← 待被过滤的网段(源头在 R1) R2 内侧:GE0/0/1 = 192.168.6.1/24 ← 正常网段(用来验证"其他路由不受影响")

表格

设备接口IP 地址 / 掩码角色
R1GE0/0/010.0.12.1/24与 R2 互联
R1GE0/0/1192.168.5.1/24目标网段源头(待过滤),下接 PC1
R2GE0/0/010.0.12.2/24与 R1 互联
R2GE0/0/1192.168.6.1/24正常网段(对照验证),下接 PC2

说明:192.168.5.0/24 由 AR1 通过 OSPF 宣告,AR2 正常学习;本实验要在 AR2 上把它过滤掉。网段可以随意改,命令逻辑一样。

⚠️关键前提:eNSP 中路由器接口必须连接设备才会物理 UP。AR1、AR2 的 GE0/0/1 一定要接 PC(或其它设备),否则接口 down,目标网段根本进不了 OSPF,过滤无从谈起。这是本实验最容易踩的第一个坑,详见第七节 "1"。

三、核心原理先搞懂(建议先读这一段再配)

3.1 Filter-Policy 的 import /export 两个方向

在 OSPF 进程视图下,filter-policy方向之分,含义完全不同:

表格

方向作用点效果
import本机收到路由后、写入本机 IP 路由表之前被过滤的路由不进本机路由表
export本机向邻居发布 / 通告路由时被过滤的路由不发给邻居,全网都看不到

本实验用的是import——只管自己这台的 "学"

3.2 关键认知(OSPF 下 import 的特性)

  • filter-policy import只过滤 "进入 IP 路由表" 的路由
  • 不阻断 LSA 的收发与泛洪,LSDB 依然同步、SPF 依然计算;
  • 也就是说:被过滤的路由在 OSPF 协议内部 "还在",只是不落地到路由表
  • 若还有下游路由器,下游依然能学到这条路由(因为没有拦截 LSA)。

这一条是全网公认的易错点,实验里会用命令实测证明给你看。

3.3 为什么用 ip-prefix 而不用 ACL?

过滤路由推荐IP 前缀列表(ip-prefix),它比 ACL 更专业:

表格

对比项ACLip-prefix
匹配内容只能精确匹配 "网络号"同时匹配网络号 + 掩码长度
掩码范围匹配(如 /24~/28)不支持支持(greater-equal /less-equal)
用途也可过滤数据报文只能用于路由过滤,不能过滤数据包

四、实验步骤(带逐行解析)

全部命令在Shell 代码块中,#后是解析注释,可直接照抄。

步骤 1:AR1 基础配置(IP 地址 + OSPF)

在 AR1 上执行:

shell

# 进入系统视图 sys # 给设备起名 AR1,方便区分 sysname AR1 # 配置互联接口 GE0/0/0,连到 AR2 interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.0 quit # 配置内侧接口 GE0/0/1,模拟内网网段 192.168.5.0/24(就是待被过滤的目标网段) interface GigabitEthernet0/0/1 ip address 192.168.5.1 255.255.255.0 quit # 启用 OSPF 进程 1,并指定 Router-ID(习惯用 1.1.1.1) ospf 1 router-id 1.1.1.1 # 进入骨干区域 area 0.0.0.0 # 宣告互联网段 network 10.0.12.0 0.0.0.255 # 宣告目标网段 192.168.5.0/24,让 OSPF 把它传给对端 R2 network 192.168.5.0 0.0.0.255 quit quit # 返回用户视图 quit

解析:network 网段 反掩码中的0.0.0.255是反掩码(255.255.255.0 的反码),只匹配该网段前缀,是 OSPF 宣告的标准写法。

步骤 2:AR2 基础配置(IP 地址 + OSPF)

在 AR2 上执行:

shell

# 进入系统视图 sys # 起名 AR2 sysname AR2 # 配置互联接口,连到 AR1 interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.0 quit # 配置内侧正常网段(用来对照:过滤后这条路由必须还在) interface GigabitEthernet0/0/1 ip address 192.168.6.1 255.255.255.0 quit # 启用 OSPF,Router-ID 用 2.2.2.2 ospf 1 router-id 2.2.2.2 area 0.0.0.0 # 宣告互联网段 network 10.0.12.0 0.0.0.255 # 宣告正常网段 network 192.168.6.0 0.0.0.255 quit quit quit

步骤 3:确认过滤前的 "基线" 状态

在 AR2上查看 OSPF 学到的路由,确认 192.168.5.0/24已经能学到

shell

# 只看 OSPF 学到的路由(此时应能看到 192.168.5.0/24) display ip routing-table protocol ospf

预期输出里会看到类似(路由来源为 OSPF):

plaintext

Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.5.0/24 OSPF 10 2 D 10.0.12.1 GigabitEthernet0/0/0

解析:Proto = OSPFPre = 10说明这是 OSPF 内部路由(区域内)。AR2 此刻两条网段都学得到,这是过滤前的对照基线

步骤 4:定义 IP 前缀列表 BLOCK-ROUTE(核心操作)

在 AR2上执行(注意这里是本实验的关键):

shell

# 进入系统视图 sys # ============ 第一条规则:index 10,拒绝目标网段 ============ # 语法:ip ip-prefix 列表名 index 序号 deny 网段 掩码 # 255.255.255.0 是点分掩码,等价于写 24,都表示"只精确匹配 /24 这个前缀" # 含义:凡是"192.168.5.0/24"这条路由,直接拒绝 ip ip-prefix BLOCK-ROUTE index 10 deny 192.168.5.0 255.255.255.0 # ============ 第二条规则:index 20,兜底放行其余所有路由 ============ # 0.0.0.0 0 表示"匹配任意网段"(网络号为 0 表示不限制前缀) # less-equal 31 表示"掩码长度 <= 31",即排除 /32 主机路由 # 含义:除了上面被拒绝的那条,其余非 /32 路由全部放行 # 【注意】原稿写的 less-than 32,在华为 VRP 中标准写法就是 less-equal 31, # 二者语义等价(都是"掩码长度小于 32") ip ip-prefix BLOCK-ROUTE index 20 permit 0.0.0.0 0 less-equal 31 quit

重要原理(必看):前缀列表按 index 从小到大顺序匹配,命中即停止;并且列表末尾隐含一条 "拒绝所有"。所以:

  • 第 10 条先挡掉 192.168.5.0/24;
  • 第 20 条必须存在,否则其余路由会被隐含的 deny 全部误杀,导致 AR2 一条 OSPF 路由都学不到。
  • 若你的场景需要放行 /32 路由(如 Loopback 通告),把less-equal 31改成less-equal 32即可。

步骤 5:在 OSPF 进程中应用过滤策略

还是在 AR2上,进入 OSPF 进程,挂上这个前缀列表:

shell

# 进入 OSPF 进程 1 ospf 1 # import 方向:过滤"从 OSPF 学到、准备写入本机路由表"的路由 # 意思是:只有通过 BLOCK-ROUTE 列表的路由,才允许进 AR2 的 IP 路由表 filter-policy ip-prefix BLOCK-ROUTE import quit quit

解析:这一行命令挂上后立即生效,不需要重启 OSPF,也不需要重置邻居关系。

步骤 6:验证过滤效果(重点验证三步)

验证一:看 IP 路由表,目标网段应消失

shell

# 在 AR2 上执行 display ip routing-table protocol ospf

预期:192.168.5.0/24 不再出现,而 192.168.6.0/24(R2 本地直连)正常,互联网段正常。

验证二:看前缀列表的命中情况(加分项,务必会)

shell

# 查看前缀列表内容与匹配计数 display ip ip-prefix BLOCK-ROUTE

预期输出:

plaintext

Prefix-list count: 2 ip ip-prefix BLOCK-ROUTE: Description: index 10: deny 192.168.5.0/24 (Matched: 1) index 20: permit 0.0.0.0/0 less-equal 31 (Matched: 1)

解析:Matched计数表示该规则被命中的次数。index 10 命中 1 次说明 192.168.5.0/24 确实被它拦截;index 20 命中说明其他路由被放行。排障时这个计数非常有用:如果 index 20 的 Matched 是 0,说明你的放行规则没生效。

验证三:对照 OSPF 协议路由表(揭露本质的关键一步)

shell

# 在 AR2 上执行 display ospf routing

预期:192.168.5.0/24 在这里仍然存在

这个对比是全实验最有价值的结论:filter-policy import只过滤 "进入 IP 路由表" 的路由,并不影响 OSPF 协议自身的路由计算结果。所以:

  • display ip routing-table:看不到 ✅(需求达成)
  • display ospf routing:还看得到(协议层没被 "动刀")
  • LSDB 里 LSA 也依然在(display ospf lsdb可查)

验证四:ping 实测

shell

# 在 AR2 上 ping 目标网段的接口地址,预期不通(因为路由表里没这条路由) ping 192.168.5.1

预期:Request time out/ 不可达。原因:AR2 路由表已无 192.168.5.0/24,数据包查表失败被丢弃。这正好证明过滤是真实生效的,而不是只在配置里写写而已。

五、结果对比一览

表格

检查项(在 AR2 上)过滤前过滤后
display ip routing-table protocol ospf看 192.168.5.0/24✅ 存在消失
display ospf routing看 192.168.5.0/24✅ 存在✅ 仍存在
LSDB 中 192.168.5.0/24 的 LSA✅ 存在✅ 仍存在
192.168.6.0/24(对照网段)✅ 正常✅ 正常(未被误伤)
R2 ping 192.168.5.1✅ 通❌ 不通

六、深入理解:为什么 "只挡路由、不挡 LSA"?

OSPF 是链路状态协议:所有路由器先同步 LSDB(LSA),再用 SPF 算法各自独立算出到每个网段的最优路由。

filter-policy import是插在 "SPF 算完 → 写入 IP 路由表" 这个环节上的一道闸门:

plaintext

LSDB 同步(LSA 照常收发、泛洪) ↓ SPF 算法计算(OSPF 路由表生成,照样算出 192.168.5.0/24) ↓ ★ filter-policy import 在这里过滤 ★ ← 只在这里起作用 ↓ 写入 IP 路由表(192.168.5.0/24 被挡,不进表)

所以它天然不会去动 LSA—— 这正是链路状态协议的 "路由一致性" 要求决定的。这也解释了为什么下游路由器依然能学到该路由:LSA 没有被拦,SPF 照样算得出来。

记忆口诀:filter-policy import = 只管自己这台 "看不看得到",不管别人 "学不学得到"。想让全网都学不到,才需要 export 方向 / ABR 上的 LSA 过滤,那是后话。

七、避坑指南(新手最容易踩的坑)

  1. 内侧接口没接线,目标网段学不到

    表象:在 R2 上dis ip routing-table protocol ospf无输出,dis ospf routing里只有 10.0.12.0/24 一条,没有 192.168.5.0/24。OSPF 邻居却是 Full。

    排查dis ip int bri发现 AR1 和 AR2 的 GE0/0/1 都是down down

    plaintext

    GigabitEthernet0/0/0 10.0.12.1/24 up up GigabitEthernet0/0/1 192.168.5.1/24 down down ← 问题在这

    根因:eNSP 中路由器接口不连接任何设备时,物理层就是 down。接口 down → 没有直连路由 → OSPF 不宣告该网段 → 对端自然学不到。

    解决:给两个 GE0/0/1 各接一台 PC(PC1/PC2),接口自动 up,OSPF 约几秒收敛后路由即出现。

    反思:当时差点误判成 "配置没配上",其实配置全对,是物理连接的问题。排障时先看接口状态,再查配置。

  2. 忘写第 20 条放行规则→ 前缀列表末尾隐含 deny,结果 AR2 把所有 OSPF 路由全过滤了,网直接 "断光"。记住:deny 前面必须有兜底 permit。
  3. 方向搞反→ 配成export会把路由挡在通告之前,影响的是邻居;本实验要挡 "自己学习",必须用import
  4. 掩码写错192.168.5.0 255.255.255.0只匹配 /24。如果设备上通告的是 /25 或 /32,就匹配不上,过滤无效。排查时用display ip ip-prefix BLOCK-ROUTEMatched计数。
  5. 以为过滤后 LSA 也没了→ 抓包或看 LSDB,LSA 照常在。不要拿 "邻居学不到" 来验收本实验,那是 export 或 LSA 过滤的效果。
  6. less-than写法→ 华为 VRP 中 ip-prefix 的标准参数是greater-equal/less-equal没有less-than关键字。原稿的 "小于 32" 应写成less-equal 31

八、总结

  • 过滤一条路由、不影响其他ip-prefix(精确匹配网段 + 掩码)+filter-policy import(拦截进路由表)是最标准组合;
  • 方向决定一切import挡 "自己学",export挡 "对外发";
  • 链路状态协议的本质:filter-policy 只作用于路由表,不作用于 LSA,这是它与距离矢量协议最不同的地方;
  • 验收display ip routing-table目标消失 +display ip-prefix命中计数 +display ospf routing仍在,三者对上号,实验即成功。

思考题

如果改成三台路由器 AR1→AR2→AR3 串联,只在 AR2 上配filter-policy import,AR3 还能学到 192.168.5.0/24 吗?

如果想让 AR3 也学不到,应该怎么改?(提示:答案就在第六节的原理里)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 9:19:05

Unity性能优化_粒子特效(Particle System)

对CPU和GPU来讲&#xff0c;是一个性能消耗的大户。 以下记录一些针对移动端的优化方式与思考。 优化方式 一 限制同屏Max粒子数 数量尽可能少&#xff0c;推荐30-50个粒子系统&#xff0c;300-500个总粒子数&#xff08;2021年&#xff09;。 二 设计复杂度 避免粒子发射…

作者头像 李华
网站建设 2026/8/27 9:18:56

MATLAB高温防护服热传导建模实战:从数模竞赛到工程复现

1. 这不是一篇“论文赏析”&#xff0c;而是一套可复现的高温防护服热传导建模实战手册 高教社杯数模竞赛里&#xff0c;2018年A题“高温作业专用服装设计”是公认的“硬骨头”——它不考编程炫技&#xff0c;不拼算法新奇&#xff0c;而是把一整套工程热物理建模能力塞进4天72…

作者头像 李华
网站建设 2026/8/27 9:16:25

驳斥关于 ML-KEM 的误解

1. 引言 最近&#xff0c;人们对 NIST 的后量子密码加密标准 ML-KEM、IETF 的相关标准产生了一些担忧&#xff0c;还有许多阴谋论声称恶意行为者操纵了标准化流程。作为一个几乎参与了这一标准化流程各个层面的人&#xff0c;Sophie Schmieg 想快速驳斥自己听到的种种无稽之谈…

作者头像 李华
网站建设 2026/8/27 9:15:30

蓝牙传感器开发新范式:Lynx库如何统一固件与App数据链路

1. 项目背景与核心价值 1.1 从手机直连传感器说起 做过物联网开发的朋友应该都有同感&#xff1a;真正把一颗传感器变成"能用手机直接看到数据"的东西&#xff0c;中间那层开发工程量远比想象中大。传统做法是买一块开发板、写固件、配协议栈、调射频参数&#xff0…

作者头像 李华
网站建设 2026/8/27 9:14:50

生物医学信号处理(北京工业大学)第二章

1.数字滤波器定义&#xff1a;指输入、输出均为数字信号&#xff0c;通过一定运算关系改变输入信号所含频率成分或者滤除某些频率成分。2.数字滤波器实现方法&#xff1a;采用数字逻辑电路或者计算机程序。3.数字滤波器分类&#xff1a;&#xff08;1&#xff09;按照单位冲激响…

作者头像 李华
网站建设 2026/8/27 9:14:25

SPADE框架:可执行环境+自对弈+共进化,让AI自己生成训练环境

最近在调研大模型后训练&#xff08;post-training&#xff09;与智能体训练方案时&#xff0c;我注意到一个非常有意思的方向&#xff1a;让 AI 自己生成训练环境&#xff0c;然后通过自对弈持续进化。这个思路的核心框架之一便是 SPADE&#xff0c;它把“可执行代码环境”“自…

作者头像 李华