[index]
SwitchBlade 4000シリーズ コマンドリファレンス 2.6
スイッチング/ハードウェアパケットフィルター
- 基本動作
- フィルターの構成
- フィルター処理の流れ
- 設定手順
- コマンド例
- 注意事項
- DPORT指定について
- 本体宛てのパケットと本体発のパケット
- 本体宛てのパケット
- 本体発のパケット
- DVLAN、SVLANについて
- 包含関係にあるネットワークアドレスについて
ハードウェアパケットフィルターは、ハードウェア(ASIC)レベルでパケットをフィルタリング(許可・拒否)する機能です。
Note
- ファイアウォールとハードウェアパケットフィルターは併用可能です。ただしその場合、ハードウェアパケットフィルターはスイッチングされるパケットにだけ適用され、ルーティングされるパケットには適用されません。なお、ファイアウォール機能が無効であっても、ファイアウォールポリシーにインターフェース(VLAN)を追加すると、本件においてはファイアウォールを併用していることになりますのでご注意ください。なお、ファイアウォールポリシーに追加されたインターフェース(VLAN)経由の通信(ルーティング)はソフトウェア処理となります。
ハードウェアパケットフィルターには以下の特長があります。
- ハードウェアで処理するため、ソフトウェア処理のファイアウォールよりも高速
- 出力ポート単位でフィルタリングが可能(ファイアウォールはVLAN単位)
- ルーティングされないトラフィック(同一VLAN内のトラフィック)に対してもフィルタリングが可能(たとえば、IPモジュールを有効にしていない状態、すなわちレイヤー2スイッチとして使用している場合でもIPのフィルタリングが可能)
パケットのフィルタリング条件には、以下の各項目を使用できます。フィルタリング条件は、汎用のパケットフィルターであるクラシファイアによって定義します。クラシファイアの詳細については「スイッチング」の「クラシファイア」をご覧ください。
- 出力スイッチポート
- 入力VLAN、出力VLAN
- Ethernetのフレームフォーマット、プロトコルタイプ
- レイヤー2アドレス種別(ユニキャストとそれ以外)
- IPヘッダーのTOS優先度(precedence)、DSCP(DiffServ Code Point)、プロトコル、始点・終点IPアドレス
- IPXヘッダーの終点ネットワーク、始点・終点ソケット
- TCPヘッダーの始点・終点ポート
- UDPヘッダーの始点・終点ポート
条件に一致したパケットに対しては、以下の処理(アクション)が可能です。アクションは最初に一致したエントリーで適用されます。どのエントリーにも一致しなかったパケットは通常通り処理(転送)されます。
Note
- ハードウェアパケットフィルターの設定コマンド(ADD SWITCH HWFILTERコマンド)には、転送、破棄以外にデバッグ用のアクションが存在しますが、通常の運用では使わないためここでは触れません。
ハードウェアパケットフィルターの基本動作について説明します。
ハードウェアパケットフィルターは、複数のエントリーをリストとして保持する「フィルター」と、個々の「エントリー」から構成されます。エントリーは、クラシファイア(汎用パケットフィルター)とアクション、および適用対象のスイッチポート(送出ポート)で構成されます。
Note
- スイッチ本体宛てのパケット、および、スイッチ本体から送信されるパケットへの適用条件については、本章の「本体宛てのパケットと本体発のパケット」をご覧ください。

