$Id: poormansmultihome.html,v 1.4 2008-08-08 02:42:20+09 taka Exp $

貧乏マルチホーム

1台のウェブサーバの処理能力があまっているのに、回線のほうが飽和してしまった場合で、 まったく違う系統の回線が用意できる場合、全体としてその回線帯域を追加する方法。

  1. ウェブサーバのOSはポリシールーティングが出来るものにする。ソースアドレスをみてネクストホップルータを規定できる必要がある
  2. 回線を複数用意する。そこにつながった逆NATの出来るNAT箱を回線の数だけ用意する。NATセッション数は潤沢に処理できるものとすること。ここでは回線1につながったNATbox1, 回線2につながったNATbox2 とする
  3. ウェブサーバはプライベートアドレスセグメントに置く。
  4. NAT箱のプライベート側は同じネットワークにしてもよいし分けてもよい。ここでは同じネットワークとする。NATbox1 は x.y.z.100, NATbox2 は x.y.z.200 とする。
  5. ウェブサーバにIPアドレスを複数ふる。x.y.z.101, x.y.z.202 をつける
  6. ウェブサーバのウェブデーモンは x.y.z.101, x.y.z.202 の両方を port 80 で listen させる
  7. NATbox1 は x.y.z.101:80 を逆NAT(NAPT)してグローバルインターネット側に射影する。NATbox2 は x.y.z.202:80 を逆NAT(NAPT)インターネット側に射影する。
  8. ウェブサーバのOSのポリシールーティング機能のマップに、ソースアドレス x.y.z.101 のパケットの next hop は x.y.z.100, ソースアドレスx.y.z.202 のパケットの next hop は x.y.z.200 と書く。

1. と 8. が肝

ウェブサーバのウェブデーモンにアクセスしてくるパケットは必ず外側からセッションが始まり、ウェブサーバ側からセッションが始まることは無い。 ディスティネーションIPアドレスとして使われるIPアドレスを回線ごとに変えてやれば ウェブブラウザからウェブデーモン行きにのパケットに対する ウェブデーモンからウェブラウザに向けた帰り(応答)のパケットの ソースIPアドレスが回線ごとに変わるので、 あとはポリシールーティングでパケットの投げ先を各回線のNATboxに向けてやればよい。

これら外界から複数台に見えるウェブサーバへのアクセスをどのように回線分散させるかはまた別問題であるが、 現代的ウェブブラウザの挙動からすると DNS ラウンドロビンで良いように思える。

元ネタ

以下を参考とさせていただきました(というよりそのまんま)

2ちゃんねる 通信技術板 YAMAHA業務向けルータ運用構築スレッドPart5

    585 ヤマ八 [sage] Date:2008/07/07(月) 19:14:09 ID:??? Be:
    あるネットワーク(DMZ)に幾つかの公開サーバーがあります。

    このネットワークに2台のルーターがあって、
    それぞれ別のプロバイダにネットワーク型の固定IPで契約しています。
    どちらのルータもグローバルアドレスをNATでプライベートアドレスに変換しています。

    どちらからのルータ経由でも外部からアクセスできるようにしたいのですが、
    実際にはサーバーで DefaultGateway に設定した方のルータからのアクセスにしか応答できません。

    こういうのって、ルータもしくはサーバーの設定で(ソフト的に)解決できる問題なんでしょうか?

    586 net [] Date:2008/07/07(月) 19:51:57 ID:vTTKmeSs Be:
    各サーバにIPアドレスを2つずつ付けてやって、回線毎にNAT変換する先のアドレスを
    分けてやればいい。
    そうすれば戻りにポリシールーティングが使える。

    これで2回線でのサーバ公開をした事がある。

問題?

IPアドレスベースでセッション維持させると破綻する・・・ような気がする?

ツッコミ

ポリシールーティング云々等大仰なことせずとも、3つ脚で逆NATを柔軟に書けるNAT箱があればいいだけかも?

もちろんリバースプロキシ2台、ウェブサーバ1台で実現するのもありだが、上記記述は ホスト1台+安い回線*2で実現可能であるところがメリット。


WelcomePage
taka at magic.uinet.or.jp