no-ip.com の手動更新が面倒なので,シェルスクリプトで強制的に更新することにした。
No-IP はダイナミック DNS サービスで,そのうちの No-IP Free は個数限定のフリーのサービスである。このサイトのドメイン名 nlogn.ath.cx は Dyn.com という別のダイナミック DNS サービスを利用しているが (nlog(n): ダイナミックDNSに登録),同じサーバを No-IP のドメイン名で別名をつけて運用している。こうしておくと,片方のサービスが落ちても,自宅サーバへの接続は確保できるという利点があるのだ。
IP アドレスの自動更新には,No-IP が公開する 自動更新プログラム を使用している。
No-IP は,1か月以上 IP アドレスの更新がないと登録ホストを削除する仕様になっている。削除する1週間前に「消すけどいい?」というメール届く。まだ使っている場合は,メールに書かれているウェブサイトに行って,Capcha 文字列を入力しなければならないのだ。
自動更新プログラムは,30分毎にグローバル IP アドレスをチェックするが,変化がないときには何もしない。IP アドレスが変わったときにだけ No-IP に更新に行くようになっている。ここ数か月,自宅サーバのグローバル IP アドレスが変わっていない。そのためか,毎月 No-IP から「消すけどいい?」メールが届くようになってしまった。これは面倒。そこで,IP アドレスに変化がなくても1週間に1度は必ず更新するシェルスクリプトを書いた。
動作環境は,Vine Linux 4.2, GNU Wget 1.10.2 である。自宅の通信回線としては,ADSL などの自動的に IP アドレスが割り当てられるサービスで,ブロードバンドルータの外側がグローバル IP アドレス,内側がプライベート IP アドレスになっている環境を想定している。
No-IP の更新は wget の GET リクエストでできるそうなので (no-ip.com - YAA's personal log(2004-05-06)),これを使うことにする。
/etc/cron.weekly/noip.sh に次のシェルスクリプトを保存する。/etc/cron.weekly 以下のスクリプトがいつ起動されるかについては,/etc/crontab に記述されている。
このスクリプトを利用する場合,設定が必要なのは USERNAME, PASSWORD, HOSTS である。HOSTS は複数のホストを書く場合はスペースで区切る。HOSTS は1つでもよい。
ブロードバンドルータの外側に割り当てられているグローバル IP アドレスを取得するために,別のサービスである http://checkip.dyndns.org/ を使っている。最近,2011年8月に Dyndns.org は Dyn.com に統合されたが (Welcome To The New Dyn.com! - Dyn),このサービスだけは現在も残っっている (CheckIP Tool - Dyn)。IP アドレスだけを抽出するのに expr のパターンマッチを使っている (Manpage of EXPR)。
各ホストの更新ステータスを最後に表示するようになっている。「0」または「1」が正常との情報があるが (NSLU2-Linux - How To / Set Up Your Own Static Link To Your Site At A Dynamic IP),試した範囲ではすべて「0」が返ってきている。CNAME で登録してあるホストは「9」が返ってくるので,多分失敗しているのだろう。
No-IP の更新に関しては,次の方針で行くということになる。
noip2 プログラムで,30分に1回チェックする他に,1週間で強制更新してくれればいいのに…。もしかして noip2 プログラムが正常に動いていないだけだったり?? その可能性は嫌だなぁ。しばらくは様子見で。
2016年5月27日追記:
この方法は効力を発揮しなくなってしまいました。月に一度,手動で操作して確認することが必要になってしまいました。
Master Archive Index
Total Entry Count: 1957