Start typing to search across invoices, services, domains, tickets, and more...
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)を解説します。
ルーターは受信経路を 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":"[^"]*"'実際に広報しているすべてのプレフィックスとオリジン 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" # FRRPrefix 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 48ROA を作成できるのは IP 資源の保有者(またはその許可を受けたアカウント)だけです。各 RIR の入口はおおむね次の通りです(実際の画面は各 RIR の最新版に従ってください)。
プレフィックス、オリジン ASN、最大長を入力して保存すると、通常数分から 1 時間で公開されます。IMIDC からレンタルした IP の場合は IMIDC が資源保有者ですので、プレフィックス、お客様の ASN、最大長を記載してチケットを送信してください。ROA を代行作成し、必要に応じて IRR の route オブジェクトも作成します。
Prefix: 198.51.100.0/24
Origin ASN: AS64500
Max Length: 24
IRR route object: yesrpki.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":"[^"]*"'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 routinatorroutinator validate --asn AS64500 --prefix 198.51.100.0/24
routinator vrps --select-asn AS64500必要です。多くの上流は今も IRR からプレフィックスフィルターを生成しているため、ROA と route/route6 オブジェクトを両方用意し、内容を一致させてください。
RIR での公開は通常 1 時間以内で、各ネットワークのバリデータは独自の周期で更新されるため、数十分から数時間で広く反映されます。
できます。ASN ごとに ROA を 1 つずつ作成してください。マルチオリジン構成や移行期間に便利です。
解決しない場合は、チケットを送信して IMIDC の 24 時間 365 日サポートにお問い合わせください。