ユニキャスト RPF(ルーター)について
IPv4またはIPv6トラフィックを伝送するインターフェイスでは、ユニキャストリバースパスフォワーディング(RPF)を設定することで、サービス拒否(DoS)攻撃の影響を軽減できます。ユニキャスト RPF は、攻撃の送信元を特定するのに役立ち、ユニキャスト RPF が有効になっているインターフェイスでは、予期しない送信元アドレスからのパケットを拒否します。
-
ネットワークのエッジ(顧客向けインターフェイス上)にユニキャスト RPF チェック機能を適用することで、ネットワークを保護できます。ISP環境では、これはネットワークに影響を与え、拡張された設定に課す可能性があります。ネットワークのエッジをすでに保護している場合、IP 送信元アドレスがスプーフィングされたパケットは、コアに面したインターフェイスにも表示されません。この場合、ユニキャスト RPF チェックは必要ありません。ユニキャスト RPF 機能を有効にすると、制御プレーンのパフォーマンスに影響を与える可能性があるため、必要な場所で使用してください。そのため、ネットワーク コア(内部)インターフェイスでこの機能を有効にしないことを強くお勧めします。
現在 PTX プラットフォームでは、BGP フロー仕様(flowspec)を設定すると、VRF インスタンスを設定する暗示的なフィルターが作成されます。PTX プラットフォームでは、フィルタ ルックアップは送信元/宛先 IP ルックアップよりも優先されます。そのため、VRF インスタンスのコンテキスト内で送信元と宛先の IP ルックアップが行われます。
ユニキャスト 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 は次のように動作します。
ストリクト モード — 以下のいずれかが true の場合、パケットは受け入れされません。
パケットの送信元アドレスは、ルーティング テーブルのプレフィックスと一致しません。
インターフェイスは、この送信元アドレスプレフィックスを持つパケットを受信することを期待していません。
ルーズ モード —パケットにルーティング テーブルのプレフィックスに一致しない送信元アドレスがある場合、パケットは受け入れされません。
ルーティング非対称性を備えたユニキャスト RPF
一般に、内部インターフェイスは ルーティング非対称性を持つ可能性が高いため、ネットワーク内部のインターフェイスでユニキャスト RPF を有効にしないことをお勧めします。ルーティング非対称性とは、パケットの発信パスとリターン パスが異なっていることを意味します。ネットワークのコアにあるルーターは、顧客またはプロバイダ エッジのルーターよりも非対称リバース パスを持つ可能性が高くなります。 図 1 は、ルーティング非対称性を持つ環境におけるユニキャスト RPF を示しています。
図 1 では、インターフェイスso-0/0/0
でユニキャスト RPF を有効にすると、ルーター A を宛先とするトラフィックは拒否されません。インターフェイスso-1/0/1
でユニキャスト RPF を有効にすると、ルーター A からのトラフィックは拒否されます。
非対称ルーティング環境でユニキャスト RPF を有効にする必要がある場合、障害フィルターを使用して、特定のパスによって到着することがわかっている受信パケットをルーターが受け入れるようにすることができます。特定の送信元および宛先アドレスを持つパケットを受け入れる不合格フィルターの例については、「 ユニキャスト RPF の設定」を参照してください。
ユニキャスト RPF ストリクト モードの設定
ストリクト モードでは、ユニキャスト RPF は、受信パケットにルーティング テーブルのプレフィックスと一致する送信元アドレスがあるかどうか、およびインターフェイスがこの送信元アドレス プレフィックスを持つパケットの受信を期待するかどうかをチェックします。
受信パケットがユニキャスト RPF チェックに失敗した場合、パケットはインターフェイスで受け入れられます。インターフェイスでパケットが受け入れられない場合、ユニキャスト RPF はパケットをカウントし、オプションの不合格フィルターに送信します。障害フィルターが設定されていない場合、デフォルトのアクションは通知なくパケットを破棄します。
オプションの障害フィルターでは、ユニキャスト RPF チェックに失敗したパケットにフィルターを適用できます。不合格のフィルターを定義して、受け入れ、拒否、ロギング、サンプリング、ポリシングなど、あらゆるフィルター操作を実行できます。
インターフェイスでユニキャストRPFが有効になっている場合、ブートストラッププロトコル(BOOTP)パケットと動的ホスト構成プロトコル(DHCP)パケットはインターフェイスで受け入れされません。インターフェイスがBOOTPパケットとDHCPパケットを受け入れるようにするには、 の送信元アドレスと宛先アドレス0.0.0.0
を持つすべてのパケットを受け入れる不合格フィルターを適用する必要があります。設定例については、 ユニキャストRPFの255.255.255.255.
設定を参照してください。
障害フィルターの定義の詳細については、 ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイドを参照してください。
ユニキャスト 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またはinet6.0ルーティングテーブル以外の場所でパケットを転送する場合、ユニキャストRPFチェックは実行されません。
入力フィルターが、入力インターフェイスが設定されているルーティング インスタンス以外の場所でパケットを転送する場合、ユニキャスト RPF チェックは実行されません。
ACXおよびMXシリーズルーター上:
- uRPF 障害フィルターは、イングレス ポート チェック(ストリクト モード)で失敗したパケットを一致させることはできません。
- uRPF 失敗フィルターは、送信元 IP ルックアップに失敗したパケットを照合できますが、入力インターフェイス チェックに失敗したパケット(ストリクト モード)を一致させることはできません。
- uRPF 障害フィルターは、ファイアウォール フィルターのインターフェイス固有のインスタンスにのみ適用されます。
- uRPF 障害フィルターは、リジェクト・アクションおよびルーティング・インスタンス・アクションをサポートしていません。
ユニキャスト RPF ストリクト モードを設定し、インターフェイスが BOOTP パケットと DHCP パケットを受け入れることを許可する障害フィルターを適用します。フィルターは、 の送信元アドレスと宛先255.255.255.255
アドレス0.0.0.0
が のすべてのパケットを受け入れます。
ストリクト モードでユニキャスト RPF を設定するには:
ユニキャスト RPF ルーズ モードの設定
デフォルトでは、ユニキャスト RPF はストリクト モードを使用します。ユニキャスト RPF ルーズ モードはユニキャスト RPF ストリクト モードに似ていて、同じ設定制限があります。ルーズ モードでの唯一のチェックは、パケットがルーティング テーブルに対応するプレフィックスを持つ送信元アドレスを持っているかどうかです。ルーズモードは、インターフェイスが特定の送信元アドレスプレフィックスを持つパケットを受信することを期待するかどうかを確認しません。対応するプレフィックスが見つからない場合、ユニキャスト RPF ルーズ モードはパケットを受け入れない。ストリクト モードと同様に、ルーズ モードは失敗したパケットをカウントし、オプションで失敗したフィルターに転送します。フィルターは、パケットの受け入れ、拒否、ログ、サンプル、またはポリシーの適用を行います。
ユニキャスト RPF ルーズ モードを設定するには、以下を mode
含めます。
パケットを廃棄する機能を備えたユニキャスト RPF ルーズ モードの設定
ユニキャスト RPF ルーズ モードでは、送信元アドレスが破棄インターフェイスを指すパケットを破棄する機能があります。ユニキャスト RPF ルーズ モードとリモート トリガー Null ルート フィルタリングを併用すると、既知の攻撃ソースから送信されるパケットを効率的に廃棄できます。エッジルーターの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 パケットを受け入れることを可能にする障害フィルターを適用します。フィルターは、 の送信元アドレスと宛先255.255.255.255
アドレス0.0.0.0
が のすべてのパケットを受け入れます。
パケットを破棄する機能を備えたユニキャスト RPF ルーズ モードを設定するには:
VPN でのユニキャスト RPF の設定
インターフェイスでユニキャスト RPF を有効にし、 階層レベルで ステートメントを含 interface
めることで、VPN インターフェイスでユニキャスト RPF を [edit routing-instances routing-instance-name]
設定できます。
ユニキャスト 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 パケットを受け入れることを許可する障害フィルターを適用します。フィルターは、 の送信元アドレスと宛先255.255.255.255
アドレス0.0.0.0
が のすべてのパケットを受け入れます。
[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; } } } }