[index] CentreCOM 8700SLシリーズ コマンドリファレンス 2.9

# IPv6/IPv6フィルター

備考：フィーチャーライセンス AT-FL-13 が必要

      - 基本動作
       - フィルターの構成
       - フィルター処理の流れ
        - 概要
        - 詳細
      - 設定手順
       - フィルタリング条件の指定
       - アクションの指定
       - マッチしたパケットの記録
       - インターフェースへの適用
       - フィルターの削除
      - 設定例
      - その他

IPv6トラフィックフィルター（以下、IPv6フィルター）は、受信したIPv6パケットのヘッダー情報に基づいて、パケットを破棄または許可する機能です。

> Note - IPv6パケットのルーティングおよびフィルタリングはソフトウェアによって処理されます。

基本動作

IPv6フィルターの基本動作について説明します。

フィルターの構成

IPv6フィルターは、複数のフィルターエントリーで構成されるリストです。各フィルターはフィルター番号（0〜99）で、フィルター内の各エントリーはエントリー番号（1〜）で識別します。
個々のフィルターエントリーでは、パケットをふるいわけるための条件と、マッチ時のアクション（許可または破棄）を指定します。

フィルターは100個まで作成できます（フィルター番号0〜99）。また、各フィルターに追加できるエントリー数（エントリー番号1〜4294967294）は空きメモリー容量により変化します。
作成したフィルターは、IPv6インターフェースに適用して初めて効果を発揮します。フィルターの条件チェック（ふるいわけ）は、受信インターフェースで行われます。
IPv6インターフェースには、フィルターを1つだけ適用できます。同じフィルターを複数のインターフェースに割り当ててもかまいません。

フィルター処理の流れ

#### 概要

IPv6フィルターの処理内容は、次の2段階に大きく分けられます。

1. 受信（入力）IPv6インターフェースにおいて、ヘッダー情報（IPv6アドレス、ポート番号など）に基づきパケットをふるいわける（フィルタリング）
2. 選別されたパケットに対して指定された処理（許可または破棄）を実行する

#### 詳細

IPv6フィルターの詳細な処理順序について説明します。

1. IPv6パケットを受信すると、受信インターフェースにトラフィックフィルターが適用されているかどうかを調べます。
2. 受信インターフェースにトラフィックフィルターが適用されている場合、フィルター内の各エントリーをエントリー番号の若い順にチェックし、受信パケットのヘッダー情報と一致するものがあるかどうかを調べていきます。
   受信インターフェースにトラフィックフィルターが適用されていない場合は、受信インターフェースにおけるIPv6フィルター処理を完了し、通常のパケット処理（転送先決定など）に移ります。
   1. マッチするエントリーが見つかった場合は、該当エントリーのACTIONパラメーターで指定されている処理（アクション）を実行します。トラフィックフィルターでは、最初にマッチしたエントリーが適用されます。
      - EXCLUDE（破棄）の場合はパケットを破棄し、該当パケットの処理を完了します。
      - INCLUDE（許可）の場合は受信インターフェースにおけるIPv6フィルター処理を完了し、通常のパケット処理（転送先決定など）に移ります。
   2. すべてのエントリーをチェックしてもマッチするエントリーが見つからなかった場合は、パケットを破棄して該当パケットの処理を完了します。このように、トラフィックフィルターの末尾には「すべてを破棄する」暗黙のエントリーが存在するので、フィルター作成時には注意が必要です。
3. 通常のパケット処理（自分宛てのパケットは上位層に引き渡し、自分宛てでないパケットは転送）を行います。

設定手順

IPv6フィルターの設定は、次の流れで行います。

1. フィルターの作成
   パケットのフィルタリング条件を指定し、マッチしたときのアクションを指定します。フィルターはADD IPV6 FILTERコマンド/SET IPV6 FILTERコマンドで作成・編集します。
2. インターフェースへの適用
   作成したフィルターをIPv6インターフェース（受信インターフェース）に適用します。フィルターを作成しただけではフィルタリングが行われないので注意してください。フィルターの適用はADD IPV6 INTERFACEコマンド/SET IPV6 INTERFACEコマンドで行います。
   IPインターフェースには、フィルターを1つだけ適用できます。1つのフィルターを複数のインターフェースに割り当ててもかまいません。

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

