パケット転送フィルター

$Date: 2023/07/06 20:22:18 $

1. 概要

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

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

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

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

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

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

機種 ファームウェア
vRX VMware ESXi版 すべてのリビジョン
vRX Amazon EC2版
RTX3510
RTX1300
RTX1220
RTX830
NVR700W
RTX1210
RTX5000
RTX3500
FWX120
RTX810
RTX1200
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)
[説明]
インターフェースにパケット転送フィルターを適用する。 指定したインターフェースで受信したパケットを、 指定したパケット転送フィルターの設定と比較し、 転送先のゲートウェイを決定する。
[初期値]
設定されない