列表拆分与引用语义
前缀列表的模块化是策略工程的基础:按来源与用途拆成独立列表(客户、对等、上游、特殊汇总),命名规范统一,单表条目数量可控。引用时的语义要特别注意——route-map 的单条 match 内可以写多个列表,它们之间是或关系;多条 match 语句之间才是与关系,这一层关系写反,放行范围会与预期差出很远。
基本信息
| 拆分原则 | 按来源或用途独立成表,避免混装 |
|---|---|
| 命名规范 | 方向-来源结构,如 PL-OUT-TRANSIT |
| 引用语法 | match ip address prefix-list LIST-A LIST-B |
| 匹配语义 | 单条 match 内多个列表为或关系 |
| 语句关系 | 多条 match 语句之间为与关系 |
| 维护收益 | 条目可控,便于审计、授权与回滚 |
典型使用场景
- 多来源策略:客户、对等、上游分别建表,按对象授权
- 审计与回滚:单表变更影响面小,回滚只改一处
- 团队协作:统一命名让配置自解释,减少口头交接
- 排障意外放行:先确认多列表的或关系是否写错
- 迁移与合并:列表可复用,避免复制整段策略配置
拆分与引用
拆分与引用
ip prefix-list PL-CUST-A permit 10.10.0.0/16 le 24 # 客户 A 的地址段
ip prefix-list PL-PEER-A permit 10.20.0.0/16 le 24 # 对等方 A 的地址段
!
route-map RM-OUT permit 10
match ip address prefix-list PL-CUST-A PL-PEER-A # 单条 match 内为或关系
!
show ip prefix-list PL-CUST-A # 核对列表内容
show ip prefix-list PL-CUST-A detail # 看条目与命中情况引用语义速查
| 写法 | 含义 | 常见误用 |
|---|---|---|
| match ... prefix-list A B | 匹配 A 或 B | 误解为必须同时匹配 A 与 B |
| 多条 match 语句 | 语句之间为与关系 | 误当作或关系,放行范围被意外收窄 |
| permit 与 deny 顺序 | 按序匹配,命中即停 | 忽略顺序导致后续语句形同虚设 |
| le / ge 掩码范围 | 限定匹配的掩码长度 | 漏写 le 导致只匹配单一掩码长度 |
「或与与」是前缀列表引用里最容易出错的地方:单条 match 内的多个列表是或关系,多条 match 语句之间才是与关系,写反会得到完全不同的放行范围。
列表命名要能自解释:把方向与来源写进名字(如 PL-OUT-TRANSIT、PL-IN-CUST),接手的人在 route-map 里就能看懂这条策略在做什么,比逐条读前缀高效得多。