標準ファイアウォールフィルターがパケットを評価する方法
このトピックでは、次の情報について説明します。
ファイアウォールフィルターパケット評価の概要
次のシーケンスでは、デバイスインターフェイスの入出力トラフィックが ファイアウォールフィルターに関連付けられている場合に、デバイスがインターフェイスに出入りするパケットをどのように評価するかを説明します。パケットの評価は、以下のように処理されます。
デバイスは、ファイアウォール フィルターの条件に対して、フィルターの最初の条件から順次パケットを評価します。
パケットが条件で指定されたすべての条件に一致する場合、デバイスはその条件で指定されたすべてのアクションを実行します。
パケットが条件で指定されたすべての条件に一致し ない場合、デバイスはフィルター内の次の条件に進み(後続の条件が存在する場合)、その条件に対してパケットを評価します。
パケットがファイアウォールフィルターのどの条件にも 一致しない場合、デバイスは暗黙的にパケットを破棄します。
サービスフィルターやシンプルフィルターとは異なり、ファイアウォールフィルターは、終了アクションでも非終了アクションでもなく、フロー制御アクションである
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(Internet Control Message Protocol)などの管理プロトコルのデータが含まれています。
ファイアウォールフィルターの最初の評価で受信したローカルパケットまたはパケットコンテキスト値が変更された場合、ファイアウォールフィルターの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はポリサーアクションの個別のインターフェイス固有のインスタンスを作成します。
詳細については、「 インターフェイス固有のファイアウォールフィルターインスタンスの概要」を参照してください。