ハードウェアパケットフィルターの処理は、パケット送信時に、おおむね次の手順にしたがって行われます。
Note
- 以下の説明は、設定上の便宜を最優先して書いたものであり、実際の内部動作を正確に記述したものではありません。あらかじめご了承ください。
- ハードウェアパケットフィルターが1つでも定義されている場合、送信パケットとフィルターエントリーを、フィルター番号の小さい順、エントリー番号の小さい順に照合します。
- 一致するエントリーが見つかった場合は、その場でアクション(破棄か転送)を実行し、フィルターの処理を完了します。
- 一致するエントリーがなかった場合はフィルター処理を完了し、通常どおりパケットを出力します。
ハードウェアパケットフィルターの設定は、次の流れで行います。
- クラシファイアの作成(CREATE CLASSIFIERコマンド)
- フィルターエントリーの追加(ADD SWITCH HWFILTERコマンド)
以下、各手順について詳しく解説します。
ここでは例として、ホスト192.168.100.38から、ポート1.8に接続されているサーバー192.168.10.5宛てのパケットを遮断するよう設定します。
- クラシファイアを作成します。詳細は「スイッチング」の「クラシファイア」をご覧ください。
CREATE CLASSIFIER=1 IPDADDR=192.168.10.5 IPSADDR=192.168.100.38 ↓
Note
- クラシファイアの設定において、ファイアウォールポリシーに追加されたインターフェース(VLAN)をSVLANに指定しないでください。指定した場合、そのクラシファイアは、ルーティングパケットに対しては機能しません(スイッチングパケットに対しては機能します)。この現象は、ファイアウォール機能が無効であっても発生するのでご注意ください。
Note
- SVLANを指定したクラシファイアは、インスタンスをまたぐパケットに対しては無効です。
- ハードウェアパケットフィルターにエントリーを追加します。エントリーを追加するには、クラシファイア、マッチ時のアクション(転送か破棄)、エントリーを適用する送出ポートの指定が必要です。
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=1.8 ↓
Note
- DPORT(送出スイッチポート)には、可能な限り、フィルターを適用したいポートだけを指定するようにしてください。CREATE CLASSIFIERコマンドでIPDADDR、IPXDADDRを指定している場合、ADD SWITCH HWFILTERコマンドのDPORTパラメーターに指定したポートの数だけ内部テーブル領域が消費されます。ADD SWITCH HWFILTERコマンドの実行時に「Insufficient space in the hardware packet classifier tables.」というエラーメッセージが表示されたときは、DPORTパラメーターに指定するポートを限定できないか確認してください。特に「DPORT=ALL」は、本当に必要なとき以外使わないでください。詳しくは本章の「DPORT指定に関する注意」をご参照ください。
Note
- DPORTにALL以外を指定した場合、複数ポートへ出力されるブロードキャスト、マルチキャスト、未学習ユニキャストパケットはフィルターの適用対象になりません。
Note
- スイッチ本体宛てのパケット、および、スイッチ本体から送信されるパケットへの適用条件については、本章の「本体宛てのパケットと本体発のパケット」をご覧ください。
基本設定は以上です。
次に具体的なコマンド例を示します。
■ グローバルネットワークに出すべきでないパケット(始点がプライベート、ループバック、マルチキャスト、実験用アドレスのもの)を遮断する。ここでは、ポート2.8がグローバルネットワークに接続されているものと仮定している。
CREATE CLASSIFIER=1 IPSADDR=10.0.0.0/8 ↓
CREATE CLASSIFIER=2 IPSADDR=127.0.0.0/8 ↓
CREATE CLASSIFIER=3 IPSADDR=169.254.0.0/16 ↓
CREATE CLASSIFIER=4 IPSADDR=172.16.0.0/12 ↓
CREATE CLASSIFIER=5 IPSADDR=192.168.0.0/16 ↓
CREATE CLASSIFIER=6 IPSADDR=224.0.0.0/3 ↓
CREATE CLASSIFIER=7 IPSADDR=0.0.0.0/8 ↓
ADD SWITCH HWFILTER=1 CLASSIFIER=1-7 ACTION=DISCARD DPORT=2.8 ↓
■ 192.168.10.100から192.168.20.0/24へのIPパケットを破棄。ここでは、192.168.20.0/24がスイッチポート1.5-1.8に接続されていると仮定している。
CREATE CLASSIFIER=1 IPSADDR=192.168.10.100/32 IPDADDR=192.168.20.0/24 ↓
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=1.5-1.8 ↓
■ ポート1.2から送信されるICMPパケットを破棄
CREATE CLASSIFIER=1 IPPROTOCOL=ICMP ↓
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=1.2 ↓
■ 192.168.30.100へのtelnetパケットを破棄。ここでは、192.168.30.100がスイッチポート2.42に接続されていると仮定している。
CREATE CLASSIFIER=1 IPDADDR=192.168.30.100/32 TCPDPORT=23 ↓
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=2.42 ↓
■ ハードウェアパケットフィルターは、ルーティングされない同一IPネットワーク内のトラフィックに対しても有効です。そのため、「192.168.10.0/24から他ネットワークへのIP通信を拒否」するつもりで次のような設定を行うと、192.168.10.0/24内でもIP通信ができなくなってしまいます。
CREATE CLASSIFIER=1 IPSADDR=192.168.10.0/24 ↓
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=ALL ↓
通常、ネットワーク単位でフィルターを設定するときは、次の例のように、フィルターエントリーを適用する送出ポート(DPORT)を限定してください。ここでは、192.168.10.0/24がスイッチポート1.1-1.4に接続されていると仮定しています。
CREATE CLASSIFIER=1 IPSADDR=192.168.10.0/24 ↓
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=1.5-1.8 ↓
Note
- DPORT(送出スイッチポート)には、可能な限り、フィルターを適用したいポートだけを指定するようにしてください。CREATE CLASSIFIERコマンドでIPDADDR、IPXDADDRを指定している場合、ADD SWITCH HWFILTERコマンドのDPORTパラメーターに指定したポートの数だけ内部テーブル領域が消費されます。ADD SWITCH HWFILTERコマンドの実行時に「Insufficient space in the hardware packet classifier tables.」というエラーメッセージが表示されたときは、DPORTパラメーターに指定するポートを限定できないか確認してください。特に「DPORT=ALL」は、本当に必要なとき以外使わないでください。詳しくは本章の「DPORT指定に関する注意」をご参照ください。
Note
- ハードウェアパケットフィルターでは、最初にマッチしたエントリーのアクションが実行されます。デフォルト拒否の設定を行うには、最初に許可するエントリーを並べた上で、最後にすべてを破棄するエントリーを設定します。また、デフォルト許可に設定する場合は、拒否するエントリーだけを並べていきます。ハードウェアパケットフィルター自体は、デフォルト許可です。
■ ハードウェアパケットフィルターを使用するために、必ずしもIPモジュールを有効にする必要はありません。純粋なレイヤー2スイッチとして本製品を使用する場合であっても、ハードウェアパケットフィルターを使えば、IPアドレスやプロトコルに応じたフィルタリングが可能です。
■ ハードウェアパケットフィルターの一覧を表示するには、SHOW SWITCH HWFILTERコマンドを使います。
■ クラシファイアの一覧を表示するには、SHOW CLASSIFIERコマンドを実行します。CLASSIFIERパラメーターに番号を指定すれば、該当するクラシファイアの詳細なパラメーターが表示されます。
SHOW CLASSIFIER ↓
SHOW CLASSIFIER=1-3 ↓
SHOW CLASSIFIER=ALL ↓
■ ハードウェアパケットフィルターからエントリーを削除するには、DELETE SWITCH HWFILTERコマンドを使います。
次のようにクラシファイア番号だけを指定したときは、該当する番号のクラシファイアを持つエントリーがすべて削除されます。同じクラシファイアを複数のエントリーで使用している場合、該当するすべてのエントリーが削除されます。
DELETE SWITCH HWFILTER=1 CLASSIFIER=2 ↓
DELETE SWITCH HWFILTER=1 CLASSIFIER=5-8 ↓
次のようにクラシファイア番号とエントリー番号(エントリー位置を示す番号)を指定すれば、同じクラシファイアを複数回使用している場合でも、特定のエントリーだけを削除できます。
DELETE SWITCH HWFILTER=1 CLASSIFIER=3 RULEPOS=4 ↓
Note
- エントリー番号は可変です。エントリーを削除すると、後続のエントリー番号が1つずつ前にずれるので注意してください。コマンド中でエントリー番号を指定するときは、必ずSHOW SWITCH HWFILTERコマンドを実行し、希望のエントリーの番号を確認してから指定してください。
■ ハードウェアパケットフィルター全体を削除するには、DELETE SWITCH HWFILTERコマンドにフィルター番号だけを指定します。これにより、フィルター内の全エントリーが削除されます。また、CLASSIFIERパラメーターにALLを指定しても同じことができます。
DELETE SWITCH HWFILTER=1 ↓
DELETE SWITCH HWFILTER=1 CLASSIFIER=ALL ↓
Note
- ハードウェアパケットフィルターやエントリーを削除しても、クラシファイアは削除されません。ハードウェアパケットフィルターとクラシファイアの関連付けが削除されるだけです。クラシファイアを削除するには、DESTROY CLASSIFIERコマンドを使います。
ここでは、設定時に注意が必要なハードウェアパケットフィルターの仕様について解説します。
IPDADDR/IPXDADDRを条件に含むクラシファイアは、インスタンスごとに、適用ポート(DPORT)の数だけ内部テーブルエントリーを消費します。IPDADDR/IPXDADDR用の内部エントリー容量はインスタンスあたり62個なので、適用ポートを限定するなどして(例:「DPORT=ALL」の指定を避ける)、各インスタンスにおけるエントリー消費数が62個以内におさまるよう工夫してください。
■ 一例として、48ポートラインカードを1枚(スロット1に)装着している環境で、次のようなハードウェアパケットフィルターを定義したとします。48ポートラインカードは2つのインスタンスを持ち、各インスタンスのポート数は24です(1〜24、25〜48)。
CREATE CLASSIFIER=1 IPDADDR=10.1.2.0/24
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=ALL
クラシファイア「1」はIPDADDRを条件に含んでいるため、インスタンスごとに、適用ポート数分の内部エントリーを消費します。ここでは、「DPORT=ALL」が指定されているため、インスタンスごとの適用ポート数は24となり、結果的に、各インスタンスにおいて内部エントリーを24個ずつ消費してしまいます。
回避策としては、DPORTにALLではなく本当に必要なポートだけを指定します。たとえば、10.1.2.0/24のネットワークがポート1.1〜1.3に接続されているなら、DPORTの指定を次のように変更することで、消費エントリー数を3個にまで減らせます。
CREATE CLASSIFIER=1 IPDADDR=10.1.2.0/24
ADD SWITCH HWFILTER=1 CLASSIFIER=1 ACTION=DISCARD DPORT=1.1-1.3
本体(CPU)宛てのパケットと本体から送信されるパケットに対して、ハードウェアパケットフィルターは次のように適用されます。
本体宛てのパケット
スイッチ本体(CPU)宛てのパケットに対し、ハードウェアパケットフィルターは次のように動作します。
- DPORT=ALLを指定した場合、このフィルターはすべてのCPU宛てパケットに適用されます。ただし、フィルター条件にIPDADDRを含む場合は適用されません。
- DPORTにインスタンス上の全ポートを明示的に指定した場合(例:8ポートラインカードでDPORT=1.1-1.8とした場合)、このフィルターは該当インスタンス上のポートで受信するすべてのCPU宛てパケットに適用されます。ただし、フィルター条件にIPDADDRを含む場合は適用されません。
- DPORTに上記以外を指定した場合、このフィルターはCPU宛てパケットには適用されません。
本体発のパケット
スイッチ本体(CPU)から送信されるパケットに対し、ハードウェアパケットフィルターは次のように動作します。レイヤー2のアドレス種別によって、動作が異なります。
- CPU発のユニキャストパケットには、原則として通常どおりフィルターが適用されます。たとえば、DPORT=1.5のフィルターは、ポート1.5から送信されるCPU発パケットに適用されます。
- CPU発のマルチキャストパケットには、いっさいフィルターが適用されません。
- CPU発のブロードキャストパケットには、下記のいずれかの条件を満たすフィルターだけが適用されます。いずれの条件も満たさないフィルターは適用されません。
- DPORT=ALLが指定されている
- DPORTに指定したポートの所属インスタンス内に、同一VLAN所属の他のポートが存在しない場合
- DPORTに指定したポートの所属インスタンス内に、同一VLAN所属で、なおかつ、リンクアップしている他のポートが存在しない場合
DVLANを条件とするエントリーとSVLANを条件とするエントリーがある場合、DVLANとSVLANの両方にマッチするパケットには、エントリーの順序とは関係なく、DISCARDアクションのエントリーが優先的に適用されます。
たとえば、次のようなフィルターを設定した場合、
CREATE CLASSIFIER=10 DVLAN=30 ↓
CREATE CLASSIFIER=20 SVLAN=10 ↓
ADD SWITCH HWFILTER=10 CLASSIFIER=20 ACTION=FORWARD DPORT=1.3 (1) ↓
ADD SWITCH HWFILTER=10 CLASSIFIER=10 ACTION=DISCARD DPORT=1.3 (2) ↓
VLAN 10からVLAN 30宛てのパケットは、1つ目のエントリー(1)にマッチするためフォワードされると予測できますが、実際には2つ目のエントリー(2)が適用され破棄されてしまいます。2つのエントリーの順番を入れ替えても同じ動作になります。
IPSADDRとIPDADDRの両方を指定したFORWARDエントリーが複数存在しており、なおかつ、これらのエントリーのIPSADDRが、後続するDISCARDエントリーのIPSADDRに包含されている場合、特定のパケットが意図したとおりに破棄されないことがあります。
たとえば、次の3つのフィルターエントリーが定義されている状況を考えます。
- AS > AD Forward
- BS > BD Forward
- ZS > ZD Discard
ここでは説明を簡単にするため、フィルターの条件とアクションを1行で表しています。「AS > BS Forward」はASからBSへのパケットを許可する、「ZS > ZD Discard」はZSからZDへのパケットを破棄する、の意味になります。また、AS, BS, ZS, AD, BD, ZDはIPアドレスを示しています。先頭の番号はエントリー番号です。
このとき、アドレスZSがASとBSを包含していると(例:ZS = 192.168.0.0/16, AS = 192.168.10.0/24, BS = 192.168.20.0/24)、次のIP通信が意図したとおりに破棄されません。
このようなときは、AS > BD, BS > ADを破棄するエントリーを明示的に追加してください。具体的には次の3、4番を追加します。
- AS > AD Forward
- BS > BD Forward
- AS > BD Discard
- BS > AD Discard
- ZS > ZD Discard
最後のDISCARDエントリーのIPSADDR(例ではZS)に包含されるアドレスが2個より多い場合も同様です。たとえば、次の4つのフィルターエントリーが定義されている状況を考えます。
- AS > AD Forward
- BS > BD Forward
- CS > CD Forward
- ZS > ZD Discard
このとき、アドレスZSがAS、BS、CSを包含していると、次のIP通信が意図したとおりに破棄されません。
- AS > BD, AS > CD
- BS > AD, BS > CD
- CS > AD, CS > BD
このようなときは、先ほどの例と同様に、AS > BD, AS > CD, BS > AD, BS > CD, CS > AD, CS > BDを破棄するエントリーを明示的に追加してください。
(C) 2003 - 2005 アライドテレシスホールディングス株式会社
PN: J613-M6964-02 Rev.G