BGP ルートと RPKI の有効性を確認する方法
BGP ルート確認が答えるのは、サーバー確認では答えられない問いです。「マシンは動いているか?」ではなく、「インターネットは本当にこのプレフィックスへトラフィックを運んでいるか、しかも正しいオリジンからか?」です。他のネットワークが見ているアナウンス——オリジン自律システム、AS パス、そのプレフィックスをそもそも見ているルートコレクターの数——を読み取り、それらを RPKI、つまり誰が何をオリジネートしてよいかを記した署名済みレジストリと照合します。本ガイドでは、各シグナルの意味、それが誤解を招く場面、そしてこのサイトの BGP ルックアップを使った 5 ステップのルーチンを順に説明します。
最終更新:
ルートがおかしくなるとき
公共サービスを運用したことがある人にはおなじみの場面です。サイトは自分のところでは開く、サーバーは正常、証明書も有効——なのに別の国の顧客には何も届かない。自社オフィスからの監視は正常だと言います。彼らのトラフィックが決して届かないのは、到達可能性があなたのサーバーの性質ではないからです。それは、あなたのプレフィックスを他人のネットワーク越しに運ぶアナウンスの性質であり、それらのアナウンスは、あなたのマシンで何も変わっていなくても、変わったり、フィルタされたり、別のアナウンスに反駁されたりします。「サイトが落ちている」は、時にサーバーの衣装を着たルーティングの事実なのです。
ルート障害には、区別する価値のある 3 つの形があります。ハイジャック:別の自律システムがあなたのプレフィックス——またはそのより具体的な一部——をアナウンスし、本来そのものではなかったトラフィックを引き寄せます。ルートリーク:あるネットワークが、送るべきでなかったピアやプロバイダへ受け取ったルートを伝播させ、トラフィックが馬鹿げた迂回をしたり、配送できないネットワークに落ちたりします。そして静かなもの:アナウンスが取り下げられたり、設定変更、ピアリング紛争、RPKI による破棄でフィルタされたりして、インターネットの一部に経路がまったく残らなくなる場合です。3 つの直し方はまったく異なるため、最初の仕事はそれらを見分けること——そしてそれは、実際に何がアナウンスされているかを見ることから始まります。
アナウンスから始める
最初の問いは最も素朴です。このプレフィックスはそもそもグローバルテーブルにアナウンスされているか、されているなら誰によってか? アナウンスの最後の AS——オリジン ASN——は、そのプレフィックスを保持していると主張するネットワークを名指しし、その背後にあるレジストリデータは、その ASN が属する組織を名指しします。オリジンがあなた自身の ASN、またはあなたのプロバイダのものであれば、そのアナウンスは少なくとも正しい家を主張しています。見たことのない名前であれば、最初の 10 秒で重要なことを学んだことになります。
情報は境界ケースに宿ります。オリジンがまったくないプレフィックスは、コレクターが見える場所のどこにもアナウンスされていません——プレフィックスの打ち間違い、一度も行われなかったアナウンス、またはあらゆる場所で取り下げられたアナウンスです。何かを結論づける前に、それをカバーするより具体度の低いプレフィックスがないか確認してください。トラフィックは集約の下でまだ流れているかもしれないからです。1 つのプレフィックスに対する複数のオリジンは自動的に怪しいわけではありません。anycast サービスや大規模 CDN は、設計上、同じプレフィックスを多くのネットワークからオリジネートしますし、プロバイダ間で移転の最中にあるプレフィックスは、しばらくの間 2 つのオリジンを正当に示すことがあります。複数のオリジンに加えて、あなたが知らない保持者、そしてあなたが何も変えていない時刻に始まったこと——この組み合わせこそが警戒に値します。
可視性と AS パス
ルッキンググラスはあなたのルーターに尋ねません。ルートコレクターに尋ねます——このサイトのデータの背後にある RIPE RIS コレクターは世界中のネットワークとピアリングし、それらのピアが自分たちにアナウンスしたものを記録します。可視性とは、あなたのプレフィックスをそもそも見ているコレクターのピアの数です。健全で長く存続しているプレフィックスは、通常ほぼすべてのコレクターから見えます。自由落下する数——あるいは昨日は満杯だったのに今日は一握りしかない数——は、アナウンスが取り下げられつつある、フィルタされている、あるいは狭まっていく経路の集合を通してしか見えていないことを示唆します。
AS パスは、アナウンスがたどったネットワークの連鎖です。右から左へ、オリジンからトランジットプロバイダを経てコレクターのピアへ向かって読んでください。どのアップストリームがそのルートを運んでいるか、そしてあなた自身のプロバイダが連鎖のどこに座っているかが分かります——そしてリークが起きたとき、パスはそこにいるべきでないネットワークを、真ん中に座ってトラフィックを横向きに転送している姿で示します。身につけるべき読み方の習慣を 1 つ:パス中の繰り返される ASN は通常、意図的な プリペンディングであり、トラフィックエンジニアリングのシグナルであって、ループではありません。そして最短パスが常に実際のトラフィックが通る道とは限りません。ルーティングは地理ではなく商業ポリシーに従うからです。
計器を信頼する前に較正してください。コレクターが見ているのは、彼らとピアリングするネットワークの視点です——大きく、配置の良いサンプルですが、地球上のすべてのルーターではありません。プレフィックスはコレクターには見えなくても RIS とピアリングしないプロバイダ内部では到達可能なことがあり、またコレクターには見えていても、特定のトランジットがさらに下流でフィルタしていることがあります。ルッキンググラスの結果は、真剣な観測点から見たグローバルテーブルについての証拠です。今この瞬間にあなたのプレフィックスについて行われているすべての転送決定の写真ではありません。
平易な言葉で RPKI
RPKI は、「これをアナウンスしてよい」を叫び声ではなく検証可能な主張にしようとするインターネットの試みです。プレフィックスの保持者は ROA——ルートオリジン認可、つまり名前付きの ASN がそのプレフィックスを、宣言された最大プレフィックス長までオリジネートしてよいと述べる署名済みオブジェクト——を公開します。Routinator のようなバリデーター——このサイトの確認の背後にいるのがそれです——は、5 つの地域レジストリ(APNIC、ARIN、LACNIC、RIPE NCC、AFRINIC)のトラストアンカーから ROA を取得し、各アナウンスをそれらと照合します。署名済み声明があなたのアナウンスをカバーするか、しないか。それが仕組みのすべてです。
すべてのアナウンスは 3 つの状態のいずれかに落ちます。有効(valid):ROA がこのプレフィックス、このオリジン ASN、この長さをカバーしています。無効(invalid):ROA はプレフィックスをカバーしていますが、アナウンスがその条件に違反しています——そして無効の中の区別が重要です。invalid_asn は間違ったネットワークがオリジネートしていることを意味し、invalid_length は正しいネットワークが ROA の許容より具体的なプレフィックスをアナウンスしていることを意味します。不明(unknown、しばしば not-found と呼ばれます):ROA がそのプレフィックスをまったくカバーしていないため、照合する対象がありません。
ここで正直な部分です。無効は証拠であって、ハイジャックの証明ではありません。ROA は誤って発行されたり、プレフィックス移転の後に古くなったり、運用チームが後で集約を分解するときに忘れてしまう最大長で書かれたりします——間違った ASN の場合は素早い電話に値しますが、誰かを非難する前に自分の書類を確認してください。そして不明は通常、誰も ROA を公開していないという意味にすぎません。世界のプレフィックスの大きな割合はいまだに ROA を持っていないため、不明はシステムの空白であって、そのプレフィックスへの不利な印ではありません。それでも無効には本物の牙があります。多くの大規模ネットワークは現在、無効なアナウンスをそのまま破棄するため、無効状態が、あなたが出発点とした到達可能性の穴の直接の原因であることがあります。
5 ステップの確認ルーチン
まずより単純な層を除外してください——まだ伝播中の新しい DNS レコード(DNS 伝播チェッカーで確認)や、外部に閉じられたサービスポート(ポートスキャナーで確認)は、ルーティング障害を完璧に模倣します。次に BGP ルックアップを開き、順番に進めます。ステップ 1、プレフィックス:IP またはプレフィックスを入力し、実際にあなたのトラフィックを運んでいるカバー側アナウンスを確認します。ステップ 2、オリジン:オリジン ASN と保持者を読みます——あなたのものか、プロバイダのものか、見知らぬ者のものか。ステップ 3、可視性:何本のコレクターピアがそれを見ているか、そしてその数はこのプレフィックスの平常どおりに見えるか?
ステップ 4、RPKI:有効、無効(どちらの種類か?)、または不明——そして invalid_asn が見知らぬ者を名指しするなら、リストを終える前にエスカレーションしてください。ステップ 5、AS パス:どのアップストリームがそのアナウンスを運んでいるか、そして属していない経路に座っているネットワークはないか? その後、それが目の前にあるうちに書き留めます。プレフィックス、オリジン ASN と保持者、可視性の数、RPKI の状態、見たパス——そして時刻を UTC で。このツールのデータは RIPEstat と RIPE RIS から来ており、約 1 時間キャッシュされるため、タイムスタンプのないスクリーンショットは逸話にすぎません。タイムスタンプのあるメモこそ、次の確認と比較できる証拠です。
明記する価値のある限界
このデータを材料とするあらゆる報告には、3 つの限界が属します。コレクターのカバー範囲には偏りがあります:RIS のピアは多数ですが、均等に分布していません——一部の地域やネットワークの種類は他よりはるかに良く代表されているため、可視性の数はサンプルであり、国勢調査ではありません。伝播には秒ではなく分がかかります:あなたが今行った正当な変更は、正当にまだ見えていないことがあり、取り下げられたルートは実際のトラフィックが移った後もコレクターに残ることがあります。修正や災害を宣言する前に、待って再確認してください。RPKI のカバー範囲は部分的です:多くのプレフィックスがいまだに ROA を持たないため、検証層が判断できるのは、それに参加しているテーブルの部分だけです。
そして議論で最も重要な限界:ここでのきれいな結果は、あなた自身のルーターのテーブルに何が入っているかを証明しません。あなたのセッション、フィルター、ローカルプリファレンスはすべて、インターネットのあなたの隅を、コレクターが見ているものと正当に異ならせ得ます。BGP ルックアップは世界が何をアナウンスし、何を見ているかを確立するために使い、あなた自身のルーターの BGP テーブルは、あなたがそれに対して何をしているかを確立するために使ってください。この 2 つの主張を分離して保つインシデント報告は、誰も撤回する必要のない報告です。
よくある質問
RPKI 無効とは実際にはどういう意味ですか?
ROA がそのプレフィックスをカバーしているにもかかわらず、このアナウンスがその条件に違反しているということです。オリジン ASN が ROA の認可するものではない(invalid_asn)か、アナウンスされたプレフィックスが ROA の最大長が許すより具体的である(invalid_length)かのどちらかです。これは証拠であってハイジャックの証明ではありません——誤発行された ROA や古くなった ROA、移転の最中のプレフィックスも無効なアナウンスを生みます。それでも緊急として扱ってください。多くの大規模ネットワークは無効なルートを破棄するため、無効状態自体が、インターネットの一部がそのプレフィックスに到達できない理由であることがあります。
ルッキンググラスは私自身のルーターのルーティングテーブルを見られますか?
いいえ。ルッキンググラスが示すのは、RIPE RIS のようなルートコレクターが、彼らとピアリングするネットワークから受け取ったものです——グローバルテーブルの大きく有用なサンプルですが、あなた自身のルーターの視点ではありません。あなたのルーターはあなたのセッション、フィルター、ローカルプリファレンスを適用するため、そのテーブルは正当に異なり得ます。自分自身の視点については、ルーター自身に尋ねる(その BGP サマリとルート照会)代わりになるものはありません。ルッキンググラスは世界が見ているもののために、あなたのルーターはあなたがしていることのために使ってください。
なぜ 2 つのルッキンググラスは同じプレフィックスについて意見が食い違うのですか?
異なる椅子から見ているからです。各コレクターは異なるネットワークの集合とピアリングするため、一方が、他方が決して聞かないアナウンスを受け取ることがあります。また、変更がまだ伝播している間に数分ずれて照会することもあり、途中のネットワークは独自のフィルタリング——RPKI 無効なルートの破棄を含みます——を適用するため、異なる観測点は正直に異なるテーブルを保持します。不一致は情報です。ある地域のコレクターがそのプレフィックスを見て、別の地域のものが見ないなら、その不一致の形がしばしば問題そのものの形なのです。