搞了十几年网络,说实话,以前我对RPKI这玩意儿也是半懂不懂。直到前两年,有次客户那边网络突然断流,查了半天,最后发现是路由被劫持了——一个邻居AS号伪造了IP前缀,把我们发往某个重要服务器的流量全给拐跑了。那会儿才真正意识到,BGP这个老伙计,天生就没穿防弹衣。
说白了,RPKI(资源公钥基础设施)是给BGP路由信息“验明正身”的。它基于PKI那套数字证书体系,但专门用来干一件事:验证某个IP地址段到底归谁管,谁有权来广播这条路由。PKI本身是用来管数字证书、保数据安全的,而RPKI就是它的一个“专业版”,专治BGP路由劫持。
**为啥非得搞这个?**
早年互联网小,AS(自治系统)就那么几个,大家互相都信得过,BGP设计的时候就只管传数据,压根没考虑有人会造假。可现在呢?全球几十万个AS,鱼龙混杂。你邻居跟你说“这条路由是我的”,你就信了?万一他瞎说呢?那后果就是——你的流量全跑到他那儿去了。
这就是BGP前缀劫持。分两种:一种是直接伪造起源AS号,比如AS4谎称自己是10.1.0.0/16的持有者,靠着BGP最短路径原则,把流量劫走;另一种是子前缀劫持,AS4发一个更具体的路由10.1.0.0/24,按最长前缀匹配,小范围的流量就被骗过去了。图里画得清楚,看下面:
以前我遇到过一回,客户说他们跟海外一个分支连不上,我查了好几天路由表,最后发现是某个上游ISP配错了,把不该广播的前缀给播出去了,结果全网都往那儿送流量。这种错误配置,跟攻击一样要命。所以RPKI这东西,不光是防黑客,也是防我们自己的手滑。
RPKI的思路,最早来自1997年的S-BGP方案,但那玩意儿要在BGP包里加签名,路由器算不过来,也没人用。后来IETF搞了SIDR工作组,提了RPKI,不修改BGP,把签名放在一个“外挂”的资料库里,路由器只拿验证结果。这样兼容性好,路由器负担小,才慢慢有人开始用。
**部署RPKI有啥好处?**
- 安全:谁也别想冒充别人广播路由,流量劫持基本废了。
- 可靠:路由可信,不容易泄露,网络稳当。
- 省钱:真被劫持了,数据丢了、客户跑了,那损失可不是小数目。搞个RPKI,防患于未然。
- 长远:互联网要健康发展,路由安全是基础。
**RPKI怎么干活?**
先聊几个关键概念。
1. **互联网号码资源分配架构**:从上到下——IANA(全球管总账)→ RIR(区域注册机构,比如亚太的APNIC)→ NIR(国家级)→ ISP(运营商)。谁管哪段IP、哪个AS号,都有记录。
2. **资源公钥基础设施**:就是一套数字证书系统,专门给IP地址和AS号做“数字签名”,证明“这段IP是张三的,他授权李四来广播”。
3. **证书**:分两种——CA证书(管分配权的)和EE证书(管路由授权的)。CA证书像“地契”,EE证书像“授权书”。谁有CA证书,谁就能往下分资源。
4. **ROA(路由源授权)**:就是IP地址的主人写个声明:“我允许AS 12345来广播我的IP段10.1.0.0/16”。这声明是签了名的,造不了假。
5. **RPKI资料库**:所有证书和ROA都存这儿,分布式的,谁都能同步。
6. **RP(依赖方)**:这是连接RPKI和实际路由系统的“翻译官”。它定期从资料库下载并验证证书,然后把“IP段→AS号”的合法关系告诉路由器。路由器拿这个表去判断收到的BGP路由是真的还是假的。
**整体架构**:证书签发体系(认证中心)→ 证书存储系统(资料库)→ 证书同步验证机制(RP干活)。
**路由起源认证过程**:证书由上往下签。比如APNIC先给自己签个根证书,然后给下面的RIR签发证书,RIR再给ISP签,一层层往下。每一级都证明“我授权你用这段IP/这个AS号”。
举个简单例子(实际证书格式比这复杂多了):
- APNIC签个自签名证书:{签发者:APNIC,接收者:APNIC,资源:10.1.0.0/16,AS 1...}
- APNIC再给某个RIR签:{签发者:APNIC,接收者:某RIR,资源:10.1.0.0/16...}
- 最后,ISP拿到证书后,再签ROA,授权某个AS来广播。
**实际施工经验**:我头一回部署RPKI时,踩了个坑——没注意RP服务器的时间同步。证书验证全靠时间戳,如果服务器时间差了几分钟,验证全失败,路由表直接乱套。后来我们给所有RP服务器配了NTP,还加了监控,一旦时间偏差超过1秒就报警。还有,别贪便宜用太旧的设备,有些老路由器对RPKI支持不好,得升级固件才认。
**省钱技巧**:如果你是小运营商,不想自己搭全套RPKI,可以买CDN或云服务商的“RPKI验证”服务,按流量收费,比自建省人力。另外,ROA别设太死,留点余量——比如你实际用10.1.0.0/24,ROA可以写成10.1.0.0/23,万一以后扩网,不用频繁改。
总之,RPKI不是什么玄学,它就是给BGP路由加了一把锁。虽然部署起来有点麻烦,但比起被劫持后断网、丢数据、赔客户,这点功夫真不算啥。搞网络,安全永远是第一位的。
**为啥非得搞这个?**
早年互联网小,AS(自治系统)就那么几个,大家互相都信得过,BGP设计的时候就只管传数据,压根没考虑有人会造假。可现在呢?全球几十万个AS,鱼龙混杂。你邻居跟你说“这条路由是我的”,你就信了?万一他瞎说呢?那后果就是——你的流量全跑到他那儿去了。
这就是BGP前缀劫持。分两种:一种是直接伪造起源AS号,比如AS4谎称自己是10.1.0.0/16的持有者,靠着BGP最短路径原则,把流量劫走;另一种是子前缀劫持,AS4发一个更具体的路由10.1.0.0/24,按最长前缀匹配,小范围的流量就被骗过去了。图里画得清楚,看下面:
以前我遇到过一回,客户说他们跟海外一个分支连不上,我查了好几天路由表,最后发现是某个上游ISP配错了,把不该广播的前缀给播出去了,结果全网都往那儿送流量。这种错误配置,跟攻击一样要命。所以RPKI这东西,不光是防黑客,也是防我们自己的手滑。
RPKI的思路,最早来自1997年的S-BGP方案,但那玩意儿要在BGP包里加签名,路由器算不过来,也没人用。后来IETF搞了SIDR工作组,提了RPKI,不修改BGP,把签名放在一个“外挂”的资料库里,路由器只拿验证结果。这样兼容性好,路由器负担小,才慢慢有人开始用。
**部署RPKI有啥好处?**
- 安全:谁也别想冒充别人广播路由,流量劫持基本废了。
- 可靠:路由可信,不容易泄露,网络稳当。
- 省钱:真被劫持了,数据丢了、客户跑了,那损失可不是小数目。搞个RPKI,防患于未然。
- 长远:互联网要健康发展,路由安全是基础。
**RPKI怎么干活?**
先聊几个关键概念。
1. **互联网号码资源分配架构**:从上到下——IANA(全球管总账)→ RIR(区域注册机构,比如亚太的APNIC)→ NIR(国家级)→ ISP(运营商)。谁管哪段IP、哪个AS号,都有记录。
2. **资源公钥基础设施**:就是一套数字证书系统,专门给IP地址和AS号做“数字签名”,证明“这段IP是张三的,他授权李四来广播”。
3. **证书**:分两种——CA证书(管分配权的)和EE证书(管路由授权的)。CA证书像“地契”,EE证书像“授权书”。谁有CA证书,谁就能往下分资源。
4. **ROA(路由源授权)**:就是IP地址的主人写个声明:“我允许AS 12345来广播我的IP段10.1.0.0/16”。这声明是签了名的,造不了假。
5. **RPKI资料库**:所有证书和ROA都存这儿,分布式的,谁都能同步。
6. **RP(依赖方)**:这是连接RPKI和实际路由系统的“翻译官”。它定期从资料库下载并验证证书,然后把“IP段→AS号”的合法关系告诉路由器。路由器拿这个表去判断收到的BGP路由是真的还是假的。
**整体架构**:证书签发体系(认证中心)→ 证书存储系统(资料库)→ 证书同步验证机制(RP干活)。
**路由起源认证过程**:证书由上往下签。比如APNIC先给自己签个根证书,然后给下面的RIR签发证书,RIR再给ISP签,一层层往下。每一级都证明“我授权你用这段IP/这个AS号”。
举个简单例子(实际证书格式比这复杂多了):
- APNIC签个自签名证书:{签发者:APNIC,接收者:APNIC,资源:10.1.0.0/16,AS 1...}
- APNIC再给某个RIR签:{签发者:APNIC,接收者:某RIR,资源:10.1.0.0/16...}
- 最后,ISP拿到证书后,再签ROA,授权某个AS来广播。
**实际施工经验**:我头一回部署RPKI时,踩了个坑——没注意RP服务器的时间同步。证书验证全靠时间戳,如果服务器时间差了几分钟,验证全失败,路由表直接乱套。后来我们给所有RP服务器配了NTP,还加了监控,一旦时间偏差超过1秒就报警。还有,别贪便宜用太旧的设备,有些老路由器对RPKI支持不好,得升级固件才认。
**省钱技巧**:如果你是小运营商,不想自己搭全套RPKI,可以买CDN或云服务商的“RPKI验证”服务,按流量收费,比自建省人力。另外,ROA别设太死,留点余量——比如你实际用10.1.0.0/24,ROA可以写成10.1.0.0/23,万一以后扩网,不用频繁改。
总之,RPKI不是什么玄学,它就是给BGP路由加了一把锁。虽然部署起来有点麻烦,但比起被劫持后断网、丢数据、赔客户,这点功夫真不算啥。搞网络,安全永远是第一位的。