フィルタリング条件の指定

パケットをふるいわけるためのパラメーターとしては、以下のものがあります。

表 1：IPv6フィルターの条件パラメーター
パラメーター | 説明
SOURCE | 始点IPv6アドレス。アドレスの後にスラッシュに続けてプレフィックス長を指定することもできる。その場合はSPLENは必要ない。必須パラメーター
SPLEN | 始点プレフィックス長（0〜128）。SOURCEで指定したアドレスの先頭何ビットを比較対象とするかを指定する。SOURCEパラメーターにおいて、スラッシュ記法でプレフィックス長を指定した場合は不要。
DESTINATION | 終点IPv6アドレス。アドレスの後にスラッシュに続けてプレフィックス長を指定することもできる。その場合はDPLENは必要ない。
DPLEN | 終点プレフィックス長（0〜128）。DESTINATIONで指定したアドレスの先頭何ビットを比較対象とするかを指定する。DESTINATIONパラメーターにおいて、スラッシュ記法でプレフィックス長を指定した場合は不要。
PROTOCOL | IPv6の上位プロトコル
OPTIONS | IPv6パケットに拡張ヘッダーによるオプションが含まれるかどうか。
SIZE | フラグメント再構成後の最大データグラムサイズ
SPORT | 始点TCP/UDPポート
DPORT | 終点TCP/UDPポート
ICMPTYPE | ICMPv6メッセージタイプ
ICMPCODE | ICMPv6サブコード
SESSION | TCPセッションの方向。すべて、接続開始（Syn=1、Ack=0）、接続済み（Ack=1）から選択する。

以下、条件指定の部分だけの例を挙げます。
SOURCEパラメーター（始点アドレス）は必須です。任意の始点アドレスを対象とするときは、SOURCE=::/0（0:0:0:0:0:0:0:0/0の省略形）のように指定します。また、SOURCEに有効なアドレス（::/0以外）を指定するときは、アドレスの先頭何ビットを比較対象とするかを示すプレフィックス長（0〜128）を必ず指定してください。プレフィックス長は、スラッシュ記法を使ってSOURCEパラメーターで指定する方法と、SPLENパラメーターで別個に指定する方法があります。
■ ホスト3ffe:b80:3c:10::1からのIPv6パケット（スラッシュ記法）

`SOURCE=3ffe:b80:3c:10::1/128 ↓`

■ ホスト3ffe:b80:3c:10::1からのIPv6パケット（SPLENパラメーターを使用）

`SOURCE=3ffe:b80:3c:10::1 SPLEN=128 ↓`

■ ホスト3ffe:b80:3c:20::1宛てのIPv6パケット（スラッシュ記法）

`SOURCE=::/0 DESTINATION=3ffe:b80:3c:20::1/128 ↓`

■ ホスト3ffe:b80:3c:20::1宛てのIPv6パケット（DPLENパラメーターを使用）

`SOURCE=::/0 DESTINATION=3ffe:b80:3c:20::1 DPLEN=128 ↓`

> Note - DESTINATIONのプレフィックス長を省略したときは、128ビット（/128）プレフィックス（ホスト）と見なされます。

■ ネットワーク3ffe:b80:3c:10::/64からのパケット（スラッシュ記法）

`SOURCE=3ffe:b80:3c:10::/64 ↓`

■ ネットワーク3ffe:b80:3c:10::/64からのパケット（SPLENパラメーターを使用）

`SOURCE=3ffe:b80:3c:10:: SPLEN=64 ↓`

■ ネットワーク3ffe:b80:3c:20::/64宛てのパケット（スラッシュ記法）

`SOURCE=::/0 DESTINATION=3ffe:b80:3c:20::/64 ↓`

■ ネットワーク3ffe:b80:3c:20::/64宛てのパケット（DPLENパラメーターを使用）

`SOURCE=::/0 DESTINATION=3ffe:b80:3c:20:: DPLEN=64 ↓`

