ユニキャスト RPF(ルーター)について
IPv4またはIPv6トラフィックを伝送するインターフェイスの場合、ユニキャストリバースパスフォワーディング(RPF)を設定することで、サービス拒否(DoS)攻撃の影響を軽減できます。ユニキャスト RPF は、攻撃元の特定に役立ち、ユニキャスト RPF が有効になっているインターフェイスで予期しない送信元アドレスからのパケットを拒否します。
-
ネットワークのエッジ(顧客向けインターフェイス上)にユニキャストRPFチェック機能を適用することで、ネットワークを保護することができます。ISP環境では、これはネットワークに影響を与える可能性があり、拡張セットアップを課す可能性があります。すでにネットワークのエッジを保護している場合、なりすましのIP送信元アドレスを持つパケットは、コアに面したインターフェイスにも表示されません。この場合、ユニキャスト RPF チェックは必要ありません。ユニキャストRPF機能を有効にすると、コントロールプレーンのパフォーマンスに影響を与える可能性があるため、必要な場所で使用してください。そのため、ネットワーク コア(内部)インターフェイスではこの機能を有効にしないことを強くお勧めします。
現在、PTXプラットフォームでは、BGPフロー仕様(flowspec)を設定すると、VRFインスタンスを設定する暗示的なフィルタが作成されます。PTXプラットフォームでは、フィルター検索は送信元/宛先IP検索の前に表示されます。したがって、送信元と宛先の IP ルックアップは、VRF インスタンスのコンテキスト内で行われます。
ユニキャスト RPF とデフォルト ルート
ルーティングテーブル内のルートからアクティブなルートを選択できない場合、ルーターはデフォルトルートを選択します。既定のルートは、IP アドレス 0.0.0.0/0 に相当します。デフォルト ルートを設定し、デフォルト ルートが使用するインターフェイスでユニキャスト RPF を設定すると、ユニキャスト RPF の動作は場合とは異なります。
デフォルトルートがインターフェイスを使用するかどうかを確認するには、 show route
コマンドを入力します。
user@host> show route address
address
は、設定されたデフォルト ルートのネクストホップ アドレスです。デフォルトルートは、 show route
コマンドの出力に示されているインターフェイスを使用します。
次のセクションでは、デフォルト ルートがインターフェイスを使用する場合と、デフォルト ルートがインターフェイスを使用しない場合のユニキャスト RPF の動作について説明します。
デフォルト ルートを使用したユニキャスト RPF の動作
MPC と MX80 ルーターを除くすべてのルーターで、ユニキャスト RPF で設定されたインターフェイスを使用するデフォルト ルートを設定すると、ユニキャスト RPF は次のように動作します。
ルーズ モード - すべてのパケットが自動的に受け入れられます。このため、デフォルト ルートが使用するインターフェイスにはユニキャスト RPF ルーズ モードを設定しないことを推奨します。
厳密モード—パケットの送信元アドレスが、インターフェイスを介して到達可能なルート(デフォルトまたは学習済み)のいずれかと一致する場合にパケットが受け入れられます。ルートには複数の宛先を関連付けることができることに注意してください。したがって、宛先の1つがパケットの着信インターフェイスと一致する場合、パケットは受け入れられます。
MPC を搭載したすべてのルーターと MX80 ルーターで、ユニキャスト RPF で設定されたインターフェイスを使用するデフォルト ルートを設定すると、ユニキャスト RPF は次のように動作します。
ルーズ モード - デフォルト ルートからソースが学習されたパケットを除くすべてのパケットが受け入れられます。デフォルトルートからソースが学習されたすべてのパケットは、パケット転送エンジンで破棄されます。デフォルトルートは、ルートが存在しないかのように扱われます。
厳密モード—パケットの送信元アドレスが、インターフェイスを介して到達可能なルート(デフォルトまたは学習済み)のいずれかと一致する場合にパケットが受け入れられます。ルートには複数の宛先を関連付けることができることに注意してください。したがって、宛先の1つがパケットの着信インターフェイスと一致する場合、パケットは受け入れられます。
すべてのルーターで、次のいずれかが当てはまる場合、パケットは受け入れられません。
パケットの送信元アドレスが、ルーティング テーブルのプレフィックスと一致しません。
インターフェイスは、この送信元アドレスプレフィックスを持つパケットを受信することを想定していません。
デフォルト ルートがない場合のユニキャスト RPF の動作
デフォルト ルートを設定しない場合、またはデフォルト ルートがユニキャスト RPF で設定されたインターフェイスを使用しない場合、ユニキャスト RPF はユニ キャスト RPF 厳密モードの設定 および ユニキャスト RPF ルーズ モードの設定の説明に従って動作します。要約すると、デフォルト ルートのないユニキャスト RPF は次のように動作します。
厳密モード—次のいずれかが当てはまる場合、パケットは受け入れられません。
パケットの送信元アドレスが、ルーティングテーブルのプレフィックスと一致しません。
インターフェイスは、この送信元アドレスプレフィックスを持つパケットを受信することを想定していません。
ルーズ モード - パケットの送信元アドレスがルーティング テーブルのプレフィックスと一致しない場合、パケットは受け入れられません。
ルーティング非対称性のあるユニキャストRPF
一般に、内部インターフェイスは ルーティングが非対称である可能性が高いため、ネットワーク内部のインターフェイスではユニキャストRPFを有効にしないことを推奨します。ルーティングの非対称性とは、パケットの送信パスと戻りパスが異なることを意味します。ネットワークのコアにあるルーターは、顧客やプロバイダのエッジにあるルーターよりも、非対称のリバースパスを持つ可能性が高くなります。 図 1 は、ルーティングが非対称な環境でのユニキャスト RPF を示しています。
図 1 では、インターフェイス so-0/0/0
でユニキャスト RPF を有効にしても、ルーター A 宛てのトラフィックは拒否されません。インターフェイス so-1/0/1
でユニキャスト RPF をイネーブルにすると、ルータ A からのトラフィックは拒否されます。
非対称ルーティング環境でユニキャスト RPF を有効にする必要がある場合は、フェイル フィルターを使用して、特定のパスによって到着することがわかっている着信パケットをルーターが受け入れるようにすることができます。特定の送信元アドレスと宛先アドレスを持つパケットを受け入れる失敗フィルターの例については、 ユニキャストRPFの設定を参照してください。
ユニキャスト RPF 厳密モードの設定
strict モードでは、ユニキャスト RPF は、着信パケットの送信元アドレスがルーティング テーブルのプレフィックスと一致するかどうか、およびインターフェイスがこの送信元アドレス プレフィックスを持つパケットを受信することを期待しているかどうかを確認します。
着信パケットがユニキャスト RPF チェックに失敗した場合、そのパケットはインターフェイス上で受け入れられません。インターフェイスでパケットが受け入れられない場合、ユニキャスト RPF はパケットをカウントし、オプションのフェイル フィルタに送信します。失敗フィルターが設定されていない場合、デフォルトアクションはパケットをサイレントに破棄することです。
オプションの失敗フィルターを使用すると、ユニキャスト RPF チェックに失敗したパケットにフィルターを適用できます。失敗フィルターを定義して、受け入れ、拒否、ロギング、サンプリング、ポリシングなど、あらゆるフィルター操作を実行できます。
ユニキャスト RPF がインターフェイスで有効になっている場合、ブートストラップ プロトコル(BOOTP)パケットと動的ホスト構成プロトコル(DHCP)パケットはインターフェイスで受け入れられません。インターフェイスが BOOTP パケットと DHCP パケットを受け入れるようにするには、送信元アドレスが 0.0.0.0
、宛先アドレスが 255.255.255.255.
のすべてのパケットを受け入れるフェイル フィルターを適用する必要があります。 設定例については、 ユニキャストRPFの設定を参照してください。
失敗フィルターの定義の詳細については 、 ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイドを参照してください。
ユニキャスト RPF を設定するには、 rpf-check
ステートメントを含めます。
rpf-check <fail-filter filter-name>;
以下の階層レベルでこのステートメントを含めることができます。
-
[edit interfaces interface-name unit logical-unit-number family (inet | inet6)]
-
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number family (inet | inet6)]
ユニキャスト RPF をトラフィック フィルタと共に実装すると、いくつかの結果が生じる可能性があります。
-
RPF フェイル フィルターは、入力フィルターの後、出力フィルターの前に評価されます。
-
入力フィルターでドロップされたパケットに対してフィルター カウンターを設定し、ドロップされたパケットの総数を知りたい場合は、RPF チェックでドロップされたパケットのフィルター カウンターも設定する必要があります。
-
RPF チェックに失敗し、RPF 失敗フィルターに受け入れられたパケットをカウントするには、フィルター カウンターを設定する必要があります。
-
入力フィルタが inet.0 または inet.6.0 ルーティング テーブル以外の場所にパケットを転送する場合、ユニキャスト RPF チェックは実行されません。
-
入力フィルターが、入力インターフェイスが設定されているルーティング インスタンス以外の場所にパケットを転送する場合、ユニキャスト RPF チェックは実行されません。
前述の箇条書きリストでは、MXプラットフォームではファイアウォールフィルターの実行前にuRPFが処理されるため、最初、最後から2番目のポイントはMXプラットフォームには適用されません。uRPF チェックは、スタティックおよび動的インターフェイスに対して FBF(フィルターベース転送)アクションが有効になる前に、送信元アドレス チェックのために処理されます。これは、IPv4 ファミリと IPv6 ファミリの両方に適用されます。
ACXおよびMXシリーズルーターの場合:
-
uRPF フェイル フィルターは、ACX1000、ACX2000、ACX4000、ACX500、ACX5048、ACX5096 でサポートされています。このフィルターは、ACX5448、ACX710、ACX7100-32C、ACX7100-48、ACX7509、およびACX7000シリーズのすべてのルーターでサポートされているわけではありません。
- uRPF フェイル フィルターは、イングレス ポート チェック(厳密モード)で失敗したパケットと一致しません。
- uRPF フェイル フィルターは、送信元 IP ルックアップに失敗したパケットには一致できますが、入力インターフェイス チェック(厳密モード)に失敗したパケットには一致できません。
- uRPF フェイル フィルターは、ファイアウォール フィルターのインターフェイス固有のインスタンスにのみ適用されます。
- uRPF失敗フィルターは、拒否およびルーティングインスタンスアクションをサポートしていません。
ユニキャスト RPF 厳密モードを設定し、インターフェイスが BOOTP パケットと DHCP パケットを受信できるようにするフェイル フィルターを適用します。フィルターは、送信元アドレスが 0.0.0.0
、宛先アドレスが 255.255.255.255
のすべてのパケットを受け入れます。
ユニキャスト RPF を厳密モードで設定するには、次の手順に従います。
ユニキャスト RPF ルーズ モードの設定
デフォルトでは、ユニキャスト RPF は厳密モードを使用します。ユニキャスト RPF ルーズ モードは、ユニキャスト RPF ストリクト モードに似ており、設定制限も同じです。ルーズ モードでの唯一のチェックは、ルーティング テーブルに対応するプレフィックスを持つ送信元アドレスがパケットにあるかどうかです。ルーズ モードでは、インターフェイスが特定の送信元アドレス プレフィックスを持つパケットを受信することを期待しているかどうかはチェックされません。対応するプレフィックスが見つからない場合、ユニキャスト RPF ルーズ モードはパケットを受け入れません。strict モードと同様に、ルーズ モードは失敗したパケットをカウントし、オプションでそのパケットを失敗フィルターに転送し、パケットの受け入れ、拒否、ログ記録、サンプル、またはポリシングを行います。
ユニキャスト RPF ルーズ モードを設定するには、 mode
を含めます。
パケットを破棄する機能を備えたユニキャスト RPF ルーズ モードの設定
ユニキャスト RPF ルーズ モードには、送信元アドレスが廃棄インターフェイスを指すパケットを廃棄する機能があります。ユニキャスト RPF ルーズ モードとリモート トリガー ヌル ルート フィルタリングを組み合わせることで、既知の攻撃元からのパケットを効率的に破棄できます。エッジルーターのBGPポリシーにより、信頼できない送信元アドレスを持つパケットのネクストホップが破棄ルートに設定されます。信頼できない送信元アドレスを持つパケットがルータに到着すると、ユニキャスト RPF は送信元アドレスのルート ルックアップを実行します。送信元アドレス ルートは廃棄ネクストホップを指しているため、パケットは破棄され、カウンタがインクリメントされます。この機能は、IPv4(inet)とIPv6(inet6)の両方のアドレスファミリーでサポートされています。
パケットを破棄する機能を備えたユニキャスト RPF ルーズ モードを設定するには、[edit forwarding-options]
階層レベルに rpf-loose-mode-discard family (inet | inet6)
ステートメントを含めます。
rpf-loose-mode-discard { family { inet; } }
この例では、デバイスの初期化以上の特別な設定は必要ありません。
ユニキャスト RPF ルーズ モードを設定し、インターフェイスが BOOTP パケットと DHCP パケットを受信できるようにするフェイル フィルターを適用します。フィルターは、送信元アドレスが 0.0.0.0
、宛先アドレスが 255.255.255.255
のすべてのパケットを受け入れます。
パケットを破棄する機能を備えたユニキャスト RPF ルーズ モードを設定するには、次の手順に従います。
VPN でのユニキャスト RPF の設定
VPN インターフェイスでユニキャスト RPF を設定するには、インターフェイスでユニキャスト RPF を有効にし、[edit routing-instances routing-instance-name]
階層レベルで interface
ステートメントを含めます。
ユニキャスト RPF は、ルーティング インスタンスで指定したインターフェイスでのみ設定できます。これは、次のことを意味します。
-
レイヤ 3 VPN の場合、ユニキャスト RPF は CE ルータ インターフェイスでサポートされます。
-
ユニキャスト RPF は、コアに接続するインターフェイスではサポートされていません。
-
仮想ルータ ルーティング インスタンスの場合、ユニキャスト RPF は、ルーティング インスタンスで指定するすべてのインターフェイスでサポートされます。
-
入力フィルターが、入力インターフェイスが設定されているルーティング インスタンス以外の場所にパケットを転送する場合、ユニキャスト RPF チェックは実行されません。
レイヤー 3 VPN インターフェイスでユニキャスト RPF を設定します。
[edit interfaces] so-0/0/0 { unit 0 { family inet { rpf-check; } } } [edit routing-instance] VPN-A { interface so-0/0/0.0; }
ユニキャスト RPF の設定
ユニキャスト RPF 厳密モードを設定し、インターフェイスが BOOTP パケットと DHCP パケットを受信できるようにするフェイル フィルターを適用します。フィルターは、送信元アドレスが 0.0.0.0
、宛先アドレスが 255.255.255.255
のすべてのパケットを受け入れます。
[edit firewall] filter rpf-special-case-dhcp-bootp { term allow-dhcp-bootp { from { source-address { 0.0.0.0/32; } address { 255.255.255.255/32; } } then { count rpf-dhcp-bootp-traffic; accept; } } term default { then { log; reject; } } } [edit] interfaces { so-0/0/0 { unit 0 { family inet { rpf-check fail-filter rpf-special-case-dhcp-bootp; } } } }