フィルタ型ルーティング

概要

フィルタ型ルーティングは、IPアドレス・プロトコル・ポート番号によって同一経路を複数のゲートウェイへ振り分けることができる機能です。これにより、複数プロバイダの同時接続などが可能となります。

設定例

例1.ホストによって接続先を変える場合

ip lan address 192.168.0.254/24
ip filter 1 pass 192.168.0.1 * * * *
ip filter 2 pass 192.168.0.2 * * * *
ip route default gateway pp 1 filter 1 gateway pp 2 filter 2
[解説]

送信元が192.168.0.1のパケットはPP1へ、192.168.0.2のパケットはPP2へ送信する。

[注意事項]

IPアドレスを固定するためにDHCPは使えない。
RTの持つDNSリカーシブサーバ機能は使えない。

例2.プロトコルによって接続先を変える場合

ip filter 1 pass * * tcp * smtp,pop3
ip filter 2 pass * * tcp * www
ip route default gateway pp 1 filter 1 gateway pp 2 filter 2 gateway pp 3
dns server select 1 pp 1 mx .
dns server select 2 pp 1 a mail-server.
dns server select 3 pp 1 a pop-server.
dns server select 4 pp 2 a www.server
dns server pp 3
[解説]

TCPのSMTPとPOP3宛のパケットはPP1へ、TCPのWWW宛のパケットはPP2へ、それ以外のパケットはPP3へ送信する。

[注意事項]

発呼の原因になるパケットはDNS問い合わせであると予想できるので、DNS問い合わせを適切な相手先に振る必要がある。

例3.拠点からVPN接続しているセンター経由でインターネット接続を行う場合

ip filter 1 pass * * udp * 500
ip filter 2 pass * * esp * *
ip route default gateway pp 1 filter 1 2 gateway tunnel 1

PP1:インターネット接続用
TUNNEL1:センターとのVPN接続用
[解説]

IPsecに必要なUDPポート500番とESPはインターネット経由で通信を行い、その他の通信はVPN接続したセンター経由で行う。

例4.プロトコルによって接続先を変えるが、現在接続中であればそれを優先する場合

ip route default gateway pp 1 hide gateway pp 2 hide gateway pp 3 hide
dns server select 1 pp 1 mx .
dns server select 2 pp 1 a mail-server.
dns server select 3 pp 1 a pop-server.
dns server select 4 pp 2 a www.server
dns server pp 3
[注意事項]
  • DNS問い合わせでないと発呼できないため、自動切断は行なわない方が無難。
  • DNS問い合わせを適切な相手先に振る必要がある。

例5.手動発呼で相手先を選択する場合

ip route default gateway pp 1 hide gateway pp 2 hide
[注意事項]
  • 手動発呼した相手先にdefaultが向く。
  • 自動発呼はできない。

コマンド仕様

ip routeコマンド

[コマンド形式]
ip route IPADDRESS[/MASKLEN] GATEWAY-LIST ip route delete IPADDRESS[/MASKLEN]
[パラメータ]
  • IPADDRESS[/MASKLEN] ... 宛先ネットワークアドレス
    MASKLENが省略された場合にはホスト経路(MASKLEN = 32)として扱う
  • GATEWAY-LIST ... ゲートウェイリスト、以下のような記述に従う
  • GATEWAY-LIST ::= GATEWAY-DESCRIPTOR
    | GATEWAY-DESCRIPTOR GATEWAY-LIST
    GATEWAY-DESCRIPTOR ::= gateway GATEWAY [filter FNUM] [metric METRIC] [hide]
    GATEWAY ::= IPADDESS
    | pp PP_NUM [dlci=DLCI_NUM]
    | pp anonymous name=NAME
    | tunnel TUNNEL_NUM
    • IPADDRESS ... IPアドレス
      出力インターフェイスは、各インターフェイスの自己IPアドレスとネットマスクやInARPの情報などから推測する
    • pp PP_NUM [dlci=DLCI_NUM] ... PPインターフェイス直接
      • PP_NUM ... PP番号、1〜30/100, 'leased', 'anonymous'
      • DLCI_NUM ... DLCI番号、PPインターフェイスがFRの場合
    • pp anonymous name=NAME ... 名前によるルーティング
      • NAME ... PAP/CHAPによる名前
    • tunnel TUNNEL_NUM ... トンネルインターフェイス直接
      • TUNNEL_NUM ... トンネル番号、機種毎の設定可能なトンネル数はここを参照
  • metric METRIC ... メトリックの指定
    • METRIC ... メトリック値、1〜15、省略時は1
  • hide ...出力インターフェイスがPPインターフェイスの場合にのみ有効なオプションで、回線がつながっている時だけ経路が有効となることを意味する
  • filter FNUM ... フィルタ型経路の指定、FNUMはフィルタ番号で空白で区切って複数指定できる