■ 先頭32ビットが「3ffe:b80」のアドレス宛てのパケット（スラッシュ記法）

`SOURCE=::/0 DESTINATION=3ffe:b80::/32 ↓`

■ 先頭32ビットが「3ffe:b80」のアドレス宛てのパケット（DPLENパラメーターを使用）

`SOURCE=::/0 DESTINATION=3ffe:b80:: DPLEN=32 ↓`

■ すべてのIPパケット

`SOURCE=:: ↓`

■ すべてのTCPパケット

`SOURCE=::/0 PROTOCOL=TCP ↓`

■ すべてのPing（ICMPv6 Echo Request）パケット

`SOURCE=::/0 PROTOCOL=ICMP ICMPTYPE=ECHORQ ICMPCODE=ANY ↓`

■ Webサーバー3ffe:b80:3c:10::5からの接続済みHTTPパケット

`SOURCE=3ffe:b80:3c:10::5/128 PROTOCOL=TCP SPORT=80 SESSION=ESTABLISHED ↓`

■ 3ffe:b80:3c:100::2宛てのPing（ICMPv6 Echo Request）パケット

`SOURCE=::/0 DESTINATION=3ffe:b80:3c:100::2/128 PROTOCOL=ICMP ICMPTYPE=ECHORQ ICMPCODE=ANY ↓`

アクションの指定

マッチ時の処理内容（アクション）は、ACTIONパラメーターで指定します。マッチしたパケットを許可するならINCLUDEを、破棄するならEXCLUDEを指定します。
トラフィックフィルターのエントリーリストの末尾には、「すべてを破棄」する暗黙のエントリーが存在しています。そのため、「デフォルト拒否」のフィルターを作成するときは、例外的に許可するエントリーだけを記述します。
一方、「デフォルト許可」のフィルターを作成するときは、拒否するトラフィックのルールを列挙した上で、リストの最後に「すべて許可」のエントリーを作成する必要があります。「すべて許可」のエントリーを作成しないと、暗黙の「すべて破棄」エントリーによってすべてのトラフィックが拒否されてしまいます。
以下、条件指定の例と処理内容の例を組み合わせた、完全なコマンド行の例を示します。
■ ネットワーク3ffe:b80:3c:20::/64からのパケットを破棄するトラフィックフィルターを作成する。

`ADD IPV6 FILTER=0 SOURCE=3ffe:b80:3c:20::/64 ACTION=EXCLUDE ↓`

■ Telnetトラフィックを許可する。

`ADD IPV6 FITLER=0 SOURCE=::/0 PROTOCOL=TCP DPORT=23 ACTION=INCLUDE ↓`

マッチしたパケットの記録

トラフィックフィルターでは、マッチしたパケットをログに記録するよう設定することもできます。これには、ADD IPV6 FILTERコマンドのLOGオプションを使います。LOGパラメーターを指定しなかった場合は、ログには記録されません。

表 2
値 | ログタイプ/サブタイプ | 記録される情報
NONE |  | 記録しない（デフォルト）。
4〜1950 | 「IPFIL/PASS」（INCLUDE時）、「IPFIL/FAIL」（EXCLUDE時） | フィルター番号、エントリー番号、IPv6ヘッダー情報（IPv6アドレス、プロトコル）
「IPFIL/DUMP」 | TCP/UDP/ICMPの場合はデータ部分の先頭4〜1950バイト。その他プロトコルの場合はIPv6データの先頭4〜1950バイト
DUMP | 「IPFIL/PASS」（INCLUDE時）、「IPFIL/FAIL」（EXCLUDE時） | フィルター番号、エントリー番号、IPv6ヘッダー情報（IPv6アドレス、プロトコル）
「IPFIL/DUMP」 | TCP/UDP/ICMPの場合はデータ部分の先頭32バイト。その他プロトコルの場合はIPv6データの先頭32バイト。「LOG=32」と指定した場合と同じ
HEADER | 「IPFIL/PASS」（INCLUDE時）、「IPFIL/FAIL」（EXCLUDE時） | フィルター番号、エントリー番号、IPv6ヘッダー情報（IPv6アドレス、プロトコル）

