« Forth の備忘録 | メイン | FreeBSD の apache の log rotate. »

FreeBSD7.1 で rounting....

FreeBSD でマルチホームを作る場合に 7.1 から大幅に変わったのでご注意を。。。

以下の部分は
http://www.allbsd.org/~hrs/diary/200901.html
からの引用であるので、詳細はURLを参照して欲しい。


==========
以下引用
==========
7.1R 新機能その一。複数のルーティングテーブルのサポート。 使い方はこんな感じ。

GENERIC カーネルでは、(普通の方法では) 有効にできないようになっているので、 まずはカーネルを再構築しましょう。再構築する前に、 次のオプションを追加します。

options ROUTETABLES=2

この数字はルーティングテーブルの数を表します。 今のところ 16 個まで設定可能。再構築の手順等は、 ハンドブックを読んでください。

ルーティングテーブルと呼ぶのは長ったらしいので、ここからは もうちょっと抽象的な呼称である FIB と呼びます。

FIB には、0 番、1 番のように、順番に番号が付けられています。また、 FIB は、プロセス単位で割り当てることが可能です。割り当てるには setfib(1) というコマンドを使います。こんな感じ。

# setfib -3 ping target.example.com

この場合、ping には FIB 3 番が割り当てられます。

それぞれの FIB に経路を設定するには、"setfib 1 route..." のように、 route コマンドを setfib と組み合わせて使うわけです。

で、7.1R 以降における「FIB がひとつしかない状態」は、 「常に FIB 0 番を使い続けていること」と同じになります。 カーネルオプションを追加しないと FIB は複数にならないものの、 カーネルの内部処理としては、 「ひとつ」は「複数」の特別な場合にすぎません。

FIB が複数ある場合、次のようなルールで選択されます。

*

FIB が設定されているパケットは、その FIB が使われます。 設定されていなければ、FIB 0 番が使われます。
*

外部から到着して、IP フォワーディングの対象となるパケットには、 FIB 0 番が使われます。
*

あるプロセスが listen している TCP ソケットがあり、 そのプロセスに FIB が割り当てられていると、 accept したソケットにも同じ FIB に割り当てられます。
*

TCP 以外で FIB が割り当てられているパケットの場合、 そのパケットに対する応答パケットは、同じ FIB が割り当てられます。
*

gif(4) や tun(4) などのトンネルインタフェースで 生成されるカプセル化されたパケットは、 そのインタフェースを作ったプロセスの FIB が割り当てられます。 (つまり setfib 1 ifconfig gif create のように設定できる)
*

ルーティングメッセージは、 そのメッセージを生成したプロセスの FIB が割り当てられます。

とりあえず FIB を複数用意して、"setfib 1 netstat -nr" のように実行してみると、感じがつかめると思います。 適当に経路を追加・削除しても、 0 番をいじくらなければ、基本的に影響はありません。

FIB の数は、カーネルオプションの他、loader tunable でも変更できます。 主なものは次のとおり。

*

net.fibs: FIB の数。16 個まで指定可能。
*

net.my_fibnum: デフォルト FIB の番号。 何も指定しなければ 0 になる。今までの記述で「0 番」と表現していたものは、 この番号を変えると変わる。
*

net.add_addr_allfibs: デフォルト FIB 以外の FIB 全部に、 インタフェースの経路を自動的に追加するかどうか。 何も指定しなければ 1 になっている。0 にすると、 明示的に経路を追加しないと 0 番以外には経路が追加されなくなる。

また、FIB は IPFW でも設定できます。allow の代わりに setfib というアクションルールを指定します。たとえば

# ipfw add 1000 setfib 番号 from any to any

とすると、この条件にマッチするパケットが指定された番号の FIB に割り当てられます。そしてルールの処理は、マッチしようがしまいが、 そのまま直後のルールに続きます。

==================================
以上
http://www.allbsd.org/~hrs/diary/200901.html
から引用


トラックバック

このエントリーのトラックバックURL:
http://www.green.miki.hyogo.jp/~hiro/mt/mt-tb.cgi/105

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年04月07日 16:41に投稿されたエントリーのページです。

ひとつ前の投稿は「Forth の備忘録」です。

次の投稿は「FreeBSD の apache の log rotate.」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。