livedoorドメインでダイナミックDNSするためのメモ

livedoorドメインでダイナミックDNSするためのメモ#interest_aeおがた (@xtetsuji) です。

  • 2015/05/22追記:livedoorドメインのシステム切り替えに伴い2015年6月12日以降、ダイナミックDNSは使えなくなるらしいです

個人的なドメイン名登録サービスは「livedoorドメイン」と「お名前.com」の2つを使っています。最初は livedoorドメイン だけだったのですが、その後そこで登録できないドメインをお名前.comで登録することになり、2つを併用しています。

お名前.com にはダイナミックDNSサービスがありますが、ヘルプを見てもWindowsクライアントしかないようです。以前GMOに問い合わせたことがあったのですが、Windows以外でオープンなAPIを叩いて更新する公式の方法というものは無いようです。

個人的なサーバでダイナミックDNSサーバを構築して運用するのも面倒なので、ここは livedoor ドメイン のダイナミックDNS機能をありがたく使わさせて頂いています。

livedoorドメインのヘルプにはダイナミックDNSの使い方が書いてあって、これは普通のHTTPアクセスでしかないので、OSを選びません。

DNS情報の設定で、TYPEが「A」で尚かつDDNS機能を「ON」にしたレコードは

http://domain.livedoor.com/webapp/dice/update?hostname=hogehoge.com&ip=200.200.200.200

へアクセスし、BASIC認証(livedoor_idとpassword)をクリアすれば該当のDNS情報を変更する事が出来ます。「hostname」と「ip」の指定を忘れないようにして下さい(ipを指定しない場合はその時アクセスしている元のipが設定されます)。livedoorドメインではノーサポートにはなりますが、DiCEというソフトウェアを使えば自動で定期的にIPを更新する事が可能です。

更新中に多少のタイムラグがあるものの、DDNS機能は動的にIPが変化してしまうような環境でインターネットサーバーを構築する際に非常に便利です。

URLの雰囲気から、DiCEで使っている内部の仕組みを情報公開しているということなんですね。

こんなPerlプログラムをcronで定期的に実行しています。プログラマーになりたての大昔に書いたものなので、今ならもうちょっとマシなものが書けるはず。

liivedoorドメインのヘルプでは「ipのクエリ引数が省略されていれば、アクセス元のIPアドレスが採用される」といったことが書かれていますが、以前にそれが無効になってしまったことがありました。たぶん、フロントにAPIサーバがあった状態からロードバランサ配下に置かれたとかなのだと思います。色々考えるのが面倒だったので、@niftyの使いものにならない制限だらけのCGIスペースにリモートIPアドレスを返すだけのCGI remote_ip.cgi を置いて、そのレスポンスに書いてあるIPアドレスを見て自分の出入口のIPアドレスを判断してlivedoorドメインにダイナミックDNSのアップデートを依頼する形にしました。

あとはこのプログラム livedoor-domain-update.pl を、ネットワーク内のサーバから cron で30分おきなり1時間おきに実行してやれば良いです。

大昔に書いたプログラムほぼそのままなのでダサいところは多いですが、今書き直すとすれば、whileループかAnyEventでデーモンにして、以前と同じIPアドレスであれば更新処理をかけないといったプログラムを書くのがよさそうです。この場合はデーモンの死活監視という別の問題が生まれてしまいますが、それはまた別の話。

自分のネットワークの出入口にあたるWAN IPを割り出す方法としては、ルータの管理ページをスクレイピングする方法もありますが、より普遍的な方法は上記のような方法になるんじゃないでしょうか。DiCEの内部処理でもこのような処理が走っているようです。

ゆくゆくは自前でDNSサーバを運用したいとは思っているものの、ダイナミックDNSをどう構築すればいいかが面倒そうだなぁと思って着手できずにいます。いまならRoute53とかのようなクラウドサービスを使うのがベストなのかもしれませんね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です