■ フィルター「0」のエントリー「1」（0/1）により破棄（Fail）。IPv6アドレスは始点が3ffe:b80:3c:10:290:99ff:fe42:f2で、終点が3ffe:b80:3c:20::2。プロトコルはICMP。ICMPタイプ128（Echo）、ICMPコード0。パケットサイズは548バイト。

    08 14:46:33 3 IPV6 IPFIL FAIL  0/1 Fail
                                   3ffe:0b80:003c:0010:0290:99ff:fe42:00f2>3ffe:0b8
                                   0:003c:0020::0002 ICMP 128/0 548

このログは次のフィルターエントリーにマッチしたときのものです。

`ADD IPV6 FILTER=0 SOURCE=::/0 PROTO=ICMP ICMPTYPE=ECHORQ ICMPCODE=ANY LOG=HEADER AC=EXCLUDE ↓
`

■ フィルター「0」のエントリー「2」（0/2）により拒否（Fail）。IPアドレスは始点が3ffe:b80:3c:10:290:99ff:fe42:f2で、終点が3ffe:b80:3c:20::1。プロトコルはTCP。始点ポート49220、終点ポート23（Telnet）。TCPセッションの開始（Syn）セグメント。パケットサイズは80バイト。

    08 14:49:36 3 IPV6 IPFIL FAIL  0/2 Fail
                                   3ffe:0b80:003c:0010:0290:99ff:fe42:00f2>3ffe:0b8
                                   0:003c:0020::0001 TCP 49220>23 Start 80

このログは次のフィルターエントリーにマッチしたときのものです。

`ADD IPV6 FILTER=0 SOURCE=::/0 PROTO=TCP DPORT=TELNET LOG=HEADER AC=EXCLUDE ↓
`

インターフェースへの適用

作成したフィルターは、対象パケットを受信するIPv6インターフェースに適用して初めて効果を発揮します。
インターフェースの作成と同時にフィルターを適用するにはADD IPV6 INTERFACEコマンドを、すでに存在するインターフェースにフィルターを割り当てるときはSET IPV6 INTERFACEコマンドを使います。フィルター番号はFILTERパラメーターで指定します。
IPv6インターフェースには、トラフィックフィルターを1つだけ適用できます。1つのフィルターを複数のインターフェースに割り当ててもかまいません。
■ トラフィックフィルター「0」をvlan-whiteに割り当て。

`SET IPV6 INT=vlan-white FILTER=0 ↓`

■ フィルターの適用をとりやめるには、フィルター番号の代わりにキーワードNONEを指定します。

`SET IPV6 INT=vlan-white FILTER=NONE ↓`

フィルターの削除

■ IPv6フィルターから特定のエントリーを削除するには、DELETE IPV6 FILTERコマンドを使います。エントリー番号は可変なので、削除時には必ずSHOW IPV6 FILTERコマンドで希望するエントリーの番号を調べてから指定してください。

`DELETE IPV6 FILTER=10 ENTRY=2 ↓`

> Note - エントリーを削除しても、他のエントリーの番号は変わりません。

■ フィルター内の全エントリーを削除するには、ALLを指定します。

`DELETE IPV6 FILTER=10 ENTRY=ALL ↓`

■ インターフェースに設定したフィルターの適用を取りやめるには、SET IPV6 INTERFACEコマンドのFILTERパラメーターにNONEを指定します。

`SET IPV6 INT=vlan-white FILTER=NONE ↓`

設定例

トラフィックフィルターは、受信IPv6インターフェースにおいて、ヘッダー情報に基づきパケットの破棄・通過を決定するフィルターです。トラフィックフィルターにはフィルター番号0〜99番を割り当てます。
■ 3ffe:b80:3c:20::feからのパケットだけをvlan-orangeインターフェースで拒否するには次のようにします。その他のIPトラフィックはすべて許可します。いわゆる「デフォルト許可」の設定になります。

`ADD IPV6 FILTER=0 SOURCE=3ffe:b80:3c:20::fe/128 ACTION=EXCLUDE ↓
ADD IPV6 FILTER=0 SOURCE=::/0 ACTION=INCLUDE ↓
SET IPV6 INT=vlan-orange FILTER=0 ↓
`

