ip-prefix(IP前缀列表)

1. 核心思想

ip-prefix 是一个专门用来"匹配路由"的筛子,它能同时检查"网络号"和"掩码长度"两个要素。

设计初衷:ACL只能匹配IP地址,管不了掩码长度,导致路由过滤经常出错;ip-prefix 把掩码长度也作为匹配条件,解决了这个痛点。

生活类比:你要从一堆快递中挑出"所有寄往北京市朝阳区、并且箱子是中等尺寸(高20-30cm)的"。

  • ACL:只看地址"北京市朝阳区",不看箱子尺寸。

  • ip-prefix:既看地址"北京市朝阳区",又看箱子尺寸"20-30cm"。


2. 底层原理 & 设计逻辑

2.1 为什么ACL做不到精确匹配路由?

路由条目包含两个关键信息:目的网络 (如192.168.1.0)和掩码长度 (如24)。

ACL在匹配时,只看目的网络的前多少位是否符合,完全不关心掩码长度

举个例子

  • 路由A:192.168.1.0/24

  • 路由B:192.168.1.0/16

你用ACL:rule permit source 192.168.1.0 0.0.0.255(通配符表示前24位固定)。

结果:路由A和路由B的前24位都是192.168.1.0,所以两条都被匹配。你无法用ACL说"只要掩码长度=24的"。

这就是现网故障的根源:工程师想放行/24,却因为ACL的局限,把/16也放行了,导致路由器学到大网段,流量被错误吸引。

2.2 ip-prefix 如何解决?

ip-prefix 的每条规则有三个核心参数:

  • 网络号 (如 192.168.1.0

  • 掩码长度 (如 24)------ 这个就是"精确匹配掩码"

  • 掩码范围 (可选,如 greater-equal 16 less-equal 24)------ 允许一个区间

匹配规则:网络号匹配 + 掩码长度在指定范围内,才算命中。

所以:

bash 复制代码
ip ip-prefix TEST permit 192.168.1.0 24
  • 路由A(/24):掩码长度=24 → 匹配 → 允许

  • 路由B(/16):掩码长度=16 ≠ 24 → 不匹配 → 拒绝

一句话:ip-prefix 把"掩码长度"变成了可比较的条件。

2.3 掩码范围的写法(考试重点)

写法 含义
permit 10.0.0.0 8 掩码长度必须等于8(只匹配/8)
permit 10.0.0.0 8 ge 16 掩码长度16~32(ge 16表示最小16,le不写则默认32)
permit 10.0.0.0 8 le 24 掩码长度8~24(ge不写则默认等于前面的8)
permit 10.0.0.0 8 ge 16 le 24 掩码长度16~24

关键限制 :必须满足 前面的掩码长度 <= ge <= le <= 32

例如 8 ge 16 le 24 是合法的;8 ge 4 会报错(因为4<8)。

注意 :前面的网络号 10.0.0.0 8 表示"只考虑属于10.0.0.0/8这个大网内的路由",然后再从里面挑出掩码长度在指定范围的。不属于10.0.0.0/8的(如192.168.1.0/24)根本不进入比较。

2.4 多条规则顺序(隐含拒绝)

ip-prefix 可以有多个条目,每个有条目号(index,默认步长10)。按index从小到大匹配,一旦匹配就停止,不再往下看

如果所有条目都不匹配,结果就是 deny(隐含拒绝)。

这和ACL完全一样。不同的是,ip-prefix 没有"最后默认允许所有"的尾巴。


3. 深度辨析 & 常见误解

误解 真相
"ip-prefix 可以匹配数据包" 错。它只能匹配路由条目。过滤数据包用ACL。
"ip-prefix 匹配时,网络号必须完全一样" 不完全是。permit 10.0.0.0 8 可以匹配 10.1.0.0/16,因为 10.1.0.0 属于 10.0.0.0/8 内。网络号比较是按前面的掩码长度截取的。
"permit 0.0.0.0 0 只匹配默认路由" 对。掩码长度=0就是默认路由。
"permit 0.0.0.0 0 ge 0 le 32 会匹配所有路由" 对。因为网络号0.0.0.0与任何路由的与运算都得0,且掩码范围0-32包含所有。这是"匹配任意路由"的常用写法。
"ip-prefix 和 route-policy 是一回事" 错。ip-prefix 只能匹配,不能修改属性;route-policy 可以调用 ip-prefix 来做匹配,还能执行 apply 修改属性。

对比表:ACL vs ip-prefix vs route-policy(只保留最核心区别)

工具 匹配对象 能否控制掩码长度 能否修改路由属性
ACL 数据包 或 路由(但路由只看IP,不看掩码) 不能 不能
ip-prefix 路由(网络号+掩码长度) 不能
route-policy 路由(可调用ip-prefix等) 能(通过调用ip-prefix)

4. 基础安全风险 & 最简防护(基础期)

风险 场景 最简防护
误放私有路由 本应拒绝10.0.0.0/8,但ip-prefix写成了 permit 0.0.0.0 0 ge 0 le 32 明确写 deny 10.0.0.0 8 ge 8 le 32 放在前面
掩码范围过大 本想放行/24,却写了 ge 16 le 24,导致/16也被放行 严格限定范围:ge 24 le 24 或直接不写ge/le
隐含拒绝导致断网 忘记写permit条目,所有路由被拒绝 配置后先用 display ip ip-prefix 检查,必要时加一条 permit 0.0.0.0 0 ge 0 le 32 兜底(谨慎)
相关推荐
SPC的存折8 小时前
1、Redis数据库基础
linux·运维·服务器·数据库·redis·缓存
爱学习的小囧9 小时前
VMware ESXi 6.7U3v 新版特性、驱动集成教程和资源包、部署教程及高频问答详情
运维·服务器·虚拟化·esxi6.7·esxi蟹卡驱动
小疙瘩9 小时前
只是记录自己发布若依分离系统到linux过程中遇到的问题
linux·运维·服务器
dldw77710 小时前
IE无法正常登录windows2000server的FTP服务器
运维·服务器·网络
我是伪码农11 小时前
外卖餐具智能推荐
linux·服务器·前端
汤愈韬11 小时前
下一代防火墙通用原理
运维·服务器·网络·security
皮皮林55111 小时前
强烈建议大家使用 Linux 做开发?
linux
IMPYLH11 小时前
Linux 的 od 命令
linux·运维·服务器·bash
Kk.080212 小时前
Linux(十一)fork实例练习、文件操作示例及相关面试题目分享
linux·运维·算法