[index] CentreCOM AR550S コマンドリファレンス 2.9

# IPv6/IPv6フィルター

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

IPv6フィルターは、送受信インターフェースにおいてIPv6パケットのフィルタリングを行う機能です。
ここでのフィルタリングとは、IPv6および上位プロトコルヘッダーの情報に基づいてパケットをふるいわけ、一定の条件を満たしたパケットに対して何らかの処理を行うことを意味します。
IPv6フィルターの機能は、ふるいわけ後の処理内容によって次の2つに分類できます。

表 1
種類 | フィルター番号 | 機能
トラフィックフィルター | 0〜99 | 受信パケットのヘッダー情報に基づき、パケットを破棄または許可する。不正アクセスを防ぐなど、おもにセキュリティーを高めるために使用する
プライオリティーフィルター | 200〜299 | 送信パケットのヘッダー情報に基づき、出力時の絶対優先度を設定する。特定のアプリケーショントラフィックを最優先で出力するような設定ができる（プライオリティールーティング）

> Note - 経路制御用のポリシーフィルター（100〜199）は、現在IPv6フィルターでは使用できません。

基本動作

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

フィルターの構成

IPv6フィルターは、複数のフィルターエントリーで構成されるリストです。各フィルターはフィルター番号で、フィルター内の各エントリーはエントリー番号で識別します。
また、フィルター番号はフィルターの種類（トラフィックフィルター、プライオリティーフィルター）によって使用できる範囲が決まっています。
個々のフィルターエントリーでは、パケットをふるいわけるための条件と、マッチ時のアクションを指定します。アクションはフィルターの種類によって異なります。

作成可能なフィルター数は次のとおりです。

- トラフィックフィルター100個（フィルター番号0〜99）
- プライオリティーフィルター100個（フィルター番号200〜299）

各フィルターに追加できるエントリー数（エントリー番号1〜）は空きメモリー容量により変化します。
作成したフィルターは、IPv6インターフェースに適用して初めて効果を発揮します。フィルターの条件チェック（ふるいわけ）は、トラフィックフィルターは受信インターフェース、プライオリティーフィルターは送信インターフェースで行われます。
一方、フィルターの効果は、トラフィックフィルターでは受信直後（破棄・許可）、プライオリティーフィルターでは出力時（優先度の高いものから出力）に現れます。
IPv6インターフェースには、トラフィックフィルター、プライオリティーフィルターをそれぞれ1つずつ適用できます。同じフィルターを複数のインターフェースに割り当ててもかまいません。

フィルター処理の流れ

#### 概要

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

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

トラフィックフィルターとプライオリティーフィルターは2の処理内容が異なるだけであり、パケットを選別するプロセスは共通です。

#### 詳細

IPv6フィルターの詳細な処理順序について説明します。
ルーターの基本動作をパケット受信、経路選択（転送先決定）、送信の3ステップに分けた場合、トラフィックフィルターのチェックはパケット受信時、プライオリティーフィルターのチェックはパケット送信時に行われます。

1. IPv6パケットを受信すると、受信インターフェースにトラフィックフィルターが適用されているかどうかを調べます。
2. 受信インターフェースにトラフィックフィルターが適用されている場合、フィルター内の各エントリーをエントリー番号の若い順にチェックし、受信パケットのヘッダー情報と一致するものがあるかどうかを調べていきます。
   受信インターフェースにトラフィックフィルターが適用されていない場合は、受信インターフェースにおけるIPv6フィルター処理を完了し、通常のパケット処理（転送先決定など）に移ります。
   1. マッチするエントリーが見つかった場合は、該当エントリーのACTIONパラメーターで指定されている処理（アクション）を実行します。トラフィックフィルターでは、最初にマッチしたエントリーが適用されます。
      - EXCLUDE（破棄）の場合はパケットを破棄し、該当パケットの処理を完了します。
      - INCLUDE（許可）の場合は受信インターフェースにおけるIPv6フィルター処理を完了し、通常のパケット処理（転送先決定など）に移ります。
   2. すべてのエントリーをチェックしてもマッチするエントリーが見つからなかった場合は、パケットを破棄して該当パケットの処理を完了します。このように、トラフィックフィルターの末尾には「すべてを破棄する」暗黙のエントリーが存在するので、フィルター作成時には注意が必要です。
3. パケットの最終宛先がルーター自身でない場合、経路表を検索して転送先（送信インターフェースとネクストホップアドレス）を決定します。転送先が決定すると、パケット送信のための処理に移ります。
4. 送信インターフェースにプライオリティーフィルターが適用されている場合、フィルター内の各エントリーをエントリー番号の若い順にチェックし、受信パケットのヘッダー情報と一致するものがあるかどうかを調べていきます。
   送信インターフェースにプライオリティーフィルターが適用されていない場合は、通常の優先度でパケットを出力し、IPv6層の出力処理を完了します。
   1. マッチするエントリーが見つかった場合は、該当エントリーのPRIORITYパラメーターで指定されている優先度をパケットに割り当てます。パケットの出力は、つねに優先度の高いパケットから順に行われます。より高い優先度を持つパケットがある場合、下位のパケットは送信されません。これにより、特定のパケット（たとえばUDPのビデオストリーム）を最優先で送信するような設定が可能です。プライオリティーフィルターでは、最初にマッチしたエントリーが適用されます。
   2. すべてのエントリーをチェックしてもマッチするエントリーが見つからなかった場合は、送信インターフェースにおけるIPv6フィルター処理を完了し、通常の優先度でパケットを出力します。

設定手順

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