[説明]

IPの静的経路を設定する。

  • filterが指定されているGATEWAYが記述されている場合には、記述されている順にフィルタを適用していき、マッチしたゲートウェイが選択される。
  • マッチするゲートウェイが存在しない場合や、filterが指定されているゲートウェイが一つも記述されていない場合には、filterが指定されていないゲートウェイが選択される。
  • filterが指定されていないゲートウェイも存在しない場合には、その経路は存在しないものとして処理が継続される。
  • filterが指定されていないゲートウェイが複数記述された場合で、それらの経路を使うべき時にどちらを使うかは、ラウンドロビンにより決定される。
  • いずれの場合でも、hideが指定されているゲートウェイは回線がつながっている時だけ有効で、回線がつながっていない時には評価されない。

DNS問い合わせに応じたDNSサーバの選択

[コマンド形式]
dns server select ID SERVER [TYPE] QUERY [ORIGINAL-QUERIER]
dns server select ID pp PP_NUM [TYPE] QUERY [ORIGINAL-QUERIER]
dns server select delete ID
[パラメータ]
  • ID ... DNSサーバ選択テーブルの番号
  • SERVER ... DNSサーバのIPアドレス
  • PP_NUM ...IPCPにより接続相手から通知されるDNSサーバを使う場合の接続相手先番号
  • TYPE ... DNSレコードタイプ
    TYPEはa, ptr, mx, ns, cnameのいずれか。省略した場合には'a'として扱う
  • QUERY ... DNS問い合わせの内容で以下のいずれかとなる。
    • TYPEがa,mx,ns,cnameのいずれかの場合 ... QUERYはドメイン名を表す文字列
      ドメイン名は後方一致とする。例えば、"yamaha.co.jp"であれば、comm.yamaha.co.jp、rtpro.yamaha.co.jpなどにマッチする。
    • TYPEがptrの場合 ... QUERYはIPアドレス ( IP_ADDRESS[/MASKLEN] )
      MASKLENを省略すると指定したIPアドレスにだけマッチし、MASKLENが指定されている場合にはそのネットワークアドレスに含まれるすべてのIPアドレスにマッチする。
      DNS問い合わせに含まれる.in-addr.arpaドメインで記述されたFQDNをIPアドレスに変換してから比較される。
  • ORIGINAL-QUERIER ... DNS問い合わせ元のIPアドレスの範囲
    DNS問い合わせ元が指定したIPアドレスの範囲に含まれる場合のみ、DNSサーバが選択される。省略した場合はDNS問い合わせ元の制限は行なわれない
[説明]

DNSの問い合わせを行なうDNSサーバとして、DNS問い合わせの内容とDNSサーバとの組合せを複数登録しておき、実際のDNS問い合わせの内容に応じてその組合せから適切なDNSサーバを選択できるようにする。テーブルは若番順に検索され、DNS問い合わせの内容にQUERYがマッチしたらそのDNSサーバを用いてDNS問い合わせを解決しようとする。テーブルのそれ以降の検索は行われない。すべてのテーブルを検索してマッチするものがなかったら、dns serverコマンドで指定されたDNSサーバが用いられる。

静的DNSレコード

[コマンド形式]
ip host FQDN VALUE
ip host delete FQDN
dns static TYPE NAME VALUE
dns static delete TYPE NAME
[パラメータ]
  • TYPE ... 名前のタイプ、a, ptr, mx, ns, cname
  • NAME, VALUE ... DNSテーブルの中身、タイプによって意味は変わる
    • a: NAMEはFQDN、VALUEはIPアドレス
    • ptr: NAMEはIPアドレスもしくは.in-addr.arpa型のFQDN、VALUEはFQDN
    • mx,ns,cname: NAME、VALUEともにFQDN
[説明]

静的なDNSレコードを定義する。
ip host コマンドは、dns staticコマンドでaとptrを両方設定することの簡略型である。

[ノート]

問い合わせに対して返されるDNSレコードは以下のような特徴を持つ。

  • TTLフィールドには1がセットされる
  • Answerセクションに回答となるDNSレコードが1つセットされるだけで、Authority/AdditionalセクションにDNSレコードはセットされない
  • MXレコードのpreferrenceフィールドは0にセットされる

表示コマンド

[コマンド形式]
show ip host
show dns static
[パラメータ]

なし

[説明]

静的なDNSレコードを表示する。

ページトップへ戻る