最近マスコミの字幕でもこの間違いよく見かけると思ったら、これのせいなのか・・・?いや、これのせいではないか。結局は使い手の問題か。気を取り直してDDNSの話。ここまでで考えたのは、サーバ監視をして、落ちたら携帯にメールするということ。そこから更に、せっかく自宅サーバが知人宅サーバのダウンを察知してるんだから、お互いのDNSサーバをセカンダリ登録しておいて、ダウンしたらレコードを書き換えて自分のサーバに誘導すればどうだろうかと。したら、サーバダウン中に送られたメールがどっかに消えちゃう悲しい事故が防げるし、WEBに関しても、「ただいまサーバが落ちちゃってます。」てなページを表示させて、接続できないよりはちょっとマシな感じになる。そこまで考えて、問題になるのは「じゃぁ、どうやってDNSを更新するの?」ってことで調べ始めたら止まらない。軽く調べてたどり着いたのは、「nsupdate」と「GnuDIP」という二つの言葉。前者は、BINDに付属してるツール。なんと、悩むまでもなくBIND9にはダイナミックDNS機能が付いてたわけ。ところがこれに意外と大きな問題があったわけだけど、それは後述。ひとつは、GNUのダイナミックDNS用のツール。これも上のnsupdateと同じ設定がBINDに必要なので、アップデートの仕方は同じなのかな多分。それよか、ユーザ管理とかそういうのがメインみたい。nsupdateの問題点もともとうちの環境は、LAN内にあるメインサーバにBINDを入れていて、ルータで53番をメインサーバに飛ばしてDNSを提供してる。自前ドメインに関しては、LANからのアクセスとWANからのアクセスで別々のゾーンファイルを読みに行くという、おそらく一般的な運用をしているのだが、この状態でLAN内からnsupdateで更新を試みると、内側用のレコードが更新される。resolve.confを書き換えてネームサーバを自分とこのグローバルIPアドレスに設定してやっても、当然つながらない。「ネームサーバとおしゃべりできません。」とか愉快なエラーが返ってくる。GnuDIPのインストールGnuDIPでググって一番上に出てきたサイトに書かれている通りに忠実にインストール・・・しようと思ったけど、データベースを使いたかったからPostgreSQLの設定もやりながらインストール。おもしろいものだけど、やはり残念ながら、LAN内からグローバルのレコードを書き換えることは出来ず。ちなみに、このサイトはBINDの設定とかも詳しく書いてるから、DDNSサーバ立ててみたい人はここ読めば、とりあえず動作するとこまでは簡単にいけそう。最終手段どうもルータを超えてグローバルアドレスに接続するのは無理くさいので、直接グローバルアドレスを持っているマシン、つまりルータマシンにBINDをインストールして、ルータマシンのネームサーバを自分のグローバルアドレスにして、ルータマシン上でnsupdateを発行してやる。これで、WAN側のレコードの書き換えが出来るようになって、DDNS完成。3.2をインストールして使っている軟弱マシンのため、GnuDIP入れたりするのは結構しんどい。俺のシンプルな目的に対して、GnuDIPはあまりに高機能かつ難解で、使いたかったPostgreSQLも使って動かせてないので気に入らない。そこでちょうどデータベースも自分で使ったことなかったし、ここらへんでそろそろちゃんと勉強したいのもあって、自分でイチから作ってみることにしたということで、BIND+PHPでDiCEで更新可能なダイナミックDNSサーバ構築に続く。次:PHP:fsockopen()を使ってSMTPでメール送信データベースに接続できませんでした。アンケートこのページの内容はいかがでしたか?片手間にポチっと送信してやってください。