パケット転送フィルター

$Date: 2011/09/28 07:46:00 $

1. 概要

パケット転送フィルターは、 ip filterコマンドで定義したフィルターとの比較にもとづいて、 パケットの転送先を決める機能です。 従来のフィルター型ルーティングと似ていますが、 次の2点が大きく異なります。

パケット転送フィルターの処理の位置づけは次のようになっています。

パケット転送フィルターの処理の流れ

パケット転送フィルターの処理は、ルーティングの処理の直前にあります。 受信したパケットのうち、 パケット転送フィルターで設定した条件に該当するものについては、 その設定にしたがって転送先のゲートウェイを決めます。 一方、該当する条件がないときには、 そのパケットはルーティングの処理にもとづいて、ゲートウェイを決めます。

2. 対応機種とファームウェアリビジョン

ヤマハRTシリーズでは、以下の機種およびファームウェアで、パケット転送フィルターをサポートしています。

機種 ファームウェア
RTX810 Rev.11.01.04以降
RTX1200 Rev.10.01.07以降
RTX3000 Rev.9.00.24以降
RTX1500 Rev.8.03.68以降
RTX1100 Rev.8.03.68以降
RT107e Rev.8.03.68以降

3. 設定例

例として、次のような方針でパケットを転送することを考えます。

まず、パケットの条件をip filterコマンドで定義します。

  ip filter 1001 pass 192.168.0.0/24 * udp * *
  ip filter 1002 pass 192.168.1.0/24 * * * *
  ip filter 1003 pass 192.168.2.0/24 * * * *

次に、ip forward filterコマンドで、 各条件に対応するゲートウェイを指定します。

  ip forward filter 100 1 gateway pp 1 filter 1001
  ip forward filter 100 2 gateway tunnel 1 filter 1002
  ip forward filter 100 3 gateway tunnel 2 filter 1003

100という番号はパケット転送フィルターの識別子で、 1〜3の番号は評価するときの順番をあらわしています。

最後に、パケット転送フィルターをインターフェースに対応づけます。

  ip lan1 forward filter 100

この例では、LAN1インターフェースで受信したパケットを処理します。

4. 詳細

4.1. パケット転送フィルターの設定

パケット転送フィルターを設定するコマンドの書式は次のようになっています。

ip forward filter ID ORDER gateway GATEWAY filter FILTER_ID ... [ keepalive KEEPALIVE_ID ]

IDパケット転送フィルターの識別子です。 同じインターフェースに対して、複数のパケット転送フィルターを設定するときには、 それらのすべてに対して、同じ番号を指定します。

ORDERは、評価の順番を示すものです。ルータは、 若い番号を持つ設定ほど先に評価します。典型的には、 次のようにいくつかのコマンドを順番に並べて設定します。

  ip forward filter 100 1 gateway tunnel 1 filter 11 12 13
  ip forward filter 100 2 gateway tunnel 2 filter 21 22 23
  ip forward filter 100 3 gateway tunnel 3 filter 31 32 33

FILTER_ID ...の部分は前に書いているものから順に評価します。 前から順に対応するip filterコマンドを調べ、 パケットの内容と合致すれば、 そのip filterコマンドの設定を採用します。 ip filterコマンドの動作がrejectであれば、 パケットを転送せずに破棄し、そうでなければ、 GATEWAYパラメータで指定されたゲートウェイにパケットを転送します。

KEEPALIVE_IDには、ip keepaliveコマンドの識別子を指定します。 ここで指定されたIPキープアライブの結果がdownであれば、そもそも、 このゲートウェイを使用しません。すなわち、 このコマンド自体を無視することになります。たとえば、次のような設定では、 100番のIPキープアライブがupしているときの転送先はPP 1であり、 downしているときの転送先はPP 2になります。

  ip filter 1000 pass * * tcp * *
  ip forward filter 100 1 gateway pp 1 filter 1000 keepalive 100
  ip forward filter 100 2 gateway pp 2 filter 1000

ip forward filterコマンドを設定したら、次に、 ip INTERFACE forward filterコマンドで、 動作させるインターフェースを指定します。 このコマンドの書式は次のようになっています。

ip INTERFACE forward filter ID

パラメータIDとして、パケット転送フィルターの識別子を指定します。 自分が送信するパケットに適用するときには、 INTERFACEにはlocalを指定します。

4.2. 動作を確認する方法

syslog noticeコマンドでonを設定し、 ip filterコマンドでpass-log、reject-log、rejectを指定すれば、 そのフィルタに合致したパケットの転送結果をSyslogに出力できます。 出力するメッセージのフォーマットは、 次のようになっています。

Forward Filter IN_IF, ORDER, FILTER_ID GATEWAY PACKET_INFO

※ ip filterコマンドのSyslogで出力する内容に準じます。

4.3. 制限事項

パケット転送フィルターには、次の制限事項があります。

5. コマンド

5.1. パケット転送フィルターの定義

[書式]
ip forward filter ID ORDER gateway GATEWAY filter FILTER_ID ... [ keepalive KEEPALIVE_ID ]
no ip forward filter ID ORDER [ gateway GATEWAY [ filter FILTER_ID ... ] [ keepalive KEEPALIVE_ID ] ]
[設定値]
ID ... パケット転送フィルターの識別子 (1 .. 255)
ORDER ... 評価の順番 (1 .. 255)
GATEWAY ... 転送先のゲートウェイ
  • IPアドレス
  • pp 番号 ... PPインターフェース
  • tunnel 番号 ... TUNNELインターフェース
FILTER_ID ... ip filterコマンドの識別子
KEEPALIVE_ID ... ip keepaliveコマンドの識別子
[説明]
パケット転送フィルターを定義する。
IDパラメータは、 複数のパケット転送フィルターをグループ化するための識別子である。 同じインターフェースに対して 複数のパケット転送フィルターを設定するときには、 それらのすべてに対して、同じ番号を指定しなければならない。
ORDERパラメータは、評価の順番を示すもので、 若い番号を持つものほど優先的に採用される。
FILTER_IDパラメータとしては、 ip filterコマンドの識別子を最大16個まで指定できる。 複数の識別子を指定したときには、前にあるものが優先的に評価される。 前から順に対応するip filterコマンドを調べ、 パケットの内容と合致すれば、 そのip filterコマンドの設定を採用する。 ip filterコマンドの動作がrejectであれば、 パケットを転送せずに破棄し、そうでなければ、 GATEWAYパラメータで指定したゲートウェイにパケットを転送する。
KEEPALIVE_IDには、ip keepaliveコマンドの識別子を指定する。 ここで指定したIPキープアライブの結果がdownであれば、 このゲートウェイを使用しない。つまり、 該当するip filterコマンドがあったとしても、 該当しなかったものとして扱う。
なお、実際に動作させるためには、 ip INTERFACE forward filterコマンドも設定する必要がある。
[初期値]
設定されない

5.2. インターフェースへのパケット転送フィルターの適用

[書式]
ip INTERFACE forward filter ID
no ip INTERFACE forward filter [ ID ]
[設定値]
INTERFACE ... インターフェース
  • LANインタフェース(lan1、lan2、..)
  • pp ... PPインターフェース
  • tunnel ... TUNNELインターフェース
  • local ... 自分自身が送信するパケットを対象にするときに指定する
ID ... ip forward filterコマンドで指定した パケット転送フィルターの識別子 (1..255)
[説明]
インターフェースにパケット転送フィルターを適用する。 指定したインターフェースで受信したパケットを、 指定したパケット転送フィルターの設定と比較し、 転送先のゲートウェイを決定する。
[初期値]
設定されない