印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux no-ip.com を wget で更新

no-ip.com の手動更新が面倒なので,シェルスクリプトで強制的に更新することにした。

■ ■ ■

No-IP 自動更新の問題

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 アドレスになっている環境を想定している。

wget で更新するシェルスクリプト

No-IP の更新は wget の GET リクエストでできるそうなので (no-ip.com - YAA's personal log(2004-05-06)),これを使うことにする。

/etc/cron.weekly/noip.sh に次のシェルスクリプトを保存する。/etc/cron.weekly 以下のスクリプトがいつ起動されるかについては,/etc/crontab に記述されている。

#!/bin/sh

USERNAME=yourname@yourdomain.com
PASSWORD=yourpassword
HOSTS='host1.no-ip.com host2.no-ip.com host3.no-ip.com'

CHECKIP=`wget --no-verbose -O - http://checkip.dyndns.org/ 2>/dev/null`
IP=`expr "$CHECKIP" : '.* \([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*'`

for HOST in $HOSTS
do
  STAT=`wget --no-verbose -O - "http://dynupdate.no-ip.com/update.php?username=$USERNAME&pass=$PASSWORD&host=$HOST&ip=$IP" 2>/dev/null`
  echo "$HOST: $STAT"
done

このスクリプトを利用する場合,設定が必要なのは 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 分毎にチェックして,IP アドレスが変わっていれば更新
  • noip.sh を1週間に1度起動し,IP アドレスが変わっていなくても強制的に更新

noip2 プログラムで,30分に1回チェックする他に,1週間で強制更新してくれればいいのに…。もしかして noip2 プログラムが正常に動いていないだけだったり?? その可能性は嫌だなぁ。しばらくは様子見で。

2016年5月27日追記:
この方法は効力を発揮しなくなってしまいました。月に一度,手動で操作して確認することが必要になってしまいました。

Posted by n at 2011-10-08 04:44 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?