「デフォルト許可」の設定では、拒否するパターンだけを記述します（1行目）。ただし、トラフィックフィルターのエントリーリストの末尾には、「すべて破棄」を意味する暗黙のエントリーが存在しているため、拒否パターンの後に必ず「すべて許可」のエントリーを明示的に作成する必要があります（2行目）。拒否パターンだけを書くとすべてのトラフィックが拒否されてしまいますのでご注意ください。
なお、vlan-orange側に3ffe:b80:3c:20::/64しかネットワークがない場合は、2行目を次のように書いた方が不正なパケットを遮断できるのでより好ましいかもしれません。

`ADD IPV6 FILTER=0 SOURCE=3ffe:b80:3c:20::/64 ACTION=INCLUDE ↓`

3行目では、作成したフィルター「0」をIPv6インターフェースvlan-orangeに適用しています。フィルターはインターフェースに適用して初めて効果を持ちます。
■ フィルターにかかったパケットをログに記録するには、LOGパラメーターを使います。LOGパラメーターはエントリーごとに設定するものです。つまり、該当エントリーにマッチしたパケットがログに記録されます。トラフィックフィルター「0」の先頭エントリー（エントリー番号「0」）にマッチしたパケットをログに記録するには次のようにします。

`SET IPV6 FILTER=0 ENTRY=1 LOG=HEADER ↓`

■ vlan-orangeでは原則すべてのパケットを遮断し、3ffe:b80:3c:20::abcdから3ffe:b80:3c:10::5のTelnetサービスへのパケットだけを通過させるよう設定するには、次のようにします。いわゆる「デフォルト拒否」の設定です。

`ADD IPV6 FILT=1 SOURCE=3ffe:b80:3c:20::abcd/128 DEST=3ffe:b80:3c:10::5/128 PROTO=TCP DPORT=TELNET AC=INCLUDE ↓
SET IPV6 INT=vlan-orange FILTER=1 ↓
`

「デフォルト拒否」の設定では、許可するパターンだけを記述します。トラフィックフィルターのエントリーリスト末尾には、「すべて破棄」を意味する暗黙のエントリーが存在しているため、拒否パターンを明示的に書く必要はありません。明示的に許可しなかったトラフィックは何もしなくても破棄されます。
■ 2つのインターフェースの片側からのみTCPの通信を開始できるようにするには、SESSIONパラメーターを使います。ここでは、vlan-orange側（3ffe:b80:3c:20::/64）からのみTCPセッションを開始できるように設定します。vlan-white側（3ffe:b80:3c:10::/64）からのTCPパケットは、すでにセッションが開始されている場合（Ackフラグが立っているとき）に限って許可します。

`ADD IPV6 FILT=0 SO=3ffe:b80:3c:10::/64 PROTO=TCP SESS=ESTAB AC=INCLUDE ↓
SET IPV6 INT=vlan-white FILTER=0 ↓
ADD IPV6 FILT=1 SO=3ffe:b80:3c:20::/64 DES=3ffe:b80:3c:10::/64 PROTO=TCP SESS=ANY AC=INCLUDE ↓
SET IPV6 INT=vlan-orange FILTER=1 ↓
`

その他

■ IPv6フィルターはパラメーターが多く、コマンドが長くなりがちです。コマンドラインの入力文字数制限により入力できない場合は、コマンドの省略形を使って入力するか、コマンドを複数行に分割するなどして対処してください。詳細は「運用・管理」/「コマンドプロセッサー」をご覧ください。
■ コマンドパラメーターの詳細についてはコマンドリファレンス編をご覧ください。
■ IPv6フィルターの設定状況を確認するにはSHOW IPV6 FILTERコマンドを使います。

`SHOW IPV6 FILTER ↓`

■ どのIPv6インターフェースにどのフィルターが適用されているかを確認するにはSHOW IPV6 INTERFACEコマンドを使います。

`SHOW IPV6 INT ↓`

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

PN: J613-M0019-01 Rev.P