標準ファイアウォールフィルターによるパケットの評価方法
このトピックでは、次の情報について説明します。
ファイアウォール フィルター パケット評価の概要
次のシーケンスは、デバイスインターフェイスの入力または出力トラフィックが ファイアウォールフィルターに関連付けられている場合に、デバイスがインターフェイスに出入りするパケットをどのように評価するかを説明しています。パケットの評価は次のように進行します。
デバイスは、ファイアウォール フィルターの条件に対してパケットを、フィルターの最初の条件から順次評価します。
パケットが条件で指定されたすべての条件に一致する場合、デバイスはその条件で指定されたすべてのアクションを実行します。
パケットが条件で指定されたすべての条件に一致しない場合、デバイスはフィルター内の次の条件に進み(後続の条件が存在する場合)、その条件に対してパケットを評価します。
パケットがファイアウォールフィルターのどの条件にも一致しない場合、デバイスは暗黙的にパケットを破棄します。
サービス フィルターや単純なフィルターとは異なり、ファイアウォール フィルターは、終了アクションでも非終了アクションでもなく、フロー制御アクションである
next term
アクションをサポートします。注:Junos および Junos OS Evolved では、
next term
をアクションの最終項として表示することはできません。設定した一致条件なしでnext term
がアクションとして指定されるフィルター項はサポートされていません。一致した項に
next term
アクションが含まれる場合、デバイスはファイアウォール フィルター内の次の項でパケットの評価を続行します。一致した条件に
next term
アクション が含まれていない場合、指定されたファイアウォール フィルターに対するパケットの評価はこの条件で終了します。デバイスは、このフィルターの後続の条件に対してパケットを評価しません。
ファイアウォールフィルター設定ごとに、最大1024の
next term
アクションがサポートされています。この制限を超えるファイアウォールフィルターを設定すると、候補の設定がコミットエラーになります。パケットが
next term
アクションのない条件に一致するか、パケットがファイアウォールフィルターの最後の条件と一致しない場合、デバイスは特定のファイアウォールフィルターに対するパケットの評価を停止します。ローカルパケットが、イングレスファイアウォールフィルターに関連付けられたルーターインターフェイスに到着すると、フィルターはパケットを 2 回評価します。最初の評価は、ルーターの転送プレーンの中央処理要素であるパケット転送エンジンで行われ、2番目の評価は、ルーターのコントロールプレーンソフトウェアを実行するルーティングエンジンで行われます。
注:ローカルパケット(ルーター自体とやり取りするデータのチャンク)には、通常、ルーティングプロトコルデータ、TelnetやSSHなどのIPサービス用のデータ、ICMP(インターネット制御メッセージプロトコル)などの管理プロトコル用のデータが含まれています。
ファイアウォールフィルターの最初の評価で着信ローカルパケットまたはパケットコンテキスト値を変更する場合、ファイアウォールフィルターの2回目の評価は、更新されたパケットまたはパケットコンテキスト値に基づきます。
例えば、フィルタに、パケットに関連付けられた転送クラスまたは損失優先度値に基づく一致条件が含まれ、フィルタに、パケットに関連付けられた転送クラスまたは損失優先度の値を変更するアクションが含まれるとします。イングレスローカルパケットが関連付けられたインターフェイスに到着し、パケット転送エンジンのフィルター評価がパケットをドロップするのではなく変更した場合、ルーティングエンジンでのフィルター評価は、(元のパケットコンテキストではなく)変更されたパケットコンテキストに基づきます。
単一ファイアウォール フィルターでのパケット評価
表 1 は、単一のファイアウォール フィルターに関連付けられたデバイス インターフェイスでのパケット フィルタリングの動作について説明します。
Junos OS Evolved では、 はアクションの最終項として表示することはnext term
できません。設定した一致条件なしで next term
がアクションとして指定されるフィルター項はサポートされていません。
ファイアウォールフィルターイベント |
アクション |
後続のアクション |
|
---|---|---|---|
ファイアウォールフィルターの条件では、一致条件は指定されません。 |
この条件はデフォルトですべてのパケットに一致するため、デバイスはその条件で指定されたアクションを実行します。 |
条件アクションに |
|
パケットは、ファイアウォールフィルター条件で指定されたすべての条件に一致します。 |
デバイスは、その用語で指定されたアクションを実行します。 |
条件アクションに |
|
パケットはファイアウォールフィルター条件で指定されたすべての条件に一致しますが、条件にはアクションが指定されていません。 |
デバイスは暗黙的にパケットを受け入れます。 |
条件アクションに |
|
パケットが、ファイアウォールフィルター条件で指定されたすべての条件に一致するわけではありません。 |
デバイスは、その用語で指定されたアクションを実行しません。 |
デバイスは、フィルタ内の次の項(後続の項が存在する場合)に対してパケットの評価を続行します。 |
|
パケットはフィルター内のどの項とも一致しません |
デバイスは暗黙的にパケットを破棄します すべてのファイアウォールフィルター設定には、フィルターの最後に暗黙的な term t_explicit_discard { then discard; } |
ベスト プラクティス: 特に破棄されていないトラフィックを明示的に受け入れる
ファイアウォールフィルターは、フィルターが特に破棄しないトラフィックを受け入れることができます。この場合、 accept
終了アクションを指定する最後の条件でファイアウォールフィルターを設定することをお勧めします。
次のスニペットの例では、 t_allow_all_else
用語をファイアウォールフィルターの最後の用語として設定すると 、フィルターが特に破棄しなかったトラフィックを受け入れるようにファイアウォールフィルターが明示的に設定されます。
term t_allow_all_else { then accept; }
このベストプラクティスに従うと、ファイアウォールフィルターのトラブルシューティングを簡素化できます。
ベスト プラクティス: 特に受け入れられないトラフィックを明示的に拒否する
一方、ファイアウォールフィルターが特に受け入れないトラフィックを拒否することもできます。この場合、 reject
終了アクションを指定する最後の条件でファイアウォールフィルターを設定することをお勧めします。
次のスニペットの例では、 t_deny_all_else
用語をファイアウォールフィルターの最後の用語として設定すると、フィルターが特に受け入れなかったトラフィックを拒否するようにファイアウォールフィルターが明示的に設定されます。
term t_deny_all_else { then reject; }
このベストプラクティスに従うと、ファイアウォールフィルターのトラブルシューティングを簡素化できます。
単一のインターフェイスに接続された複数のファイアウォールフィルター
サポートされているデバイスインターフェイスでは、単一のインターフェイスに複数のファイアウォールフィルターを取り付けることができます。詳細については、リストとして適用された複数のファイアウォールフィルターについてを参照してください。
サポートされているインターフェイスでは、プロトコル非依存(family any
)ファイアウォールフィルターとプロトコル固有(family inet
または family inet6
)ファイアウォールフィルターを同じインターフェイスにアタッチできます。プロトコル非依存型ファイアウォールフィルターが最初に実行されます。詳細については、標準ファイアウォールフィルターの適用に関するガイドラインを参照してください。
複数のインターフェイスに接続された単一のファイアウォールフィルター
サポートされているインターフェイスでは、単一のファイアウォールフィルターを複数のインターフェイスに関連付けることができ、Junos OSは、関連付けられたインターフェイスごとにそのファイアウォールフィルターの インターフェイス固有のインスタンス を作成します。
Junos OSは、ファイアウォールフィルターの各インターフェイス固有のインスタンス化を、システムが生成したインターフェイス固有の名前に関連付けます。
フィルター項目内の
count
アクションでは、パケット転送エンジンは個別のインターフェイス固有のカウンターを維持し、Junos OSは各カウンターをシステム生成のインターフェイス固有の名前に関連付けます。フィルター項目内の
policer
アクションについては、Junos OSはポリサーアクションの個別のインターフェイス固有のインスタンスを作成します。
詳細については、インターフェイス固有のファイアウォール フィルター インスタンスの概要を参照してください。