ついに うちの某プロバイダが 固定グローバルIP のメニューを停止してしまったのだー 泣く泣く DDNS の環境へ
DDNSの構成
(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 のブラウザでもアクセスできるけど フォーマットが分かっているので DiCE や wget など自動登録用のツールも使えます
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は便利ですがパスワードが平気でインターネットを流れてしまう部分が気にかかるところです