as-path 过滤器是什么
as-path 过滤器用正则表达式匹配路由的 AS_PATH 属性,再通过 filter-list 挂到邻居上生效。它解决的是前缀列表做不到的事:判断「这条路由经过了谁、起源是谁」,因此常用于拒绝来自特定 AS 的路由、过滤私用 ASN、以及只接收对端自有地址段。
基本信息
| 定义语法 | ip as-path access-list <编号> permit|deny <正则> |
|---|---|
| 应用方式 | neighbor <ip> filter-list <编号> in|out |
| 匹配对象 | AS_PATH 字符串,逐条顺序判断、命中即停 |
| 缺省行为 | 列表尾部隐含拒绝,未命中的更新被过滤 |
| 查看 | show ip bgp filter-list <编号> 显示命中集合 |
| 华为对应 | ip as-path-filter 编号 + peer as-path-filter 编号 import|export |
典型使用场景
- 只接收对端自有前缀:用 ^对端AS$ 限定起源,防止接收转发来的第三方路由
- 过滤私用 ASN:拒绝 AS_PATH 中含 64512~65535 的更新
- 拒绝异常长路径:用于缓解路径伪造与配置错误带来的影响
- 出向防泄漏:只向对端发布自己起源的路由,避免成为中转
- 排障定位:按正则筛选特定来源的更新观察属性变化
定义与应用
定义与应用
ip as-path access-list 10 permit ^65002$ # 起源为 65002 的路由
ip as-path access-list 10 permit ^65002_ # 从 65002 直接传来的路由
ip as-path access-list 10 deny .* # 其余全部拒绝(显式写出更清晰)
!
router bgp 65001
neighbor 10.0.0.2 filter-list 10 in # 入向应用
!
show ip bgp filter-list 10 # 查看该列表命中的路由集合
show ip bgp regexp ^65002$ # 按正则直接筛选 BGP 表常用正则与用途
| 正则 | 含义 | 典型用途 |
|---|---|---|
| ^65002$ | 起源 AS 为 65002 | 只接收对端自有前缀 |
| ^65002_ | 路径以 65002 开头 | 只接收直连来自该 AS 的路由 |
| _65002_ | 路径中任意位置出现 65002 | 拒绝经过该 AS 的更新 |
| ^$ | 本地起源(空路径) | 只发布本 AS 产生的路由 |
| .* 或 .+ | 任意路径 | 作为兜底条目显式拒绝或放行 |
正则写宽会误杀:上线前用 show ip bgp filter-list 逐条核对命中集合,确认被过滤的是预期路由。
列表只写 permit 时尾部隐含拒绝;只写 deny 时其余全部放行,两种写法的影响面完全相反,变更前务必确认列表里已包含兜底条目。
编号只是标识,不决定过滤顺序:与 ACL 不同,as-path 列表按正则在列表内的书写顺序判断,编号仅用于引用与维护。