忘備録:RTXのマルチセッション環境で、ポリシールーティングの設定メモ


やりたいこと:
ISP1とISP2に同時に接続し、特定の端末だけISP2を利用し
それ以外のデフォルトゲートウェイをISP1にする

参考:
http://netvolante.jp/solution/int/case11.html

他にも設定入れてるけど、大事なところだけ
設定例を元にいらないところを削っていったら、スリムになったお

ip lan1 forward filter 100
pp select 1
~(省略)~
ip pp nat descriptor 1
pp enable 1
pp select 2
~(省略)~
ip pp nat descriptor 2
pp enable 2
ip filter 101 pass-log 172.16.11.14 * * * *
ip filter 102 pass-log 172.16.11.1-172.16.11.254 * * * *
ip forward filter 100 1 gateway pp 2 filter 101
ip forward filter 100 2 gateway pp 1 filter 102
nat descriptor type 1 masquerade
nat descriptor type 2 masquerade

いわゆるポリシールーティングってやつですな。
発信元IPアドレスでルートを切り替えます。
IP以外にもプロトコルやPortでルートを設定出来る。
本来なら帰り(もしくは行き)のパケットも宛先を設定しないと行方不明になるのだが
RTXさんは適切に処理してくれるので楽ちんです。

んで、YamahaのRTXはip filterとip forward filterでそれを実現している。
ip filterのレンジがかぶっているが、RTXのフィルタリングポリシーはファーストマッチ(※)なので
ip forward filter 100 1が優先される。これに一致しなかったら次へ、という感じ。
どこにも一致しない物は破棄されます。
nat descriptorは両方のppで共有することが出来るが、
ポートのフォワーディングなどの都合があるはずなので分けた方が好ましいと思われ。
IFごとに入れるip filterで開くポートを選べば別にいいとは思うんだけどね。

default gatewayはip forward filterが適切に設定されていれば不要(defaultGWの代わりに動作する)。
仕組みを考えれば当然なんですが、後から気がついた( ̄∇ ̄;)

※余談ですが、BSDのpfなんかはデフォルトがラストマッチで、(pass or block) quick on ~を付けた行だけファーストマッチになります。

上の参考ページには、詳しく説明されてないけど、どちらか片方が落ちたときに
そのルートを無効にしてもう片方に転送する仕組みが入っています。いわゆる冗長化ってやつです。
keepaliveに関する設定のところですね。片系が落ちたとき(ICMPの返事が返ってこないとき)にそのルートを無効にして、
生きてる方で通信します。ルートの処理はRTX本体が適切に処理します。
うまく使いこなせればうまうまなのですが、おらの場合は諸般の事情で設定してまへん。

余談をもう一つ
RTXシリーズの大変良いところは何も考えずにヘアピンNATが使えるところ
ヘアピンNATというのは、LAN内からのアクセスだが、
外から来るパケットと同じようなNAT処理をしてLAN内のマシンに返すという物

下記のような環境があるとして
WAN:1.1.1.1
Router:192.168.1.1 (NAT 1.1.1.1:80 to 192.168.1.2:80)
Server:192.168.1.2 port 80
Client:192.168.1.3

Clientから1.1.1.1:80のアドレス:portを指定した時、Serverにきちんと転送されるのがヘアピンNAT
NATの処理で折り返されるので、NATループバックと呼ぶ人もいるようです。
RFC 4787にて定義されています。
DNSで似たような効果を得ることは出来ますが、
複数のサーバに一個のIPアドレスをPortで振り分けてると無理ゲーとなります。
そんなわけなのでRTXヽ(´ー`)ノマンセーと叫びたい。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>