ファイアウォールフィルターフレキシブル一致条件
標準のファイアウォールフィルターの一致条件は、一致させるトラフィックのプロトコルファミリーによって異なります。例えば、ブリッジプロトコルトラフィックに使用できる用語は、inetまたはinet6プロトコルファミリーで使用できる用語とは異なります。ただし、各プロトコルファミリー内でマッチングに使用できるフィールドは、固定または事前定義されています。つまり、フィルターは、これらの事前定義されたフィールド内のパターンでのみ一致できます。
柔軟な一致条件を使用して、レイヤー2、レイヤー3、レイヤー4、またはペイロードの場所から一致を開始するファイアウォールフィルターを構築できます。そこから、追加のオフセット基準を指定して、パケット内のユーザー定義のカスタム位置でのパターンマッチを有効にすることができます。
フレキシブル マッチ フィルターの用語は、他のファイアウォール フィルターの条件と同様に、入力フィルターまたは出力フィルターとして MPC または MIC インターフェイスに適用されます。柔軟な一致フィルター項目は、階層レベルでテンプレート として作成することもできます。[edit firewall]
これらのテンプレートは、柔軟な一致条件内で参照できます。
MX シリーズ ルーターでは、柔軟な一致条件は MPC または MIC でのみサポートされています。FPC、PIC、DPCがMPCまたはMICと一緒にインストールされる環境では、フレキシブルマッチファイアウォールフィルター条件をMPCまたはMICインターフェイスにのみ適用してください。
MPCを搭載したMXシリーズルーターでは、対応するSNMP MIBをウォークすることでMIBのTrio-only一致フィルターのフィルターカウンターを初期化する必要があります。例えば、Trio 専用フィルターに関して設定または変更されたフィルターについては、以下のようなコマンドを実行する必要があります。show snmp mib walk (ascii | decimal) object-id
. これにより、Junosはフィルター カウンターを学習し、フィルター統計が表示されていることを確認します(これは、統計をフィルターする最初のポールがすべてのカウンターを表示しない場合があるためです)。Trio のみの一致フィルターとは、Trio チップセットでのみサポートされている一致条件またはアクションを少なくとも 1 つ含むフィルターです。
このガイダンスは、すべての ファイアウォール フィルターに適用されます。enhanced-mode
また、オフセット範囲またはオフセットマスクに対する柔軟な一致フィルター条件、および次のいずれかの一致条件を持つIPv6トラフィックのファイアウォールフィルター一致条件にも適用されます。IPv4トラフィックのファイアウォールフィルター一致条件gre-key
IPv6トラフィックのファイアウォールフィルター一致条件 、 、 。payload-protocol
extension headers
is_fragment
また、次のいずれか を持つフィルターにも適用されます。ファイアウォールフィルター終了アクション または 、または次のいずれか :encapsulate
decapsulate
ファイアウォールフィルター非終了アクション 、および .policy-map
clear-policy-map
ステートメント階層
フレキシブル一致フィルター項目には、 に示すように 3 つのバリエーション があります。表 1バリエーションは 階層レベルで設定されます 。flexible-match
[edit firewall]
柔軟な一致テンプレートを定義するために使用されます。および は 階層で設定されます。flexible-filter-match-mask
flexible-match-range
[edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
EX9200スイッチのフィルターを使用します。family ethernet-switching
柔軟なフィルター一致タイプ
柔軟なフィルター一致タイプ |
使用可能な属性 |
説明 |
---|---|---|
|
|
属性として という名前の柔軟な一致テンプレートを作成します。<name> |
|
一致させるデータの長さ(ビット単位)、文字列入力には不要(0..32) QFX5120およびEX4650スイッチの場合、有効なビット長は16および32のみです。 |
|
|
(match-start + バイト)オフセット(0..7)の後のビットオフセット |
|
|
一致開始ポイント後のバイトオフセット |
|
|
パケットで一致させる開始ポイント |
|
|
|
一致させるデータの長さ(ビット単位)、文字列入力には不要(0..128) |
|
(match-start + バイト)オフセット(0..7)の後のビットオフセット |
|
|
一致開始ポイント後のバイトオフセット |
|
|
定義済みテンプレート フィールドから柔軟な一致を選択します。構成されていない場合は 必須です。 |
|
|
一致させるパケットデータ内のビットをマスクアウトします。 |
|
|
パケットで一致させる開始ポイント。構成されていない場合は 必須です。 |
|
|
一致する値データ/文字列。 |
|
|
|
一致させるデータの長さ (ビット単位)。(0..32) 構成されていない場合は 必須です。 |
|
(match-start + バイト)オフセットの後のビットオフセット。(0..7) |
|
|
一致開始ポイント後のバイトオフセット |
|
|
定義済みテンプレートから柔軟な一致を選択します。 |
|
|
パケットで一致させる開始ポイント。構成されていない場合は 必須です。 |
|
|
一致させる値の範囲。 |
|
|
一致しない値の範囲。 |
柔軟なフィルター一致開始場所
柔軟な一致フィルター項目は、パケット内の開始位置またはアンカー ポイントを指定することで構築されます。開始場所は次のいずれかです。レイヤー2、レイヤー3、レイヤー4、ペイロード(使用するプロトコルファミリーによって異なります)。 は、利用可能な柔軟なフィルター一致の開始位置をプロトコルファミリー別に示しています。表 2これらの使用可能な開始場所は、 柔軟な一致フィルター条件の場所として使用します。match-start
これらの開始位置から、特定のバイトオフセットとビットオフセットを利用して、フィルターがパケット内の非常に特定の位置のパターンを一致させることができます。
プロトコルファミリー |
利用可能な開始場所 |
---|---|
|
QFX5120およびEX4650スイッチでは、Junosリリース20.1R1で、レイヤー2およびレイヤー3(のみ)の柔軟な一致フィルターのサポートが追加されました。 |
|
QFX5120およびEX4650スイッチでは、Junosリリース20.1R1で、レイヤー2およびレイヤー3(のみ)の柔軟な一致フィルターのサポートが追加されました。 |
|
|
|
|
|
|
|
|
|
(EX9200スイッチ) Junosリリース20.1R1で、QFX5120スイッチおよびEX4650スイッチで、レイヤー2およびレイヤー3(のみ)のフレキシブルマッチフィルターのサポートが追加されました。レイヤー 2 パケット オフセットと一致長の使用例を以下に示します。 |
柔軟なフィルター一致の例
次の例は、 の使用とコンテキスト を示しています。flexible-match-mask
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
は 、フレキシブル一致条件に使用する定義済みテンプレートを指定します 。<mask-name>flexible-mask-name テンプレートを定義して、パケット内のどの位置(位置)でフレキシブル一致条件を実行するかを指定できます。
for は 16 進形式です。<mask>mask-in-hex 例えば、 が 設定されているマスクは、最初のバイトの最初の 4 ビット(によって 参照される)と、2 バイト目の最初の 6 ビットの一致を指定します。0xf0fc
<mask-name> パケットが IPv4 パケットで、L3 ヘッダーの最初の 2 バイトを参照している場合、 検索は IP バージョン フィールドと DSCP フィールドです。<mask-name> 別の例として、構成されたマスク は、最初のバイト全体と、2 番目のバイトからの 2 ビットの検索を指定します。0xffc0
が L3ヘッダーの最初の2バイトを参照し、パケットがIPv6パケットである場合、IPバージョンフィールドとトラフィッククラスフィールドのDSCPを指定します。<mask-name>
に指定されているのは ASCII 文字列です。<pattern>prefix 最初の 2 文字 が の場合、文字列は適切なビットをエンコードする 16 進数として処理されます。0x
例えば、マスクと組み合わせて設定されたプレフィックスは、L3ヘッダーの最初の2バイトを参照し、最初の4ビット(バージョンフィールドは4に等しい)およびIPv4 DSCPフィールド(DSCPはcs6に等しい)での検索を示します。0x40c0
0xf0fc
<mask-name>0100
1100 00
または、設定されたプレフィックスをマスクと組み合わせて使用し、L3ヘッダーの最初の2バイトを参照し、最初の4ビット(バージョンフィールドは6に等しい)およびIPv6 DSCPフィールド(DSCPはcs6に等しい)での検索を指定します。0x6c00
0xffc0
<mask-name>0110
1100 00
最初の例では、柔軟なマッチングのために L3 ヘッダーから最初の 2 バイト (16 ビット) を選択するマスク テンプレートを定義します。
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
次の例では、柔軟なマッチングのために、パケット ペイロードの 3 番目から 6 番目のバイト (32 ビット) を選択するマスク テンプレートを定義します。
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
次の例は、文字列 JNPR と一致する ASCII 文字を示しています(ASCII 文字: 、 、 、 )をパケットペイロードの3番目から6番目のバイトに入れます。0x4a
0x4e
0x50
0x52
フィルターは、前の例で定義した マスク テンプレートを使用します。FM-FOUR-PAYLOAD-BYTES
firewall { family ccc filter FF-COUNT-JNPR-PACKETS { term JNPR-STRING { from { flexible-match-mask { mask-in-hex 0xffffffff; prefix JNPR; flexible-mask-name FM-FOUR-PAYLOAD-BYTES; } } then { count CNT-JNPR-YES accept; } } term DEAFULT { then { count CNT-JNPR-NO accept; } } } }
この例では、カプセル化されたパケットが IPv4 か IPv6 かに関係なく、DSCP が と等しい DSCP を探すファミリー ccc フィルタを示しています。cs6
ef
最初の例で定義した マスク テンプレートを使用します。FM-FIRST-TWO-L3-BYTES
firewall { family ccc filter FF-DSCP-CLASSIFY { term ROUTING-IPV4 { from { flexible-match-mask { mask-in-hex 0xf0fc; prefix 0x40c0; # DSCP=cs6 in IPv4 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count ROUTING-IPV4; accept; } } term ROUTING-IPV6 { from { flexible-match-mask { mask-in-hex 0xffc0; prefix 0x6c00; # DSCP=cs6 in IPv6 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count ROUTING-IPV6; accept; } } term VOICE-IPV4 { from { flexible-match-mask { mask-in-hex 0xf0fc; prefix 0x40b8; # DSCP=ef in IPv4 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count VOICE-IPV4; accept; } } term VOICE-IPV6 { from { flexible-match-mask { mask-in-hex 0xffc0; prefix 0x6b80; # DSCP=ef in IPv6 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count VOICE-IPV6; accept; } } term DEFAULT { then { accept; } } } }
この例では、Junos リリース 20.1R1 を実行する QFX5120-32C、QFX5120-48Y、または EX4650 デバイスのファイアウォール フィルターで、レイヤー 2 パケット オフセットから始まる一致長を使用する方法を示します。ここでは、32ビットのビット長と ファミリーを使用します( レイヤー3オフセットを使用しているため、サポート されています)。ethernet-switching
inet
inet6
user@device# show firewall family ethernet-switching filter udf_eth { term t1 { from { flexible-match-mask { match-start layer-2; byte-offset 8; bit-length 32; prefix 168430090; } } then count c1; } }
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer をご利用ください。