重村法克です。 multiple routing tables ということで出てきました。散々調べたのに全然 記録残してなかったとは…。 orz
On Tue, 02 Sep 2008 15:33:14 +0900 NAKAJI Hiroyuki <[メールアドレス保護]> wrote: > というのを見つけました。カーネルを再構築してから setfib コマンドを使うと、 > 今回のような「同一destinationになるような別経路」の設定が可能になるそうで > す。 同一の destination になるような別経路というのは, 例えばディフォルトゲー トウェイを複数持てるみたいな使い方です(単一⇒複数のルーティングテーブル の導入)。マルチホーム運用したい場合の技ですね。setfib コマンドで実行され るコマンド(とその子供)がどのルーティングテーブルを使用するか指定できます。 >mpdでどうすればいいのかという議論もありました。 >http://lists.freebsd.org/pipermail/freebsd-net/2008-June/018624.html なお source はユニークである必要があるので, 中治さんの問題には対応でき ません(arp レベルでは全てのルーティングテーブルで共有される)。この例に 出てる質問はまさにそこでひっかかってますね。解答は明後日の方向に向かっ てる気がしますが(^^;。 mpd なら setfib -1 mpd; setfib -2 mpd みたいな実行の仕方で ng0, ng1 で別々にディフォルトゲートウェイを設定することができます(どう使うかは議論 の余地がありますが:-)。もっともここ罠があって, ng0 を経由した場合全ての パケットは経路1, ng1 だと全てのパケットは経路2を通るという意味ではありま せん:-)。あくまでもアプリケーション単位での設定となります(さらに正確に言 うとソケット単位)。これは ng0, ng1 を経由で通信するアプリケーションが mpd の直系の子孫ではないからです(必ずしも…ですが)。 例えば Apache 一個立ち上げて, インターフェース毎にマルチホームしたいよう な運用の場合 ipfw でインターフェース毎に fib (Forward Information Base)を指定する必要があります。さもなければ setfib -1 httpd -c conf1; setfib -2 httpd -c conf2 として Listen 等の設定を変えた複数の Apache を立ち上げる必要があります。 ちなみに setsockopt(2) の SO_SETFIB オプションで, ソケット毎にルーテ ィングテーブルを指定できます。今のところ, そんな器用なアプリケーションは ありませんが。。 以上よろしくお願いいたします。