ge 与 le 是什么
在 prefix-list 条目里,ge(greater-equal)指定掩码长度下限,le(less-equal)指定上限。两者都不写时只匹配条目前缀长度本身;写了 le 就放行该长度到 le 之间的所有前缀。理解这两个关键字,才能把「只放行汇总」和「连明细一起放行」区分开。
基本信息
| 语法 | ip prefix-list <name> permit <prefix> [ge x] [le y] |
|---|---|
| 默认行为 | 不写 ge/le 时仅匹配该前缀与长度 |
| 隐含上限 | 只写 ge 时上限默认到 /32 |
| 合法范围 | ge ≥ 条目前缀长度,le ≥ ge,两者都不超过 32 |
| 华为对应 | ip ip-prefix 用 greater-equal 与 less-equal |
| 验证 | show ip prefix-list <name> <prefix>/<len> |
典型使用场景
- 入向放行上限:允许对端发来汇总及更细明细,但限制最长掩码
- 只放行明细不含汇总:用 ge 17 排除汇总本身
- 按长度区分路由用途:把 /30 互联段与业务段分开写规则
- 精确匹配单条 /24:ge 24 le 24 锁定长度
- 核对过滤结果是否符合设计:逐条用 show 命令确认命中的前缀
对照写法
对照写法
ip prefix-list A permit 10.1.0.0/16 le 24 # /16 到 /24 全部放行
ip prefix-list B permit 10.1.0.0/16 ge 17 le 24 # 排除 /16 本身,只放明细
ip prefix-list C permit 10.1.0.0/16 ge 24 le 24 # 只放行 /24
ip prefix-list D permit 0.0.0.0/0 le 24 # 所有短于等于 /24 的前缀
!
show ip prefix-list A 10.1.1.0/24 # 逐条核对是否命中
show ip prefix-list D 10.1.1.0/25 # 更细的 /25 应不命中以 10.1.0.0/16 为例
| 写法 | 匹配的掩码长度范围 |
|---|---|
| 10.1.0.0/16 | 仅 /16 本身 |
| 10.1.0.0/16 le 24 | /16 至 /24 |
| 10.1.0.0/16 ge 17 le 24 | /17 至 /24(不含 /16) |
| 10.1.0.0/16 ge 17 | /17 至 /32 |
| 10.1.0.0/16 ge 24 le 24 | 仅 /24 |
| 10.1.0.0/16 ge 15 le 20 | 非法或行为不符预期:ge 小于条目长度 |
ge 与 le 描述的是长度范围而不是数值范围:前缀的网络地址部分必须与条目完全一致,只有掩码长度在区间内才命中。
只写 ge 不写 le 时范围自动到 /32,容易把比预期更细的前缀一起放行,出向过滤尤其要显式写出 le。
常见错误写法
| 写法 | 问题 | 正确写法 |
|---|---|---|
| 10.1.0.0/16 ge 16 le 24 | 旧实现中 ge 等于条目长度可能被拒或行为异常 | 改写为 10.1.0.0/16 le 24 |
| 10.1.0.0/16 le 32 | 等价于不限制长度,失去过滤意义 | 按实际最长掩码写,如 le 24 |
| 10.1.0.0/16 ge 20 le 18 | le 小于 ge,条目无效 | 先确定长度区间再写 |
| 0.0.0.0/0 | 只匹配默认路由本身,不是全部路由 | 写 0.0.0.0/0 le 24 表示范围 |
长度范围的最小值与最大值都包含在内:le 24 表示最长到 /24 含 /24 本身;若只想匹配一个长度,写成 ge 与 le 相等,或直接不写这两个关键字。