[index] SwitchBlade 4000シリーズ コマンドリファレンス 2.6

スイッチング/ハードウェアパケットフィルター


  - 基本動作
   - フィルターの構成
   - フィルター処理の流れ
  - 設定手順
  - コマンド例
  - 注意事項
   - DPORT指定について
   - 本体宛てのパケットと本体発のパケット
    - 本体宛てのパケット
    - 本体発のパケット
   - DVLAN、SVLANについて
   - 包含関係にあるネットワークアドレスについて


ハードウェアパケットフィルターは、ハードウェア(ASIC)レベルでパケットをフィルタリング(許可・拒否)する機能です。

Note - ファイアウォールとハードウェアパケットフィルターは併用可能です。ただしその場合、ハードウェアパケットフィルターはスイッチングされるパケットにだけ適用され、ルーティングされるパケットには適用されません。なお、ファイアウォール機能が無効であっても、ファイアウォールポリシーにインターフェース(VLAN)を追加すると、本件においてはファイアウォールを併用していることになりますのでご注意ください。なお、ファイアウォールポリシーに追加されたインターフェース(VLAN)経由の通信(ルーティング)はソフトウェア処理となります。

ハードウェアパケットフィルターには以下の特長があります。


パケットのフィルタリング条件には、以下の各項目を使用できます。フィルタリング条件は、汎用のパケットフィルターであるクラシファイアによって定義します。クラシファイアの詳細については「スイッチング」の「クラシファイア」をご覧ください。


条件に一致したパケットに対しては、以下の処理(アクション)が可能です。アクションは最初に一致したエントリーで適用されます。どのエントリーにも一致しなかったパケットは通常通り処理(転送)されます。


Note - ハードウェアパケットフィルターの設定コマンド(ADD SWITCH HWFILTERコマンド)には、転送、破棄以外にデバッグ用のアクションが存在しますが、通常の運用では使わないためここでは触れません。

 

基本動作

ハードウェアパケットフィルターの基本動作について説明します。

 

フィルターの構成

ハードウェアパケットフィルターは、複数のエントリーをリストとして保持する「フィルター」と、個々の「エントリー」から構成されます。エントリーは、クラシファイア(汎用パケットフィルター)とアクション、および適用対象のスイッチポート(送出ポート)で構成されます。

Note - スイッチ本体宛てのパケット、および、スイッチ本体から送信されるパケットへの適用条件については、本章の「本体宛てのパケットと本体発のパケット」をご覧ください。


 

フィルター処理の流れ

ハードウェアパケットフィルターの処理は、パケット送信時に、おおむね次の手順にしたがって行われます。

Note - 以下の説明は、設定上の便宜を最優先して書いたものであり、実際の内部動作を正確に記述したものではありません。あらかじめご了承ください。

  1. ハードウェアパケットフィルターが1つでも定義されている場合、送信パケットとフィルターエントリーを、フィルター番号の小さい順、エントリー番号の小さい順に照合します。

  2. 一致するエントリーが見つかった場合は、その場でアクション(破棄か転送)を実行し、フィルターの処理を完了します。

  3. 一致するエントリーがなかった場合はフィルター処理を完了し、通常どおりパケットを出力します。

 

設定手順

ハードウェアパケットフィルターの設定は、次の流れで行います。

  1. クラシファイアの作成(CREATE CLASSIFIERコマンド)
  2. フィルターエントリーの追加(ADD SWITCH HWFILTERコマンド)

以下、各手順について詳しく解説します。

ここでは例として、ホスト192.168.100.38から、ポート1.8に接続されているサーバー192.168.10.5宛てのパケットを遮断するよう設定します。

  1. クラシファイアを作成します。詳細は「スイッチング」の「クラシファイア」をご覧ください。


    Note - クラシファイアの設定において、ファイアウォールポリシーに追加されたインターフェース(VLAN)をSVLANに指定しないでください。指定した場合、そのクラシファイアは、ルーティングパケットに対しては機能しません(スイッチングパケットに対しては機能します)。この現象は、ファイアウォール機能が無効であっても発生するのでご注意ください。

    Note - SVLANを指定したクラシファイアは、インスタンスをまたぐパケットに対しては無効です。

  2. ハードウェアパケットフィルターにエントリーを追加します。エントリーを追加するには、クラシファイア、マッチ時のアクション(転送か破棄)、エントリーを適用する送出ポートの指定が必要です。


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がグローバルネットワークに接続されているものと仮定している。


■ 192.168.10.100から192.168.20.0/24へのIPパケットを破棄。ここでは、192.168.20.0/24がスイッチポート1.5-1.8に接続されていると仮定している。


■ ポート1.2から送信されるICMPパケットを破棄


■ 192.168.30.100へのtelnetパケットを破棄。ここでは、192.168.30.100がスイッチポート2.42に接続されていると仮定している。


■ ハードウェアパケットフィルターは、ルーティングされない同一IPネットワーク内のトラフィックに対しても有効です。そのため、「192.168.10.0/24から他ネットワークへのIP通信を拒否」するつもりで次のような設定を行うと、192.168.10.0/24内でもIP通信ができなくなってしまいます。


通常、ネットワーク単位でフィルターを設定するときは、次の例のように、フィルターエントリーを適用する送出ポート(DPORT)を限定してください。ここでは、192.168.10.0/24がスイッチポート1.1-1.4に接続されていると仮定しています。


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パラメーターに番号を指定すれば、該当するクラシファイアの詳細なパラメーターが表示されます。


