リバースパス転送(RPF )は、マルチキャストルーティングにおけるマルチキャストパケットのループフリー転送を保証し、ユニキャストルーティングにおけるIPアドレスのスプーフィングを防止するために、現代のルーターで使用される技術です。[1]
標準のユニキャスト IP ルーティングでは、ルータはパケットを送信元から遠ざけて転送し、配信ツリーに沿って進み、ルーティング ループを防止します。対照的に、ルータのマルチキャスト転送状態は、受信側からマルチキャストの送信元の配信ツリーのルートまでの逆パスに基づいてテーブルを編成することで、より論理的に実行されます。このアプローチは、逆パス転送と呼ばれます。
マルチキャスト RPF
マルチキャスト RPF (通常は単に RPF と表記) は、マルチキャスト パケットのループのない転送を保証するために、マルチキャスト ソース検出プロトコルやプロトコル独立マルチキャストなどのマルチキャスト ルーティングプロトコルと組み合わせて使用されます。マルチキャスト ルーティングでは、トラフィックの転送は、ユニキャスト ルーティングのように宛先アドレスではなく、送信元アドレスに基づいて決定されます。これは、専用のマルチキャスト ルーティング テーブルまたはルーターのユニキャスト ルーティング テーブルのいずれかを使用して行われます。
マルチキャスト パケットがルータのインターフェイスに入ると、ルータはそのインターフェイス経由で到達可能なネットワークのリストを検索します (つまり、パケットが到達した可能性のあるパスをチェックします)。ルータがマルチキャスト パケットの送信元 IP アドレスに一致するルーティング エントリを見つけた場合、RPF チェックは成功し、パケットはそのマルチキャスト グループに参加している他のすべてのインターフェイスに転送されます。RPF チェックが失敗した場合、パケットはドロップされます。その結果、パケットの転送は、パケットの転送パスではなく、パケットの逆パスに基づいて決定されます。パケットの送信元のルーティング エントリも保持しているインターフェイスに入ってくるパケットのみを転送することで、ループが防止されます。
これは冗長マルチキャスト トポロジでは非常に重要です。同じマルチキャスト パケットが複数のインターフェイスを介して同じルータに到達する可能性があるため、パケットを転送するかどうかの決定には RPF チェックが不可欠です。ルータがインターフェイス A で受信したすべてのパケットをインターフェイス B に転送し、インターフェイス B で受信したすべてのパケットもインターフェイス A に転送し、両方のインターフェイスが同じパケットを受信すると、ルーティング ループが作成され、IP TTL が期限切れになるまでパケットが両方向に転送されます。ルーティング ループはネットワーク リソースを不必要に消費するため、回避するのが最善です。
RPFチェックの基本的な前提は、
- ユニキャストルーティングテーブルが正しく安定しており、
- 送信者からルータへ使用されるパスと、ルータから送信者に戻る逆パスは対称です。
最初の仮定が誤っている場合、RPF チェックは、フォールバックとしてルータのユニキャスト ルーティング テーブルに依存するため失敗します。2 番目の仮定が誤っている場合、RPF チェックは、送信者からルータまでの最短パスを除くすべてのマルチキャスト トラフィックを拒否し、最適でないマルチキャスト ツリーにつながります。リンクが単方向の場合、リバース パス アプローチは完全に失敗する可能性があります。
ユニキャスト RPF
RFC 3704 で定義されているユニキャスト RPF (uRPF) は、既知の無効なネットワークからのトラフィックは、そのトラフィックが送信元ではないはずのインターフェイスでは受け入れるべきではないという概念の進化形です。RFC 2827 に見られるように、元々のアイデアは、偽造された IP アドレスから送信されたトラフィックをインターフェイスでブロックすることでした。多くの組織では、明示的に使用されていない限り、ネットワーク上でプライベート アドレスの伝播を単純に禁止することが妥当な想定です。これはインターネット バックボーンにとって大きなメリットです。明らかに偽の送信元アドレスからのパケットをブロックすることで、DoS、DDoS、ネットワーク スキャンでスキャン元を不明瞭にするためによく使用される IP アドレス スプーフィングを削減できます。[2]
uRPF は、すべてのルータが主な仕事を遂行するためにルーティング情報ベース(RIB) または転送情報ベース(FIB) に持つ必要がある知識を利用してこの概念を拡張し、インターフェイスに表示される可能性のある送信元アドレスをさらに制限するのに役立ちます。パケットは、パケットの送信元へのルータの最適なルートから来た場合にのみ転送されます。インターフェイスに入ってくるパケットは、ルーティング テーブル内の対応するエントリで示されるように、有効なサブネットワークから来たパケットが転送されます。入力インターフェイス経由で到達できない送信元アドレスを持つパケットは、誤って設定された、または悪意のある送信元からのものである可能性が高いため、通常の使用を中断することなくドロップできます。
対称ルーティング、つまりパケットが同じパスを両方向に流れるルーティングや、単一リンクを介して接続された端末ネットワークの場合、これは安全な想定であり、uRPF は多くの予想される問題なしに実装できます。実際のトラフィックのソースにできるだけ近い場所で uRPF を使用すると、スプーフィングされたトラフィックが帯域幅を使用したり、RPF 用に設定されていないルータに到達して不適切に転送されたりする前に、スプーフィングされたトラフィックを阻止できます。
残念ながら、大規模なインターネット バックボーンではルーティングが非対称になることが多く、ルーティング テーブルはソースがルータに到達するための最適なルートを示すのに信頼できません。ルーティング テーブルは最適な転送パスを指定し、対称の場合のみ、最適な逆方向パスに相当します。uRPF を実装する場合は、正当なトラフィックが誤ってフィルタリングされるのを防ぐために、非対称になる可能性に注意することが重要です。
RFC 3704 では、厳密なリバース パス転送を拡張して、ある程度の非対称性を許容しながらもメリットが得られる、より緩やかなケースを含める方法について詳細に説明しています。
厳密モード
厳密モードでは、各着信パケットは FIB に対してテストされ、着信インターフェイスが最適なリバース パスでない場合、パケット チェックは失敗します。デフォルトでは、失敗したパケットは破棄されます。[a]
実行可能なモード
実行可能モードでは、FIB は特定の IP アドレスへの代替ルートを維持します。着信インターフェイスが IP アドレスに関連付けられたルートのいずれかと一致する場合、パケットは転送されます。それ以外の場合、パケットはドロップされます。
ルーズモード
ルーズ モードでは、各着信パケットの送信元アドレスが FIB に対してテストされます。送信元アドレスがそのルータのどのインターフェイスからも到達できない場合にのみ、パケットはドロップされます。[a]
フィルタリングと転送
RPF は、特にユニキャスト ルーティングに関しては、リバース パスフィルタリングとして解釈されることがよくあります。これは、RFC 3704 のようにユニキャスト ルーティングで RPF が使用される場合、トラフィックは RPF チェックの合格または不合格に基づいて許可または拒否されるという点で、この頭字語の理解できる別の解釈です。トラフィックは RPF チェックに合格しないと拒否され、フィルタリングされるという考えです。uRPF は入力フィルタリングメカニズムとして使用されますが、リバース パス転送の影響を受けます。
リバースパスフィルタは、通常、IP アプリケーションが受信ルーティングパスと送信ルーティングパスが異なる場合に非対称ルーティングを無効にするために使用されます。その目的は、1 つのインターフェイスに入るパケットが他のインターフェイスから出ていくのを防ぐことです。リバースパスフィルタリングはLinux カーネルの機能です。[3]
参照
注記
- ^ ab Ciscoデバイスでのコマンド例: ip verify unicast source reachable-via {rx} - 厳密モード、{any} - 緩いモード
参考文献
- ^ 「リバースパスフォワーディング」。Juniper Networks。2010年。 2021年5月12日閲覧。
- ^ 「ユニキャスト リバース パス転送について」。シスコシステムズ。2021年 5 月 12 日閲覧。
- ^ 「rp_filter と LPIC-3 Linux セキュリティ」theurbanpenguin.com 2020-08-27 . 2021-05-12閲覧。
