条件が一致した場合の競合の回避
高速更新フィルターには複数の条件を含めることができ、それぞれにさまざまな一致条件があります。ただし、フィルターに複数の用語を設定する場合は、用語が重複したり競合したりしないようにする必要があります。パケットが両方の用語のすべての条件に一致することが可能な場合、2つの用語が重複していると見なされます。各条件は一致に対して異なるアクションを指定するため、ルーターはどのアクションを実行するかを決定できません。条件が重複すると、競合エラーが発生し、動的プロファイルがフィルターを適用しようとするとセッションが失敗します。エラーログには、重複する用語が表示されます。
ルーターがフィルター内の項を評価する方法
ルーターは、用語を調べるときに一致条件のテーブルを作成します。この表はルーティングテーブルに似ており、 match-order ステートメントに含まれる条件に基づいています。ルーターがパケットを受信すると、ルーターは match-order ステートメントで指定された順序でパケットの内容を調べます。
例えば、次の一致順序の例の構成例を使用して、ルーターは最初にパケットの source-addressを調べ、次に destination-addressを調べ、最後に destination-portを調べます。次の表に示すように、各項の destination-port 仕様が異なるため、フィルター内の 2 つの項は重複しません。その後、ルーターは、パケットの destination-port 値に一致する条件に対して適切なフィルターアクションを実行します。
用語 |
送信元アドレス |
宛先アドレス |
宛先ポート |
アクション |
|---|---|---|---|---|
T55 |
加入者アドレス |
203.0.113.2/32 |
HTTP |
カウントt55_cntr 同意する |
T999 |
加入者アドレス |
203.0.113.2/32 |
HTTPS |
カウントt999_cntr 同意する |
一致順序の例
firewall {
family inet {
fast-update-filter psf1 {
interface-specific;
match-order [ source-address destination-address destination-port ];
term t55 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port http;
}
then {
count t55_cntr;
accept;
}
}
term t999 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port https;
}
then {
count t999_cntr;
accept;
}
}
}
}
}
暗黙的なワイルドカードの使用
このセクションでは、一致設定で暗黙のワイルドカード指定を使用する方法の例を示します。 match-order ステートメントの条件は、その条件がフィルター内の用語の from 仕様で設定されていない場合、暗黙のワイルドカードです。
範囲(値の範囲やワイルドカードなど)を用語で使用する場合、範囲が重複してはなりません。範囲が重複すると競合エラーが発生します。ただし、ある用語で範囲を設定し、別の用語で完全一致を設定することができます。例えば、以下のフィルターテーブルでは、http値とhttps値が完全に一致するため、条件t3のワイルドカード宛先ポート値は、t55とt999の点で宛先ポートの仕様と重複しません。
暗黙のワイルドカードの例の設定では、ルーターはmatch-orderステートメントのdestination-port条件を、destination-port値が設定されていないため、t3項の暗黙的なワイルドカードと見なします。その結果、ワイルドカードは、term t3任意のdestination-port値が受け入れられることを指定します。フィルターテーブルは次のようになります。
用語 |
送信元アドレス |
宛先アドレス |
宛先ポート |
アクション |
|---|---|---|---|---|
T3 |
加入者アドレス |
203.0.113.2/32 |
任意(ワイルドカード) |
カウントt3_cntr 同意する |
T55 |
加入者アドレス |
203.0.113.2/32 |
HTTP |
カウントt55_cntr 同意する |
T999 |
加入者アドレス |
203.0.113.2/32 |
HTTPS |
カウントt999_cntr 同意する |
以下のフィルター設定では、宛先ポートが http のトラフィックは条件 t55 に一致し、宛先ポートが https のトラフィックは条件 t999に一致します。 http または https 以外の宛先ポートを持つトラフィックは、暗黙のワイルドカードである用語 t3に一致します。
暗黙のワイルドカードの例
firewall {
family inet {
fast-update-filter psf1 {
interface-specific;
match-order [ source-address destination-address dscp protocol destination-port ];
term t3 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
}
then {
count t3_cntr;
accept;
}
}
term t55 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port http;
}
then {
count t55_cntr;
accept;
}
}
term t999 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port https;
}
then {
count t999_cntr;
accept;
}
}
}
}
}
範囲の重複によって引き起こされる競合
このセクションでは、用語が重複する範囲の 2 つの例を示します。用語で範囲(ワイルドカードや値の範囲など)を使用する場合、範囲が重複してはなりません。範囲が重複すると競合エラーが発生し、セッションが失敗します。
以下のフィルター構成では、2つの用語の destination-port 範囲が重複しています。50〜80の範囲のポートは、それぞれ異なるアクションを指定する条件 src0 と条件 src1の両方に一致します。
ある用語で範囲を設定し、別の用語で完全一致を設定することができます。ある用語では一致条件にワイルドカードを使用し、2番目の用語では条件に完全一致を使用する例については、「 暗黙のワイルドカードの使用」セクションを参照してください。
用語 |
送信元アドレス |
宛先アドレス |
宛先ポート |
アクション |
|---|---|---|---|---|
src0 |
加入者アドレス |
203.0.113.2/32 |
0–80 |
カウントc1_cntr 同意する |
src1 |
加入者アドレス |
203.0.113.2/32 |
50–100 |
カウントc2_cntr 同意する |
重複する範囲 例1
firewall {
family inet {
fast-update-filter fuf–src {
interface-specific;
match-order [ source-address destination-address destination-port ];
term src0 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port 0–80;
}
then {
count c1_cntr;
accept;
}
}
term src1 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port 50–100;
}
then {
count c2_cntr;
accept;
}
}
}
このフィルター構成では、src21とsrc22に関するprotocol 仕様は、各項の範囲を設定する暗黙のワイルドカードを使用します。重複した範囲は許可されないため、競合エラーが発生します。
用語 |
送信元アドレス |
宛先アドレス |
プロトコル |
宛先ポート |
アクション |
|---|---|---|---|---|---|
SRC20 |
加入者アドレス |
203.0.113.2/32 |
UDP |
任意(ワイルドカード) |
カウントc20_cntr 同意する |
SRC21 |
加入者アドレス |
203.0.113.2/32 |
任意(ワイルドカード) |
HTTP |
カウントc21_cntr 同意する |
SRC21 |
加入者アドレス |
203.0.113.2/32 |
任意(ワイルドカード) |
HTTPS |
カウントc22_cntr 同意する |
重複する範囲の例 2
firewall {
family inet {
fast-update-filter fuf–src2 {
interface-specific;
match-order [ source-address destination-address protocol destination-port ];
term src20 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
protocol udp;
}
then {
count c20_cntr;
accept;
}
}
term src21 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port http;
}
then {
count c21_cntr;
accept;
}
}
term src22 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port https;
}
then {
count c22_cntr;
accept;
}
}
}