3、RPKI体系详解:从架构到实战
聊BGP安全,RPKI是个绕不开的话题。我最早接触RPKI是在一次客户的安全审计中,对方问我们有没有部署路由起源验证。说实话,那时候我对RPKI的理解还停留在概念层面。后来踩了不少坑,才慢慢摸清楚这套体系的门道。
今天咱们就把RPKI掰开揉碎了讲。从架构到ROA对象,再到验证流程和部署现状,我尽量把那些容易忽略的细节都点出来。
3.1 RPKI架构:谁在管谁?
RPKI的全称是Resource Public Key Infrastructure,资源公钥基础设施。说白了,它就是一套专门为IP地址和AS号设计的PKI体系。
你想想看,传统的PKI是用来验证域名和网站身份的。而RPKI呢?它是用来验证“谁有权宣布某个IP前缀”的。这个区别很关键。
RPKI的架构分三层:
- 信任锚(Trust Anchor):通常是RIR(区域互联网注册机构),比如APNIC、ARIN、RIPE NCC。它们是整个信任链的根。
- 下级CA:包括NIR(国家互联网注册机构)和LIR(本地互联网注册机构)。它们从RIR拿到IP资源后,可以继续向下授权。
- 终端实体:也就是最终的路由器或网络设备。它们持有ROA或BGPsec证书,用来证明自己的路由宣告是合法的。
我在项目中遇到过一种情况:某家运营商从APNIC拿到了/22的地址段,然后自己又分成了几个/24卖给客户。如果客户想独立做路由宣告,就需要运营商签发ROA。这个授权链条必须完整,否则验证就会失败。
核心要点:RPKI的信任模型是层次化的,从RIR到LIR再到终端用户,每一级都需要证书链的支持。断了一环,验证就过不去。
3.2 ROA对象:路由起源的“身份证”
ROA(Route Origin Authorization)是RPKI体系里最核心的数据对象。它本质上是一份数字签名的声明,内容很简单:
- 某个AS号(比如AS13335)
- 被授权宣告某个IP前缀(比如1.1.1.0/24)
- 最长前缀长度(比如/24,意味着不能宣告更具体的/25)
我举个例子你就明白了。假设你拥有203.0.113.0/24这个地址段,你想让AS65001来帮你做路由宣告。那你就在RPKI系统里创建一条ROA:
ASN: AS65001
IP Prefix: 203.0.113.0/24
Max Length: 24
这条ROA签完名后,全世界都能验证。任何路由器只要启用了RPKI验证,看到AS65001宣告203.0.113.0/24,就会标记为“Valid”。如果换成AS65002来宣告,那就是“Invalid”。
个人经验:我建议你在创建ROA时,Max Length一定要谨慎设置。我曾经见过有人把/24的Max Length设成/28,结果下游客户想宣告更具体的/26时,直接被标记为Invalid。业务中断了半小时才查出来是ROA的问题。
3.3 RPKI验证流程:路由器是怎么判断的?
验证流程其实不复杂,但细节挺多。我画了一张流程图,帮你理清思路:
验证结果有三种:
- Valid:ROA存在,ASN和前缀都匹配。放心收下这条路由。
- Invalid:ROA存在,但ASN不匹配,或者前缀长度超过了Max Length。这条路由很可能是劫持,建议丢弃。
- NotFound:没有找到对应的ROA。这种情况最常见,因为全球还有大量前缀没有注册ROA。路由器通常会选择收下,但需要结合其他策略判断。
注意:我曾经在实验室里犯过一个低级错误——把RPKI验证策略设成了“NotFound也丢弃”。结果一上线,全球一半的路由都丢了。因为当时很多合法前缀根本没有ROA。切记:NotFound不代表非法,只是未注册。
3.4 RPKI部署现状:理想很丰满,现实很骨感
说到部署现状,我得先泼一盆冷水。虽然RPKI的概念从2010年左右就开始提了,但真正大规模部署也就是最近三四年的事。
我整理了一些数据,你看看就明白了:
| 指标 | 2020年 | 2023年 | 2025年(预估) |
|---|---|---|---|
| IPv4 ROA覆盖率 | 约15% | 约35% | 约50% |
| IPv6 ROA覆盖率 | 约10% | 约25% | 约40% |
| 启用RPKI验证的AS数 | 约2000 | 约8000 | 约15000 |
| 全球BGP表项中Valid比例 | 约8% | 约20% | 约35% |
你看,虽然增长很快,但整体覆盖率还是偏低。为什么会这样?我总结了几点原因:
- 操作门槛高:创建ROA需要理解PKI、证书、签名这些概念。很多中小型运营商连CA都搞不明白。
- 历史包袱重:有些老牌运营商手里有几十年前的IP地址段,归属关系早就乱成一锅粥了。想理清楚谁有权宣告,比登天还难。
- 风险顾虑:ROA配错了会导致路由被标记为Invalid,直接造成业务中断。我见过一家公司因为ROA的Max Length设错,导致整个BGP会话被邻居断开。
- 激励不足:部署RPKI能防劫持,但劫持事件本身并不常见。很多运营商觉得“没出事就不用管”。
我的建议:如果你刚开始部署RPKI,别一上来就搞全量。先挑几个关键前缀做试点,观察一段时间。等流程跑顺了,再逐步扩大范围。我当年就是这么干的,稳得很。
另外,RIR们也在推一些工具来降低门槛。比如APNIC的RPKI Dashboard,可以帮你一键生成ROA。RIPE NCC的RPKI Validator也做得不错,能实时查看验证状态。这些工具我都在用,确实省了不少事。
嗯,关于RPKI体系,今天就聊到这儿。内容不少,但核心就三件事:理解架构、学会创建ROA、搞懂验证流程。把这三点吃透了,BGP安全就算入门了。
一句话总结:RPKI不是银弹,但它是目前对抗BGP劫持最有效的武器。部署起来确实有点麻烦,但比起被劫持后的损失,这点麻烦真不算什么。
公众号:蓝海资料掘金营,微信deep3321