ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
IP・ASN

ROA と RPKI とは:IP ブロックの ROA 作成方法(RIPE/APNIC/ARIN/AFRINIC)と検証手順

5 ステップ 8 分で読めます 4 回閲覧 0
目次

RPKI(リソース公開鍵基盤)は「どの ASN がどの IP プレフィックスを広報してよいか」を電子証明書で証明する仕組みで、ROA(Route Origin Authorization)はその許可を記した署名付きオブジェクトです。RPKI で Invalid の経路を破棄するネットワークは年々増えており、正しい ROA がないプレフィックスは一部のネットワークから到達できなくなる恐れがあります。本記事ではROA と RPKI とは何か、RIPE・APNIC・ARIN・AFRINIC のポータルで IP ブロックの ROA を作成する方法、最大プレフィックス長の決め方、rpki.cloudflare.com と Routinator による検証方法(Debian/Ubuntu、CentOS/Rocky/AlmaLinux)を解説します。

ステップ1:RPKI の検証状態を理解し現在の ROA を確認

ルーターは受信経路を ROA と照合し、Valid(オリジン ASN と長さが一致)、Invalid(ASN 不一致、または最大長より細かい。多くのネットワークで破棄)、NotFound(該当する ROA なし)のいずれかを判定します。まず RIPEstat API で現状を確認します。

curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS64500&prefix=198.51.100.0/24" | grep -o '"status":"[^"]*"'

ステップ2:ROA 用のプレフィックス・オリジン ASN・最大プレフィックス長を整理

実際に広報しているすべてのプレフィックスとオリジン ASN を洗い出します。最大長(Max Length)は、ROA がどこまで細かいサブプレフィックスを許可するかを決めます。広報する長さと同じ値にし、実際に広報する細かいプレフィックスにだけ個別の ROA を作成するのがおすすめです。最大長を緩くすると、攻撃者があなたの ASN を詐称してサブプレフィックスをハイジャックできてしまいます。

curl -s "https://stat.ripe.net/data/announced-prefixes/data.json?resource=AS64500" | grep -o '"prefix":"[^"]*"'
birdc show route export upstream1          # BIRD 2
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1 advertised-routes"   # FRR
Prefix              Origin ASN   Max Length
198.51.100.0/24     AS64500      24
198.51.100.0/23     AS64500      23     # only if you also announce the /23
2001:db8:100::/48   AS64500      48

ステップ3:RIR ポータルで IP ブロックの ROA を作成

ROA を作成できるのは IP 資源の保有者(またはその許可を受けたアカウント)だけです。各 RIR の入口はおおむね次の通りです(実際の画面は各 RIR の最新版に従ってください)。

  • RIPE NCC:LIR Portal → RPKI Dashboard で hosted RPKI を有効化し ROA を作成。
  • APNIC:MyAPNIC → リソース/ルート管理で ROA を作成(route オブジェクトも同時に作成可能)。
  • ARIN:ARIN Online でリソースの Hosted RPKI を有効化し、ROA リクエストを送信。
  • AFRINIC:MyAFRINIC → RPKI メニューで ROA を作成。

プレフィックス、オリジン ASN、最大長を入力して保存すると、通常数分から 1 時間で公開されます。IMIDC からレンタルした IP の場合は IMIDC が資源保有者ですので、プレフィックス、お客様の ASN、最大長を記載してチケットを送信してください。ROA を代行作成し、必要に応じて IRR の route オブジェクトも作成します。

Prefix:      198.51.100.0/24
Origin ASN:  AS64500
Max Length:  24
IRR route object: yes
同じプレフィックスを旧 ASN や他社がまだ広報している場合は、移行計画を立ててから新しい ROA を作成してください。旧経路が即座に Invalid となり、通信断につながる可能性があります。未使用のブロックには AS0 の ROA を作成するとハイジャック防止になります。

ステップ4:rpki.cloudflare.com で ROA をオンライン検証

rpki.cloudflare.com のバリデータ画面で ASN とプレフィックスを入力すると、Valid/Invalid の結果と該当するすべての ROA を確認できます。RIPEstat や bgp.tools でも RPKI 状態を確認可能です。ステップ1のコマンドを再実行して valid になったことも確認しましょう。

curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS64500&prefix=198.51.100.0/24" | grep -o '"status":"[^"]*"'

ステップ5:Routinator でローカルに RPKI を検証

Routinator は NLnet Labs が開発するオープンソースの RPKI バリデータで、自分のサーバーで独立して検証できるほか、RTR でルーターにデータを提供することもできます。以下は Rust ツールチェーンでのインストール例です(NLnet Labs は Debian/Ubuntu、RHEL 系向けのパッケージリポジトリも提供しています)。初回実行時は RPKI リポジトリ全体を同期するため数分かかります。

# Debian / Ubuntu
apt install -y curl build-essential
# CentOS / Rocky / AlmaLinux
dnf install -y curl gcc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
cargo install --locked routinator
routinator validate --asn AS64500 --prefix 198.51.100.0/24
routinator vrps --select-asn AS64500

よくある質問

ROA があれば IRR の route オブジェクトは不要ですか?

必要です。多くの上流は今も IRR からプレフィックスフィルターを生成しているため、ROA と route/route6 オブジェクトを両方用意し、内容を一致させてください。

ROA 作成後どのくらいで反映されますか?

RIR での公開は通常 1 時間以内で、各ネットワークのバリデータは独自の周期で更新されるため、数十分から数時間で広く反映されます。

1 つのプレフィックスを複数の ASN に許可できますか?

できます。ASN ごとに ROA を 1 つずつ作成してください。マルチオリジン構成や移行期間に便利です。

解決しない場合は、チケットを送信して IMIDC の 24 時間 365 日サポートにお問い合わせください。

この回答はお役に立ちましたか?

関連チュートリアル