当前位置: 首页 > news >正文

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 也学不到,应该怎么改?(提示:答案就在第六节的原理里)

http://www.cnnetsun.cn/news/4242505.html

相关文章:

  • Unity性能优化_粒子特效(Particle System)
  • MATLAB高温防护服热传导建模实战:从数模竞赛到工程复现
  • 驳斥关于 ML-KEM 的误解
  • 蓝牙传感器开发新范式:Lynx库如何统一固件与App数据链路
  • 生物医学信号处理(北京工业大学)第二章
  • SPADE框架:可执行环境+自对弈+共进化,让AI自己生成训练环境
  • 用 Python 驱动 COMSOL 自动化仿真:6 行代码跑通
  • 刚刚,ChatGPT 开始卖广告了!
  • 什么是 SAP HANA Cloud 内置的 Property Graph Engine(属性图引擎)
  • BiliTools 开源 B站下载工具:把番剧、音乐、弹幕存到本地
  • 多模态图Transformer预训练:构建下一代推荐系统基础架构
  • E27灯座电流钳测试实战:从原理到精准测量的完整指南
  • AI服务器涨价超15%:内存成本飙升背后的工程应对之道
  • AI问答努力程度选择器实现指南:从粒度设计到前后端参数映射
  • Lodash.js核心函数实战指南:提升JavaScript工程效率
  • 医疗AI Agent执行层为何绕不开X12标准?工程实践指南
  • 零基础入门具身智能:从运动控制到ROS2工程实践
  • Win10专业版卡顿重装系统全指南:判断、备份、安装与优化
  • 临床数据建模实战:时间对齐、语义校验与诊疗逻辑嵌入
  • 用LangChain只会调包?3处源码让你从调包到掌控,效率翻倍
  • MATLAB工程师实战指南:从矩阵哲学到工业级避坑
  • 数学建模竞赛中聚类算法实战:从DBSCAN到K-Means的选型与应用
  • Matlab实战社交推荐:从协同过滤到矩阵分解的数学建模
  • 数学建模竞赛中黄河水沙数据的时空特征分析与Python实现
  • 01-python自动化测试学习路线
  • 京东商品库存监控自动下单:10分钟跑通 jd-happy 全流程?
  • DBX--开源、轻量的数据库与数据基础设施工作台
  • 华为MetaERP # Oracle EBS FA 资产业务层 —— 资产主数据完整深度解析## 前置架构边界EBS FA 分层回顾:1. **资产业务层**:资产主数据、资产事务引擎、分
  • CSP-J 初赛(以满分为目标):第十课《排序算法基础——让一群“乱站的同学”排好队》
  • 车载 ECU 信息安全入门:一文看懂安全启动(Secure Boot)原理