RPKI 与 ROA 入门:VPS 玩家也该看懂的路由安全信号
把 RPKI、ROA、BGP 劫持和 route leak 拆成可执行检查项,用于判断商家线路是否具备基本路由安全能力。
为什么 VPS 用户也要关心 RPKI
很多 VPS 测评只看延迟、带宽和回程 ASN,但真正影响稳定性的还有一个更底层的问题:这个前缀是不是被正确授权、是否容易被错误 AS 宣告、上游是否会过滤明显无效的路由。
RPKI 的价值在于给 IP 前缀和允许宣告它的 AS 建立可验证关系。ROA 则是资源持有人发布的授权记录,说明某个前缀可以由哪个 AS 宣告,以及最大前缀长度是多少。
对于普通用户,这不意味着你要自己运营 RPKI,但它能帮助你识别两类风险:
- 商家使用的 IP 段没有 ROA,遇到路由泄漏时更依赖上游人工处理。
- 商家有 ROA,但实际 BGP 宣告与 ROA 不一致,可能出现 RPKI Invalid,被严格过滤的网络直接丢弃。
看懂三种状态
- Valid:BGP 宣告与 ROA 匹配,属于理想状态。
- Invalid:宣告的 AS 或前缀长度不符合 ROA,风险最高。
- NotFound:没有找到相关 ROA,不能证明错误,也不能证明安全。
选购 VPS 时,Invalid 比 NotFound 更值得警惕。前者通常意味着配置已经冲突,后者只是还没部署 RPKI。
实用检查流程
拿到测试 IP 后,可以先查前缀和起源 AS:
whois <测试IP>
bgpq4 -h whois.radb.net -S RIPE,APNIC,ARIN AS<ASN>
然后用公开工具交叉验证:
- RIPEstat:看 prefix、origin AS、RPKI 状态。
- bgp.tools:快速看上游、路由表和 RPKI。
- Cloudflare Radar BGP:观察路由事件和可见性。
- MANRS Observatory:参考自治系统路由安全实践。
对 VPS 测评的影响
RPKI 状态不直接决定网络速度,但会影响故障半径。一个带 RPKI Invalid 的前缀,在部分运营商或 IX 上可能被丢弃,表现为“某些地区完全打不开”,而不是普通丢包。
测评时建议记录:
- 测试 IP 所属前缀。
- Origin AS。
- RPKI 状态。
- 是否存在多个 Origin AS。
- 上游是否为常见 Tier 1、区域运营商或小型中转。
国外资料里的实践观点
Cloudflare 关于 route leak 的文章里,一个很重要的观点是:BGP 的问题往往不是“完全断网”,而是路由被错误传播后,流量被吸到不该经过的网络。用户侧看到的现象可能只是延迟突然升高、部分地区不可达、TLS 握手变慢或 CDN 命中异常。
APNIC 关于 RPKI 工具和 RPKIViews 的文章则更偏运营侧:RPKI 数据本身也在持续变化,做长期研究时不能只保存一个快照。对 VPS 测评来说,这意味着你今天查到的 Valid/Invalid 状态要和测试时间绑定,不能拿几个月后的查询结果反推当时的网络状态。
国外运营社区还有一个常见经验:小商家并不一定不安全,大商家也不一定永远配置正确。真正值得看的是商家是否知道自己的前缀、origin AS、ROA、IRR 和上游过滤策略。如果工单里问 RPKI 状态,对方完全答不上来,那至少说明它不是这家商家的运营重点。
BYOIP 和自持 ASN 场景
如果你不是普通 VPS 用户,而是自带 IP 段或自持 ASN,RPKI 就不是可选项。最容易出错的是 maxLength。
例如你持有 203.0.113.0/23,希望平时宣告 /23,故障时拆成两个 /24。如果 ROA 只允许 /23,那么应急时的 /24 会变成 Invalid。反过来,如果 maxLength 放得过宽,又会降低保护效果。
建议策略:
- 只授权实际会宣告的前缀长度。
- 变更 BGP 宣告前先更新 ROA。
- 多上游环境下确认每个上游都接受你的 RPKI 策略。
- 保留一次完整的故障演练记录。
排障时怎么使用 RPKI
当某个地区突然访问不了 VPS,可以按这个顺序查:
- 本机到目标是否完全不可达。
- 其他运营商是否也不可达。
- RIPEstat 或 bgp.tools 是否显示 Invalid。
- RouteViews/RIPE RIS 是否看到 origin AS 变化。
- 商家是否刚迁移 IP、切上游或调整 BGP。
如果只有启用 ROV 的网络不可达,而宽松网络仍可访问,RPKI Invalid 就是高优先级怀疑对象。
判断建议
- 建站、企业业务:优先选择 RPKI Valid 或至少 NotFound 且上游清晰的商家。
- 临时代理、短期测试:RPKI 不是唯一指标,但 Invalid 要谨慎。
- BGP Session 或 BYOIP 场景:必须检查自己的 ROA 最大前缀长度,避免更细分的宣告被过滤。