martian 地址与入向净化
martian 指的是协议层面不应作为源或目的出现的地址,例如 0.0.0.0/8、127.0.0.0/8、255.255.255.255/32 等。设备转发层通常有自己的默认处理,但各实现并不一致;在 BGP 入方向显式过滤可以让行为可控、可审计,也避免这类非法前缀参与选路。
基本信息
| 典型 martian | 0.0.0.0/8、127.0.0.0/8、255.255.255.255/32 等 |
|---|---|
| 设备行为 | 部分平台在转发层默认丢弃,行为因实现而异 |
| BGP 侧做法 | 入方向显式过滤更可控,也便于审计 |
| 配合方式 | 与 bogon、私有地址过滤共同组成净化模板 |
| 顺序要点 | 先拒绝非法前缀,末尾再放行其余 |
典型使用场景
- 对等互联上线前的路由净化模板
- 收到明显异常前缀时定位上游问题
- 审计现网策略:确认非法前缀是否有显式处理
- 应急:临时过滤被误注入的异常前缀
- 多上游接入时统一净化口径,避免各邻居策略不一致
前缀列表写法
前缀列表写法
ip prefix-list PL-MARTIAN seq 10 deny 0.0.0.0/8 le 32 # 拒绝非法前缀
ip prefix-list PL-MARTIAN seq 20 deny 127.0.0.0/8 le 32
ip prefix-list PL-MARTIAN seq 30 deny 255.255.255.255/32
ip prefix-list PL-MARTIAN seq 99 permit 0.0.0.0/0 le 32 # 其余放行,交给其他策略继续处理
!
router bgp 65001
neighbor 10.0.0.2 prefix-list PL-MARTIAN in # 挂在入方向
!
show ip bgp neighbors 10.0.0.2 | include policy # 确认策略已生效典型前缀处理
| 前缀 | 说明 | 处理 |
|---|---|---|
| 0.0.0.0/8 | 本网络地址段 | 入方向拒绝 |
| 127.0.0.0/8 | 环回地址 | 入方向拒绝 |
| 255.255.255.255/32 | 受限广播地址 | 入方向拒绝 |
| 私有与保留段 | 按业务约定判断 | 与对端确认后再决定 |
不要只看设备默认行为:各实现对 martian 的处理不一致,显式配置能让不同厂商设备表现一致,也方便变更审计。
私有地址与保留段要看业务约定:内部互联场景可能确实需要传递私有网段,一律当 martian 拒绝会误伤合法路由。
过滤顺序决定效果:拒绝条目必须排在放行之前,否则兜底放行先命中,拒绝条目形同虚设。
拦截记录可以作为线索:净化策略命中量突然上升时,通常说明上游存在配置错误或异常注入,值得顺着来源继续追查,而不是挂上策略就算完成。