2024-07-16 RPKI 機能検証
最近実網でも実装されつつある、RPKI について、CSR1000V で検証を実施しました。
このページにラボシナリオとして、コンフィグや確認コマンド、疎通確認のポイントなどをまとめています。
RPKI 機能概要
- RPKI で電子証明書を用いて信頼性の高い AS 番号と経路情報を各 AS で作成する
- 各 AS はデータをサーバに登録する
- BGP ルータがサーバから RPKI の ROA データを取得する
- ROV で BGP ルート情報を検証し、不正なルートをテーブルから削除する
2024 年現在、ROA を登録していない AS は多数存在する
検証の目標
RPKI で不正な経路を BGP テーブル (BGP RIB) とルーティング テーブルから削除できること。 RPKI のデータを受信するが、バリデーションは無効化し、不正な経路でもルートを登録できること。
ROA 未登録の AS は、不明として BGP テーブルとルーティング テーブルに登録されること。
用語
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
構成図
- Internet : インターネット
- 実インターネットへの Bridge
- DHCP で IP を取得すると、インターネットまで疎通できるセグメントと、EVE-NG の NIC を紐づけてある
- 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 | BGP ルータ ID |
203.0.113.0/30 | Gi1 | 203.0.113.1/30 | eBGP ピアリング用 | |||
65002 | CE01 | Gi3 | 203.0.113.2/30 | |||
- | Lo0 | 198.51.100.3/32 | BGP ルータ ID | |||
203.0.113.4/30 | Gi4 | 203.0.113.6/30 | eBGP ピアリング用 | |||
2516 | PE02 | Gi1 | 203.0.113.5/30 | |||
- | Lo0 | 198.51.100.2/32 | BGP ルータ ID |
正当・詐称グローバルアドレス | ||||||
---|---|---|---|---|---|---|
種別 | AS 番号 | ネットワーク アドレス | ホスト | インターフェース | ホスト アドレス | 備考 |
グローバルアドレス | 2516 | 1.1.1.1/24 | PE02 | Lo1 | 1.1.1.1/32 | 詐称 : KDDI が割当を受けていないアドレス
AS13335 APNIC and Cloudflare DNS Resolver project |
27.34.128.0/19 | Lo2 | 14.8.0.0/15 | 正当 : KDDI が割当を受けているアドレス
AS2516 KDDI Web Communications Inc. |
JPNIC が ROA パブリック キャッシュサーバを提供してくれていますので、今回はここに接続します。
- 192.41.192.218 が JPNIC ROA パブリック キャッシュ サーバの IP
コンフィギュレーション
ここではプロトコル・ホスト別にコンフィギュレーションを簡単に解説します。
自分でコンフィグを組んでみたい人向けに、デフォルトでは表示しません。
このページのリファレンスに記載した、Cisco のサイトを参考に設定してみると良いでしょう。
PE01
PE02
CE01
疎通確認・動作確認
ROV
ROV 無効化
動作確認 - ホスト別コマンドリスト
PE01 , PE02
- show ip bgp
- show ip route
CE01
show bgp rpki コマンドは、将来的になくなる模様。
show ip bgp rpki コマンドを使用しましょう。
- show ip bgp
- show ip route
- show ip bgp rpki table
- show ip bgp rpki servers
課題
RPKI で ROA を受信するタイミングが遅い
BGP でルーティング テーブルを受信 -> RPKI ROA キャッシュサーバから情報を取得、という順番だと ROV でルートを削除するのが遅れてしまう。
- ROA 受信・Validation までルートが削除されない
- 下位にルートを広報する際、LAN 側の OSPF で max-metric にする時間を長くするなどの対処が必要
再起動後に ROV が動作したか、確認が必要。Web 上の情報では clear bgp などのコマンドを実施するなどの例が見つかりました。
実際の導入時には LAN に ROA キャッシュサーバを構築し、管理ポートか IGP 経由で ROA データを取得するなどの対処策が考えられます。
Path Validation は RPKI に実装されていない
ROA は AS 番号とグローバル IP アドレスの組み合わせを保存しており、BGP でその組み合わせを検証しています。
これは AS 番号まで詐称された場合 (今回の検証環境) や、Origin AS を詐称された場合は、不正な経路の流入を防げないことを意味します。
2024 年現在、筆者は以下の理解をしています。
- RPKI : Prefix Origin AS Validation
- BGPsec : AS Path Validation
リファレンス
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 が持っていることを調査できる