ビットフィールド値に基づくファイアウォールフィルター一致条件
ビットフィールド値の一致条件
表 1 は、パケット内の特定のビットフィールドが設定されているかどうかに基づく ファイアウォールフィルター 一致条件を一覧表示し ます。2 番目と 3 番目の列には、一致条件がサポートされているトラフィックのタイプがリストされています。
ビットフィールド一致条件 |
一致値 |
標準ステートレス ファイアウォール フィルターのプロトコル ファミリー |
サービスフィルターのプロトコルファミリー |
---|---|---|---|
fragment-flags flags |
IP ヘッダーの 3 ビット IP フラグメント化フラグ フィールドの 16 進数値またはテキスト エイリアス。 |
family inet |
family inet |
fragment-offset value |
IP ヘッダーの 13 ビットフラグメントオフセットフィールドの 16 進数値またはテキストエイリアス。 |
family inet |
family inet |
tcp-flags value† |
TCPヘッダーの8ビットTCPフラグフィールドの下位6ビットの16進数値またはテキストエイリアス。 |
family inetfamily inet6family vplsfamily bridge |
family inetfamily inet6 |
†Junos OS は、IPv4 トラフィックの TCP フラグを照合するときに、最初のフラグメント ビットを自動的にチェックしません。IPv4トラフィックについてのみ最初のフラグメントビットをチェックするには、 first-fragment 一致条件を使用します。 |
一般的なビットフィールド値または組み合わせの一致条件
表 2 一般的に使用される特定の値またはパケット内のビットフィールド の組み合わせ が設定されているかどうかに基づくファイアウォールフィルター一致条件について説明し ます。
テキスト同義語を使用して、一般的なビットフィールド一致を指定できます。前の例では、同じ一致条件として tcp-initial を指定できます。
一部の数値範囲およびビットフィールド一致条件では、テキスト同義語を指定できます。同義語の完全なリストについては:
J-Webインターフェイスを使用している場合は、適切なリストからシノニムを選択します。
CLI を使用している場合は、from ステートメントの後に疑問符(?)を入力します。
一致条件 |
説明 |
標準ステートレス ファイアウォール フィルターのプロトコル ファミリー |
サービスフィルターのプロトコルファミリー |
---|---|---|---|
first-fragment |
フラグメント パケットの最初のフラグメントを示すビットフィールド一致条件 fragment-offset 0 のテキスト エイリアス。 |
family inet |
family inet |
is-fragment |
フラグメント パケットの追跡フラグメントを示すビットフィールド一致条件 fragment-offset 0 except のテキスト エイリアス。 |
family inet |
family inet |
tcp-established |
ビットフィールド一致条件 tcp-flags "(ack | rst)" のエイリアス。これは確立された TCP セッションであるが、TCP 接続の最初のパケットではないことを示す。 |
family inetfamily inet6 |
— |
tcp-initial |
ビットフィールド一致条件 tcp-flags "(!ack & syn)" のエイリアス。TCP 接続の最初のパケットであるが、確立された TCP セッションではないことを示す。 |
family inetfamily inet6 |
— |
ビットフィールド値の論理演算子
表 3 に、ステートレス ファイアウォール フィルター一致条件を指定する際に 単一 ビット フィールド値に適用できる論理演算子を示します。演算子は、優先順位の高いものから低いものの順にリストされています。操作は左結合であり、操作は左から右に処理されます。
優先順位 |
ビットフィールド論理演算子 |
説明 |
---|---|---|
1 |
(complex-match-condition) |
グループ化 - 括弧の外側の演算子が適用される前に、複合一致条件が評価されます。 |
2 |
! match-condition |
否定 - 一致条件が false の場合、一致が発生します。 |
3 |
match-condition-1 & match-condition-2またはmatch-condition-1 + match-condition-2 |
論理AND:両方の一致条件が真の場合、一致が発生します。 |
4 |
match-condition-1 | match-condition-2またはmatch-condition-1 , match-condition-2 |
論理論理和 - いずれかの一致条件が真の場合、一致が発生します。 |
単一のビットフィールド値またはテキストエイリアスでのマッチング
fragment-flagsおよびtcp-flagsビット一致条件では、パケットフィールドの特定のビットが設定されているかどうかに基づいて、ファイアウォールフィルターの一致条件を指定でき ます。
1 ビットを指定する数値 - 1 ビットが設定されている数値を使用して、1 ビットフィールド一致条件を指定できます。一致条件に応じて、10進値、2進値、または16進値を指定できます。2 進数値を指定するには、接頭部 b の付いた数値を指定します。16 進数値を指定するには、プレフィックス 0x が付いた数値を指定します。
次の例では、TCP フラグ フィールドの RST ビットが設定されている場合に一致が発生します。
[edit firewall family inet filter filter_tcp_rst_number term term1 from] user@host# set tcp-flags 0x04
1 ビットを指定するテキスト エイリアス - 通常、二重引用符 (" ") で囲まれたテキスト エイリアスを使用して、単一ビット フィールド一致条件を指定します。
次の例では、TCP フラグ フィールドの RST ビットが設定されている場合に一致が発生します。
[edit firewall family inet filter filter_tcp_rst_alias term term1 from] user@host# set tcp-flags “rst”
複数のビットフィールド値またはテキストエイリアスでのマッチング
パケット フィールドの特定のビット セットが設定されているかどうかに基づいて、ファイアウォール フィルターの一致条件を指定できます。
複数のセット ビットを指定する数値 - バイナリ表現に複数のセット ビットが含まれる数値を指定する場合、値はセット ビットの論理 AND として扱われます。
次の例では、2 つの一致条件は同じです。ビット 0x01 または 0x02 のいずれかが設定されていない場合、一致が発生します。
[edit firewall family inet filter reset_or_not_initial_packet term term5 from] user@host# set tcp-flags “!0x3” user@host# set tcp-flags “!(0x01 & 0x02)”
共通のビットフィールド一致を指定するテキスト エイリアス - テキスト エイリアスを使用して、一般的なビット フィールド一致を指定できます。これらの一致を 1 つのキーワードとして指定します。
次の例では、“(ack | rst)”のエイリアスである tcp-established 条件は、接続の最初のパケット以外の TCP パケットで一致が発生することを指定します。
[edit firewall family inet filter reset_or_not_initial_packet term term6 from] user@host# set tcp-established
否定ビットフィールド値でのマッチング
一致を無効にするには、値の前に感嘆符を付けます。
次の例では、TCP フラグ フィールドの RST ビットが 設定されている場合、一致が発生します。
[edit firewall family inet filter filter_tcp_rst term term1 from] user@host# set tcp-flags “!rst”
2 つのビットフィールド値の論理 OR でのマッチング
(| または ,) を使用して、ビットフィールドが指定された 2 つのビットフィールド値のいずれかと一致する場合に一致が発生するように指定できます。
次の例では、パケットが TCP セッションの最初のパケットで ない場合 、一致が発生します。
[edit firewall family inet filter not_initial_packet term term3 from] user@host# set tcp-flags "!syn | ack"
TCPセッションでは、SYNフラグは送信された最初のパケットのみで設定され、ACKフラグは最初のパケットの後に送信されたすべてのパケットに設定されます。TCPセッションの最初のパケットではないパケットでは、SYNフラグが設定されていないか、ACKフラグが設定されています。
2 つのビットフィールド値の論理 AND でのマッチング
(& または +) を使用して、ビットフィールドが指定された 2 つのビットフィールド値の両方と一致する場合に一致が発生するように指定できます。
次の例では、パケットが TCP セッションの最初のパケットである場合、一致が発生します。
[edit firewall family inet filter initial_packet term term2 from] user@host# set tcp-flags “syn & !ack”
TCPセッションでは、SYNフラグは送信された最初のパケットのみで設定され、ACKフラグは最初のパケットの後に送信されたすべてのパケットに設定されます。TCPセッションの最初のパケットであるパケットでは、SYNフラグが設定され、ACKフラグは設定されません。
ビットフィールド一致条件のグループ化
を使用して、括弧の外側の演算子が適用される前に、括弧内の複合一致条件が評価されるように指定できます。
次の例では、パケットが TCP リセットであるか、パケットが TCP セッションの最初のパケットでない場合、一致が発生します。
[edit firewall family inet filter reset_or_not_initial_packet term term4 from] user@host# set tcp-flags “!(syn & !ack) | rst”
TCPセッションでは、SYNフラグは送信された最初のパケットのみで設定され、ACKフラグは最初のパケットの後に送信されたすべてのパケットに設定されます。TCPセッションの最初のパケット ではない パケットでは、SYNフラグは設定されず、ACKフィールドが設定されます。