返回技术博客

SKNK 中文技术指南

什么是 RPKI?它如何降低错误路由和劫持风险

RPKI 为 IP 前缀和起源 ASN 建立可验证的授权关系。本文解释 ROA、ROV、Valid、Invalid、NotFound,以及 RPKI 能做什么、不能做什么。

技术内容

由 Shikanoko Networks 编写与维护

RPKI(Resource Public Key Infrastructure,资源公钥基础设施)是一套用于验证 BGP 路由起源授权的体系。它让网络运营者能够确认:某个 ASN 是否被授权宣告某段 IP 前缀。RPKI 不替代 BGP,也不检查整条 AS_PATH;它主要解决“谁有权作为这条路由的起源”。

白脸小鹿把授权卡放入路由验证装置,匹配的路由继续前进,不匹配的路由被分到旁边。

RPKI 提供可验证的授权依据;路由是否接收,仍由每个网络自己的策略决定。

为什么 BGP 需要额外的验证

BGP 诞生时,互联网参与者规模较小,协议本身并没有强制验证“一个网络是否真的有权宣告某段地址”。

这会带来两类常见风险:

  • 运维人员输错前缀或 ASN,意外发布不属于自己的路由;
  • 攻击者故意宣告他人的前缀,试图截获或丢弃流量。

过去,网络主要依靠人工联系、IRR、过滤列表和运营经验处理。RPKI 提供了一个可自动验证的授权来源。

RPKI、ROA 和 ROV 分别是什么

这三个词经常一起出现,但职责不同。

RPKI

RPKI 是整个信任和分发体系,包括资源证书、签名、资料库和验证器。

ROA

ROA(Route Origin Authorization)是一条具体授权,说明某个 ASN 可以宣告某个前缀,以及允许宣告到多具体的长度。

例如:

Prefix: 2001:db8:1234::/48
Origin ASN: AS65001
maxLength: /48

ROV

ROV(Route Origin Validation)把实际收到的 BGP 路由与已经验证的 ROA 数据进行比较,然后给出 Valid、Invalid 或 NotFound。

可以这样理解:

  • ROA 是授权书;
  • RPKI 是验证授权书真伪的体系;
  • ROV 是拿实际路由去核对授权书;
  • 网络运营商自己的策略决定核对后如何处理。

三种验证状态

Valid

路由的前缀、Origin ASN 和长度都符合至少一条 ROA。

这说明起源授权匹配,但不保证路由一定全球可达,也不说明整条路径安全。

Invalid

存在覆盖该前缀的 ROA,但实际路由的 Origin ASN 不被授权,或者路由长度超过 maxLength

不少网络会拒绝或降低 Invalid 路由的优先级,因此它可能造成明显的可达性问题。

NotFound

没有任何 ROA 覆盖该前缀。

NotFound 不等于 Invalid,也不等于恶意。它只表示没有可用于起源验证的授权数据。部分平台把这一状态显示为 Unknown,含义相同;不同网络会根据本地策略决定是否接受。

状态 含义 常见处理
Valid 起源和长度符合授权 通常正常接受
Invalid 与已有授权冲突 可能拒绝或降级
NotFound 没有覆盖 ROA 处理方式取决于运营商

RPKI 能防住什么

RPKI 对以下问题很有效:

  • 错误 ASN 宣告某个前缀;
  • 未授权网络冒充前缀起源;
  • 更具体前缀超过授权长度;
  • 配置变更后 Origin ASN 与 ROA 不一致。

它尤其适合自动化过滤。网络不必依赖手工判断每一条路由,可以在策略中使用统一的验证状态。

RPKI 不能解决什么

不能验证完整 AS_PATH

一条路由的 Origin ASN 可以合法,但中间路径仍可能异常。当前广泛部署的 ROV 只验证起源。

不能保证全球可达

即使路由是 Valid,也可能因为上游过滤、IRR 缺失、前缀过长、BGP 配置错误或线路故障而不可达。

不能加密业务流量

