DDNS(ダイナミックDNS) @ VALUE DOMAIN

ついに うちの某プロバイダが 固定グローバルIP のメニューを停止してしまったのだー 泣く泣く DDNS の環境へ

DDNSの構成

(1)自宅-IPアドレス→DNSサーバ (2) クライアントホスト-DNS解決→DNSサーバ (3) クライアントホスト-アクセス→自宅

(1) 自宅のサーバを起動したときに IPアドレスが決定するので それをプロバイダーDNSサーバへ通知する VALUE DOMAINでは Webによるアクセスで通知できる 非DDNS環境では IPアドレスは固定だったのでこの部分は不要だった
(2) インターネット上のクライアントは 自宅のホスト名*** を解決するのに DNSサーバへ問い合わせる VALUE DOMAINでは DNSの有効期間が5分なので 自宅サーバをリブートしても IPがうまく解決できないのは 5分内に収まる
(3) IPアドレスが正しく解決できれば 後は普通に自宅サーバへのアクセスが可能になる

DDNSの更新通知

HTTPで cgi にアクセスすることによって DNSサーバに IPの更新通知を知らせるフォーマットが 一般的に使われている
http://プロバイダURL/cgi-bin/CGI?d=ドメイン名&p=パスワード&h=ホスト名&i=IPアドレス
InternetExplorer や Firefox のブラウザでもアクセスできるけど フォーマットが分かっているので DiCEwget など自動登録用のツールも使えます

DDNSの設定 (FreeBSD)

自宅では サーバ落としたときに ブロードバンドルータも落とすので サーバ起動時に自動的に wgetで 1回 DDNS更新通知を出すようにします
#!/bin/sh
#

/usr/local/bin/wget -O /var/log/ddns.log 'http://dyn.value-domain.com/cgi-bin/dyn
.fcg?d=poared.com&p=〜&h=〜' > /dev/null
/etc/rc.local を以下のように書いて終了 i=IPアドレス パラメータを省略することで 代わりにDNSサーバが検知したアクセス元IPアドレスが登録されます
検証環境
OS FreeBSD 5.3-RELEASE
wget GNU Wget 1.8.2
ブロードバンドルータ Aterm WA7500H

ブロードバンドルータが実際に IPアドレスを掴みに行くので ルータの設定変更も必要です(DHCPクライアント設定) これでルータ毎 サーバをリブートかけたときに 掴んだグローバルIPアドレスが DNSサーバに通知されるようになります
> su
Password: ********
%/etc/rc.local
--18:16:36--  http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=poared.com&p=*****&h=****
           => `/var/log/ddns.log'
dyn.value-domain.com をDNSに問いあわせています... 完了しました。
dyn.value-domain.com[202.212.144.10]:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]

    [ <=>                                  ] 12            11.72K/s

18:16:36 (11.72 KB/s) - `/var/log/ddns.log' saved [12]

%cat /var/log/ddns.log
status=0
OK
%
上記のように wgetのコマンドを直接実行して試験できます status=0 は正常終了のコードなので これで動作することが確認できます DDNSは便利ですがパスワードが平気でインターネットを流れてしまう部分が気にかかるところです