先日のネットワーク構成はやっぱりデメリットがデカイ。
- サーバを再起動したらしばらくインターネットからウェブサーバが見えなくなる
サーバを再起動するとPPPoEが切れるのでGlobal IPアドレスが変わってしまう。DNSが更新されて新しいアドレスが伝搬されるまでの間、インターネットからウェブページが見えなくなってしまう。長いと小一時間インターネット上から見えなくなります。間貸しもしているので忍びない。
せっかくサーバで遊びたいのに、これじゃおちおち再起動できません。 - サーバのPPPoEが切れたら手動で再接続しないとならない
どうやらプロバイダのPPPoE仕様はシングルセッションみたい。サーバからPPPoEするには手動で一旦Home Gatewayのネット接続を切断しないと繋ぐことができない。 - LAN内からのサーバへのウェブアクセスもインターネットを介してしまう
Global IPが引かれるので一旦外に出て行ってしまいます。自宅内からのアクセスなのにスッキリしないですね。それにLANでアクセスできればギガビットですし。
ということで再びネットワーク構成を変更。
サーバをLAN内に置いて、サービスするポートだけをHome GatewayからPort Forwardします。
LAN内からサーバのウェブにアクセスできるようにローカル用のDNSを用意。
ローカルDNSはサーバで行っているウェブのホスト名だけをLocal IPで返して、それ以外はインターネット上のDNSに問い合わせるように設定。これにはややこしいnamedなんかなじゃなくて、こういう用途にぴったりのお手軽なdnsmasqを用いるのがいいです。
このローカルDNSをHome GatewayのプライマリDNSに設定。セカンダリはインターネット上のDNS(うちはGoogle Public DNSを使っています)を指定しておく。
サーバが落ちているとセカンダリDNSに切り替わるわけだけど、この時のタイムアウト時間ってどれくらいなんだろ。それが少し気になるけど、サーバが落ちていることは滅多にないからまぁいいか。
こんな構成になります。
設定してみたところハマりました。
プライマリDNSに、サーバ上のローカルDNSを指定したけどアクセスできない。う〜ん、なんだろう、と悩んでみたところ、どうやらLAN内のDNSにはアクセスできないみたい。orz
さて困った。
何か方法がないものかとHome Gatewayのマニュアルをよく読んでみました。するとDNSルーティングという機能があることを発見。
指定したホスト名を引くためのDNSとつながり先のGatewayが指定できる機能です。ラッキー。
ここにローカルDNSで解決するホスト名とDNSとしてローカルDNSを指定することで解決できました。
これだとローカルの名前解決の時だけローカルDNSを使うので、メンテなどでサーバを落としてもDNSを参照する機器のパフォーマンスが落ちないのはGoodですね。
これで高価な商用ルータを買わずにうまい構成にできました。^^