RPKI 保护的是路由授权,不是 HTTPS、VPN 或应用数据。

不能替代网络监控

路由泄漏、会话中断、路径突变和局部不可达仍需要 BGP 监测和主动测量。

RPKI 和 IRR 有什么区别

IRR 中的 routeroute6 对象用于描述路由意图,许多运营商仍根据 IRR 构建过滤器。

ROA 具有加密验证链,用于起源验证。两者不是互相替代关系。

实际部署中通常需要同时维护:

  • IRR:满足上游和 Peering 的路由过滤要求;
  • RPKI/ROA:提供可验证的起源授权;
  • BGP 监控:确认真实路由符合预期。

谁负责创建 ROA

关键取决于 IP 前缀的资源关系。

  • 如果组织直接控制对应资源证书,可以通过 RIR 提供的 RPKI 系统创建;
  • 如果使用 Sponsoring LIR 管理的 PA 前缀,ROA 通常由该 LIR 创建、修改和撤销;
  • 如果使用云或运营商地址,往往由资源提供方负责。

客户使用 LIR 提供的 PA /48 时,应在申请前确认 ROA 修改流程。不能假设拿到 ASN 后就自动拥有该前缀的 RPKI 管理权限。

一次正确的上线流程

  1. 列出准备宣告的每个前缀;
  2. 确认每个前缀的 Origin ASN;
  3. 按真实路由设计创建 ROA;
  4. 等待授权发布并被验证器获取;
  5. 使用多个 RPKI 查询工具核对;
  6. 再让上游启用或调整 BGP 宣告;
  7. 检查路由状态、AS_PATH 和全球可见性;
  8. 持续监控 Invalid 和意外 Origin。

“先宣告,出问题再改 ROA”会增加不可控窗口。更稳妥的方式是先发布授权,再切换路由。

常见故障

更换 Origin ASN 后变成 Invalid

ROA 仍然授权旧 ASN。应在切换前更新授权,并等待验证器同步。

宣告更具体前缀后变成 Invalid

路由长度超过 ROA 的 maxLength。需要重新评估是否真的应该宣告更具体前缀,而不是直接把 maxLength 放得很宽。

有 ROA,路由仍然不通

RPKI Valid 只说明起源授权正确。继续检查上游过滤、IRR、BGP Session、导出策略和远端路由表。

删掉 ROA 后立刻恢复了吗

不一定。RPKI 资料库和验证器需要时间同步,不同网络的缓存刷新时间也可能不同。

中国网络团队部署 RPKI 时应注意

跨境部署经常同时涉及国内团队、海外机房和海外上游。建议把以下信息固定记录:

  • 前缀及资源提供方;
  • Origin ASN;
  • ROA 管理联系人;
  • 正常和紧急修改渠道;
  • maxLength 设计;
  • 上游的 ROV 策略;
  • 每次变更的时间和审批记录。

不要只在聊天记录里保存 ROA 变更。网络故障时,清晰的变更记录比“记得当时改过”可靠得多。

常见问题

没有 ROA 的路由会被全部丢弃吗?

通常不会因为没有 ROA 就自动丢弃,它会显示为 NotFound。实际处理取决于接收网络的策略。

RPKI 是否只支持 IPv4?

不是,IPv4 和 IPv6 都可以使用。

有 ASN 但没有自己的前缀,需要做 ROA 吗?

ROA 针对 IP 前缀和 Origin ASN 的组合。没有需要自行宣告的前缀,就没有对应 ROA 可创建。

Valid 是否代表路由安全?

它只代表起源 ASN 和长度符合授权。完整路由安全还需要过滤、监控、运维流程和其他机制。

小结

RPKI 给 BGP 增加了一层可验证的起源授权。它不能解决所有路由安全问题,却能显著减少错误起源和部分劫持风险。

部署时最重要的不是“打开 RPKI”这个动作,而是让 ROA 与真实路由设计保持一致,并在每次 Origin ASN、前缀长度和资源关系变化前完成更新。

参考资料

继续阅读