■ ハードウェアパケットフィルターからエントリーを削除するには、DELETE SWITCH HWFILTERコマンドを使います。

次のようにクラシファイア番号だけを指定したときは、該当する番号のクラシファイアを持つエントリーがすべて削除されます。同じクラシファイアを複数のエントリーで使用している場合、該当するすべてのエントリーが削除されます。


次のようにクラシファイア番号とエントリー番号(エントリー位置を示す番号)を指定すれば、同じクラシファイアを複数回使用している場合でも、特定のエントリーだけを削除できます。


Note - エントリー番号は可変です。エントリーを削除すると、後続のエントリー番号が1つずつ前にずれるので注意してください。コマンド中でエントリー番号を指定するときは、必ずSHOW SWITCH HWFILTERコマンドを実行し、希望のエントリーの番号を確認してから指定してください。

■ ハードウェアパケットフィルター全体を削除するには、DELETE SWITCH HWFILTERコマンドにフィルター番号だけを指定します。これにより、フィルター内の全エントリーが削除されます。また、CLASSIFIERパラメーターにALLを指定しても同じことができます。


Note - ハードウェアパケットフィルターやエントリーを削除しても、クラシファイアは削除されません。ハードウェアパケットフィルターとクラシファイアの関連付けが削除されるだけです。クラシファイアを削除するには、DESTROY CLASSIFIERコマンドを使います。

 

注意事項

ここでは、設定時に注意が必要なハードウェアパケットフィルターの仕様について解説します。

 

DPORT指定について

IPDADDR/IPXDADDRを条件に含むクラシファイアは、インスタンスごとに、適用ポート(DPORT)の数だけ内部テーブルエントリーを消費します。IPDADDR/IPXDADDR用の内部エントリー容量はインスタンスあたり62個なので、適用ポートを限定するなどして(例:「DPORT=ALL」の指定を避ける)、各インスタンスにおけるエントリー消費数が62個以内におさまるよう工夫してください。

■ 一例として、48ポートラインカードを1枚(スロット1に)装着している環境で、次のようなハードウェアパケットフィルターを定義したとします。48ポートラインカードは2つのインスタンスを持ち、各インスタンスのポート数は24です(1〜24、25〜48)。


クラシファイア「1」はIPDADDRを条件に含んでいるため、インスタンスごとに、適用ポート数分の内部エントリーを消費します。ここでは、「DPORT=ALL」が指定されているため、インスタンスごとの適用ポート数は24となり、結果的に、各インスタンスにおいて内部エントリーを24個ずつ消費してしまいます。

回避策としては、DPORTにALLではなく本当に必要なポートだけを指定します。たとえば、10.1.2.0/24のネットワークがポート1.1〜1.3に接続されているなら、DPORTの指定を次のように変更することで、消費エントリー数を3個にまで減らせます。


 

本体宛てのパケットと本体発のパケット

本体(CPU)宛てのパケットと本体から送信されるパケットに対して、ハードウェアパケットフィルターは次のように適用されます。

 

本体宛てのパケット

スイッチ本体(CPU)宛てのパケットに対し、ハードウェアパケットフィルターは次のように動作します。


 

本体発のパケット

スイッチ本体(CPU)から送信されるパケットに対し、ハードウェアパケットフィルターは次のように動作します。レイヤー2のアドレス種別によって、動作が異なります。


 

DVLAN、SVLANについて

DVLANを条件とするエントリーとSVLANを条件とするエントリーがある場合、DVLANとSVLANの両方にマッチするパケットには、エントリーの順序とは関係なく、DISCARDアクションのエントリーが優先的に適用されます。

たとえば、次のようなフィルターを設定した場合、


VLAN 10からVLAN 30宛てのパケットは、1つ目のエントリー(1)にマッチするためフォワードされると予測できますが、実際には2つ目のエントリー(2)が適用され破棄されてしまいます。2つのエントリーの順番を入れ替えても同じ動作になります。

 

包含関係にあるネットワークアドレスについて

IPSADDRとIPDADDRの両方を指定したFORWARDエントリーが複数存在しており、なおかつ、これらのエントリーのIPSADDRが、後続するDISCARDエントリーのIPSADDRに包含されている場合、特定のパケットが意図したとおりに破棄されないことがあります。

たとえば、次の3つのフィルターエントリーが定義されている状況を考えます。

  1. AS > AD Forward
  2. BS > BD Forward
  3. 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番を追加します。

  1. AS > AD Forward
  2. BS > BD Forward
  3. AS > BD Discard
  4. BS > AD Discard
  5. ZS > ZD Discard

最後のDISCARDエントリーのIPSADDR(例ではZS)に包含されるアドレスが2個より多い場合も同様です。たとえば、次の4つのフィルターエントリーが定義されている状況を考えます。

  1. AS > AD Forward
  2. BS > BD Forward
  3. CS > CD Forward
  4. ZS > ZD Discard

このとき、アドレスZSがAS、BS、CSを包含していると、次のIP通信が意図したとおりに破棄されません。


このようなときは、先ほどの例と同様に、AS > BD, AS > CD, BS > AD, BS > CD, CS > AD, CS > BDを破棄するエントリーを明示的に追加してください。







(C) 2003 - 2005 アライドテレシスホールディングス株式会社

PN: J613-M6964-02 Rev.G