サービス無停止のプロバイダ切り替え方法について。

先日、So-netからさくらインターネットへ我が家のサーバを切り替える際に、IPアドレスを変更するためDNS参照がうまくできるような構成にし、webサービスなどを停止せずに、旧IPアドレス→新IPアドレスへ切り替える方法について書いてみます。

今回は、固定IP1の方法についてです。

pp1を旧プロバイダ、pp2を新プロバイダとし、以下のような構成でネットワークを構築します。


[マルチホーミング的なネットワーク構成]

YAMAHA RT57iの設定

ip route default gateway pp 1 filter 501050 gateway pp 2 filter 501051 gateway pp 2

ip filter 501050 pass 192.168.11.2 * * * *

ip filter 501051 pass 192.168.11.3 * * * *

pp select 1

pp name PRV/1/1/3/0/0/0:old-provider

........

ip pp nat descriptor 1000

pp enable 1

pp select 2

pp name PRV/2/1/3/0/0/0:new-provider

........

ip pp nat descriptor 1100

pp enable 2

nat descriptor type 1000 masquerade

nat descriptor masquerade static 1000 1 192.168.11.2 tcp www

nat descriptor type 1100 masquerade

nat descriptor masquerade static 1100 1 192.168.11.3 tcp www

※pp1宛のwebを192.168.11.2へ、pp2宛のwebを192.168.11.3へパケットがれ転送されるよう、NATディスクリプタとルーティングフィルタを作成します。

Webサーバ(FreeBSD6.0R)の設定
kenti.jp > ifconfig
vge0: flags=8843<up,broadcast,running,simplex,multicast> mtu 1500
        options=1b<rxcsum,txcsum,vlan_mtu,vlan_hwtagging>
        inet6 fe80::---:----:----:---%vge0 prefixlen 64 scopeid 0x1
        inet 192.168.11.2 netmask 0xffffff00 broadcast 192.168.11.255
        inet 192.168.11.3 netmask 0xffffffff broadcast 192.168.11.3
        ether 00:--:--:--:--:--
        media: Ethernet autoselect (1000baseTX )
        status: active
lo0: flags=8049<up,loopback,running,multicast> mtu 16384
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
</up,loopback,running,multicast></rxcsum,txcsum,vlan_mtu,vlan_hwtagging></up,broadcast,running,simplex,multicast>
※192.168.11.3をaliasとして割り当てます。

こうすることで、pp1宛に来た要求は192.168.11.2のwebへ、pp2宛に来た要求は192.168.11.3へ行くので、結果同じサーバを参照することになります。

そんなわけで、IPを切り替えている間もDNSの変更時間に関係なく、また無停止で移行ができます。