1. フィルターの作成
   パケットのフィルタリング条件を指定し、マッチしたときのアクション（トラフィックフィルター）、優先度（プライオリティーフィルター）を指定します。フィルターはADD IPV6 FILTERコマンド/SET IPV6 FILTERコマンドで作成・編集します。
2. インターフェースへの適用
   作成したフィルターをIPv6インターフェースに適用します。フィルターを作成しただけではフィルタリングが行われないので注意してください。フィルターの条件チェック（ふるいわけ）は、トラフィックフィルターは受信インターフェース、プライオリティーフィルターは送信インターフェースで行われます。一方、フィルターの効果がいつ現れるかはフィルターの種類によって異なります。フィルターの適用はADD IPV6 INTERFACEコマンド/SET IPV6 INTERFACEコマンドで行います。
   IPインターフェースには、トラフィックフィルターとプライオリティーフィルターをそれぞれ1つずつ適用できます。1つのフィルターを複数のインターフェースに割り当ててもかまいません。

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

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

パケットをふるいわけるためのパラメーターとしては、以下のものがあります。これらはフィルターの種類に関係なく共通です。

表 2：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 ↓`

処理内容の指定

処理内容の指定方法は、フィルターの種類によって異なります。

表 3：IPv6フィルターの処理内容パラメーター
フィルターの種類 | パラメーター | 指定内容
トラフィックフィルター（0〜99） | ACTION | EXCLUDE（パケットを破棄する）かINCLUDE（通過させる）を選択する。トラフィックフィルターは、エントリーリストの末尾に「すべてを破棄」する暗黙のエントリーが存在するので、「デフォルト拒否」のフィルターを作成するときは、例外的に許可するルールだけを記述すればよい。一方、「デフォルト許可」のフィルターを作成するときは、拒否するトラフィックのルールを列挙した上で、リストの最後に「すべて許可」のルールを必ず作成すること。そうでないと、暗黙の「すべて破棄」ルールによってすべてのトラフィックが拒否されてしまう。トラフィックフィルターは受信インターフェースで条件のチェックが行われ、マッチした場合はただちにアクションが実行される
プライオリティーフィルター（200〜299） | PRIORITY | パケット送信時の絶対優先度をP0（最高）〜P7（最低）で指定する。パケットの送信は、つねに優先度の高いパケットから順に行われる。上位のパケットがある限り、下位のパケットは送信されない。プライオリティーフィルターは送信インターフェースで条件のチェックが行われ、マッチした場合はフィルターが設定した優先度に基づいてパケット送信順序が決められる

以下、条件指定の例と処理内容の例を組み合わせた、完全なコマンド行の例を示します。
■ ネットワーク3ffe:b80:3c:20::/64からのパケットを破棄するトラフィックフィルターを作成する。

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

■ Telnetトラフィックを最優先で転送する。

`ADD IPV6 FITLER=200 SOURCE=::/0 PROTOCOL=TCP DPORT=23 PRIORITY=P0 ↓`

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

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

表 4
値 | ログタイプ/サブタイプ | 記録される情報
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インターフェースに適用して初めて効果を発揮します。トラフィックフィルターは受信インターフェースに、プライオリティーフィルターは送信インターフェースに適用してください。すでに存在するインターフェースにフィルターを割り当てるときはSET IPV6 INTERFACEコマンドを使います。
IPv6インターフェースには、トラフィックフィルターとプライオリティーフィルターをそれぞれ1つずつ適用できます。1つのフィルターを複数のインターフェースに割り当ててもかまいません。
■ トラフィックフィルター「0」をvlan1に割り当て。

`SET IPV6 INT=vlan1 FILTER=0 ↓`

■ プライオリティーフィルター「200」をvlan1に割り当て。

`SET IPV6 INT=vlan1 PRIORITYFILTER=200 ↓`

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

`SET IPV6 INT=vlan1 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、PRIORITYFILTERパラメーターにNONEを指定します。

`SET IPV6 INT=vlan1 FILTER=NONE ↓`

トラフィックフィルターの設定例

トラフィックフィルターは、受信IPv6インターフェースにおいて、ヘッダー情報に基づきパケットの破棄・通過を決定するフィルターです。トラフィックフィルターにはフィルター番号0〜99番を割り当てます。
■ 3ffe:b80:3c:20::feからのパケットだけをvlan1インターフェースで拒否するには次のようにします。その他の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=vlan1 FILTER=0 ↓
`

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

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

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

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

■ vlan1では原則すべてのパケットを遮断し、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=vlan1 FILTER=1 ↓
`

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

プライオリティーフィルターの設定例

プライオリティーフィルターは、送信パケットのヘッダー情報に基づき、パケット送信時の絶対優先度を設定するフィルターです。特定のトラフィックを最優先で送信するよう設定できます。プライオリティーフィルターには、フィルター番号200〜299番を割り当てます。
■ ネットワーク3ffe:b80:3c:20::/64側のSSHクライアントとSSHサーバー（3ffe:b80:3c:10::5）の間のトラフィックを最優先（P0）で送信し、その他のIPv6トラフィックは最低の優先度（P7）で送信するプライオリティーフィルターを設定するには次のようにします。

`ADD IPV6 FILT=200 SO=3ffe:b80:3c:20::/64 DEST=3ffe:b80:3c:10::5/128 PROTO=TCP DPORT=22 PRIORITY=P0 ↓
ADD IPV6 FILT=200 SO=3ffe:b80:3c:20::/64 PROTO=ANY PRIORITY=P7 ↓
SET IPV6 INT=ppp0 PRIORITYFILTER=200 ↓
`

その他

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

`SHOW IPV6 FILTER ↓`

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

`SHOW IPV6 INT ↓`

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

PN: J613-M0710-03 Rev.H