2024-07-16 RPKI 機能検証
最近実網でも実装されつつある、RPKI について、CSR1000V で検証を実施しました。
このページにラボシナリオとして、コンフィグや確認コマンド、疎通確認のポイントなどをまとめています。
用語
RPKI = Resource Public Key Infrastructure
- 電子証明書を用いて、リソースの正当性を担保する
ROA = Resource Origin Authorization
- AS 番号と経路情報が正しい組み合わせであることを示す、電子署名が施されたデータ
ROV = Resource Origin Validation
- BGP 経路の Origin AS が正しいか検証する
機能概要
- RPKI で電子証明書を用いて信頼性の高い AS 番号と経路情報を各 AS で作成する
- ROA で RPKI のデータを取得する
- ROV で BGP ルート情報を検証し、不正なルートをテーブルから削除する
という機能です。
目的
ROA 情報の取得
RPKI ROA キャッシュ サーバから正当な AS 番号と IP アドレスの組み合わせ情報を取得できること。
ROV の動作確認
正常系
RPKI で不正な経路を BGP テーブルとルーティング テーブルから削除できること。
AS 番号と IP アドレスの組み合わせが正当な場合、BGP テーブルとルーティング テーブルに登録されること。
オプション
RPKI のデータを受信するが、バリデーションを無効化し、不正な経路でもルートを登録できること。
例外処理
ROA に存在しないルートを受信したときに、ルートを登録すること。
- 2024 年現在、ROA は登録していない AS も多数存在する
検証環境
EVE-NG Community Edition
Cisco CSR1000V 17.03.04a
構成図
- PE01 : プロバイダ エッジルータ 1
- パブリック ROA サーバへの経路を持つ
- Source PAT で外部と CE01 を通信させる
- 正当な経路を BGP で広報する
- パブリック ROA サーバへの経路を持つ
- PE02 : プロバイダ エッジルータ 2
- KDDI の AS2516 を模擬
- 詐称した経路 1.1.1.1/32 を BGP で広報する
- 正当な経路 14.8.0.0/15 を BGP で広報する
- CE01 : カスタマー エッジルータ 1
- 試験対象のルータ
- ROA キャッシュサーバに接続し、経路情報のデータを取得する
IP アドレッシング
文書用例示アドレス | ||||||
---|---|---|---|---|---|---|
種別 | AS 番号 | ネットワーク アドレス | ホスト | インターフェース | ホスト アドレス | 備考 |
グローバルアドレス | 65000 | - | PE01 | Lo0 | 198.51.100.1/32 | |
203.0.113.0/30 | Gi1 | 203.0.113.1/30 | ||||
65002 | CE01 | Gi3 | 203.0.113.2/30 | |||
- | Lo0 | 198.51.100.3/32 | ||||
203.0.113.4/30 | Gi4 | 203.0.113.6/30 | ||||
2516 | PE02 | Gi1 | 203.0.113.5/30 | |||
- | Lo0 | 198.51.100.2/32 |
詐称グローバルアドレス | ||||||
---|---|---|---|---|---|---|
種別 | AS 番号 | ネットワーク アドレス | ホスト | インターフェース | ホスト アドレス | 備考 |
グローバルアドレス | 2516 | 1.1.1.1/24 | PE02 | Lo1 | 1.1.1.1/32 | AS13335 APNIC and Cloudflare DNS Resolver project |
27.34.128.0/19 | Lo2 | 14.8.0.0/15 | AS2516 KDDI Web Communications Inc. |
JPNIC が ROA パブリック キャッシュサーバを提供してくれていますので、今回はここに接続します。
- 192.41.192.218
コンフィギュレーション
ここではプロトコル・ホスト別にコンフィギュレーションを簡単に解説します。
自分でコンフィグを組んでみたい人向けに、デフォルトでは表示しません。
このページのリファレンスに記載した、Cisco のサイトを参考に設定してみると良いでしょう。
PE01
プロトコル | コンフィグ | 解説 |
---|---|---|
インターフェース
ACL |
PE01#show run | s Lo|net1|net3|router|ip nat|ACL|ip route interface Loopback0 ip address 198.51.100.1 255.255.255.255
interface GigabitEthernet1 ip address 203.0.113.1 255.255.255.252 ip nat inside negotiation auto no mop enabled no mop sysid interface GigabitEthernet3 ip dhcp client client-id ascii 9A5JK2A25E8 ip address dhcp ip nat outside negotiation auto no mop enabled no mop sysid router bgp 65000 bgp router-id 198.51.100.1 bgp log-neighbor-changes network 0.0.0.0 network 198.51.100.1 mask 255.255.255.255 neighbor 203.0.113.2 remote-as 65002 default-information originate ip route 0.0.0.0 0.0.0.0 Null0 254 ip nat inside source list ACL_NAT interface GigabitEthernet3 overload ip access-list extended ACL_NAT 10 deny ip any 198.51.100.0 0.0.0.255 20 deny ip any 203.0.113.0 0.0.0.255 30 permit ip 198.51.100.0 0.0.0.255 any 40 permit ip 203.0.113.0 0.0.0.255 any |
Gi1 に着信したパケットは ACL_NAT に基づいて送信元アドレス PAT を行う
|
PE02
プロトコル | コンフィグ | 解説 |
---|---|---|
インターフェース
|
PE02#show run | s Loop|net1|router bgp interface Loopback0 ip address 198.51.100.2 255.255.255.255 interface Loopback2 ip address 14.8.0.1 255.254.0.0 interface GigabitEthernet1 ip address 203.0.113.5 255.255.255.252 ip nat enable negotiation auto no mop enabled no mop sysid router bgp 2516 bgp router-id 198.51.100.2 bgp log-neighbor-changes network 0.0.0.0 network 1.1.1.1 mask 255.255.255.255 network 14.8.0.0 mask 255.254.0.0 network 198.51.100.2 mask 255.255.255.255 neighbor 203.0.113.6 remote-as 65002 |
1.1.1.1/32 を詐称ルート、14.8.0.0/15 を正常ルートとして BGP で広報する |
CE01
プロトコル | コンフィグ | 解説 |
---|---|---|
インターフェース
|
CE01#show run | s Loop|net3|ip route|rpki|router bgp interface Loopback0 ip address 198.51.100.3 255.255.255.255 interface GigabitEthernet3 ip address 203.0.113.2 255.255.255.252 negotiation auto no mop enabled no mop sysid router bgp 65002 bgp router-id 198.51.100.3 bgp log-neighbor-changes bgp rpki server tcp 192.41.192.218 port 323 refresh 150 network 198.51.100.3 mask 255.255.255.255 neighbor 203.0.113.1 remote-as 65000 neighbor 203.0.113.5 remote-as 2516 |
bgp rpki server tcp 192.41.192.218 port 323 refresh 150
|
疎通確認・動作確認
ROV
ホスト | HOST | 備考 |
---|---|---|
CE01 |
CE01#ping 192.41.192.218 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.41.192.218, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/6 ms |
送信元 PAT されて JPNIC の 192.41.192.218 に疎通できた
|
CE01 |
CE01#show ip bgp BGP table version is 11, local router ID is 198.51.100.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path N* 0.0.0.0 203.0.113.5 0 0 2516 i N*> 203.0.113.1 0 0 65000 i I* 1.1.1.1/32 203.0.113.5 0 0 2516 i V*> 14.8.0.0/15 203.0.113.5 0 0 2516 i N*> 198.51.100.1/32 203.0.113.1 0 0 65000 i N*> 198.51.100.2/32 203.0.113.5 0 0 2516 i V*> 198.51.100.3/32 0.0.0.0 0 32768 i CE01# CE01#show bgp rpki table | in ^1.1.1.0/24 1.1.1.0/24 24 13335 0 192.41.192.218/323 CE01#show bgp rpki table | in ^14.8.0.0/15 14.8.0.0/15 24 2516 0 192.41.192.218/323 CE01#show ip route bgp Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route H - NHRP, G - NHRP registered, g - NHRP registration summary o - ODR, P - periodic downloaded static route, l - LISP a - application route + - replicated route, % - next hop override, p - overrides from PfR & - replicated local route overrides by connected Gateway of last resort is 203.0.113.1 to network 0.0.0.0 B* 0.0.0.0/0 [20/0] via 203.0.113.1, 00:38:21 14.0.0.0/15 is subnetted, 1 subnets B 14.8.0.0 [20/0] via 203.0.113.5, 00:27:04 198.51.100.0/32 is subnetted, 3 subnets B 198.51.100.1 [20/0] via 203.0.113.1, 00:38:21 B 198.51.100.2 [20/0] via 203.0.113.5, 00:30:21 |
I が Invalid (無効) で不正なルートとして認識されている
ルーティングテーブルには Invalid が載らず、Valid は載っている |
ROV 無効化
ホスト | HOST | 備考 |
---|---|---|
CE01 |
CE01(config)#router bgp 65002 CE01(config-router)#bgp be CE01(config-router)#bgp bestpath pre CE01(config-router)#bgp bestpath prefix-validate dis CE01(config-router)#bgp bestpath prefix-validate disable CE01#show ip bgp BGP table version is 12, local router ID is 198.51.100.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path * 0.0.0.0 203.0.113.5 0 0 2516 i *> 203.0.113.1 0 0 65000 i *> 1.1.1.1/32 203.0.113.5 0 0 2516 i *> 14.8.0.0/15 203.0.113.5 0 0 2516 i *> 198.51.100.1/32 203.0.113.1 0 0 65000 i *> 198.51.100.2/32 203.0.113.5 0 0 2516 i *> 198.51.100.3/32 0.0.0.0 0 32768 i CE01#show ip route bgp Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route H - NHRP, G - NHRP registered, g - NHRP registration summary o - ODR, P - periodic downloaded static route, l - LISP a - application route + - replicated route, % - next hop override, p - overrides from PfR & - replicated local route overrides by connected Gateway of last resort is 203.0.113.1 to network 0.0.0.0 B* 0.0.0.0/0 [20/0] via 203.0.113.1, 00:43:16 1.0.0.0/32 is subnetted, 1 subnets B 1.1.1.1 [20/0] via 203.0.113.5, 00:00:32 14.0.0.0/15 is subnetted, 1 subnets B 14.8.0.0 [20/0] via 203.0.113.5, 00:31:59 198.51.100.0/32 is subnetted, 3 subnets B 198.51.100.1 [20/0] via 203.0.113.1, 00:43:16 B 198.51.100.2 [20/0] via 203.0.113.5, 00:35:16 CE01#show bgp rpki table | in ^1.1.1.0/24|^14.8.0.0/15 1.1.1.0/24 24 13335 0 192.41.192.218/323 14.8.0.0/15 24 2516 0 192.41.192.218/323 |
bgp bestpath prefix-validate disable
|
動作確認 - ホスト別コマンドリスト
PE01 , PE02
- show ip bgp
- show ip route
CE01
- show ip bgp
- show ip route
- show bgp rpki table
- show bgp rpki servers
リファレンス
Cisco
IP ルーティング:BGP コンフィギュレーション ガイド(Cisco IOS XE Gibraltar 16.10.x 向け)
JANOG
今は RR で
neighbor {ip-address | ipv6-address} send-community extended
neighbor {ip-address | ipv6-address} announce rpki state
を使えば iBGP に通知できるかも
JPNIC
ROV (Route Origin Validation)とは
Hurricane Electric
- 14.8.0.0/15 を AS2516 が持っていることが調査できる
- 1.1.1.0/24 を AS13335 が持っていることを調査できる