■ Fedora7 / Fedora8 / Fedora9
DiCEのプロセスのCPUが常に高い使用率になってたので、DiCEを使わないでIPアドレスを自動更新させるようにしました。10分毎にIPアドレスをチェックして、IPアドレスに変更があった時のみDDNSサーバ(Dynamic DO!.jp)に対しIPアドレスの更新を行うようにします。
[root@server ~]# cd /usr ← /usr ディレクトリへ移動 [root@server usr]# mkdir -p ddns ← ddns ディレクトリの作成 [root@server usr]# cd ddns ← ddns ディレクトリへ移動
■ 自動更新スクリプトの作成 スクリプトはこちらのスクリプトを利用させて頂きました。
[root@server ddns]# vi ddo.jpIP_upgrade.pl #!/usr/bin/perl # $CRT_IPF = '/usr/ddns/CRT_IP.dat'; $NEW_IPF = '/usr/ddns/NEW_IP.dat'; $LOG = '/var/log/ddns.log'; open INPUT,"$CRT_IPF"; $CRT_IP=<INPUT>; close INPUT; system("wget -q -O $NEW_IPF http://info.ddo.jp/remote_addr.php"); open(INPUT,$NEW_IPF); $c = <INPUT>; $stp = index($c,"REMOTE_ADDR:")+12; $edp = length($c); $NEW_IP = substr($c,$stp,($edp-$stp)); close(INPUT); if ($NEW_IP ne "" and $CRT_IP ne $NEW_IP) { open (OUTPUT ,">$CRT_IPF"); print OUTPUT $NEW_IP; close OUTPUT; print "IP Address update: $CRT_IP to $NEW_IP\n"; system("wget -q -O - 'http://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード'"); $now_string = localtime; open (OUTPUT ,">>$LOG"); print OUTPUT "$now_string DDNS IP Address Updated. $CRT_IP to $NEW_IP\n"; close OUTPUT; }
■ スクリプトに実行権限を与える
[root@server ddns]# chmod +x ddo.jpIP_upgrade.pl
■ スクリプトの起動
[root@server ddns]# cd [root@server ~]# /usr/ddns/ddo.jpIP_upgrade.pl IP Address update: to 121.113.208.81 <html><body> <a href="http://ddo.jp/">Dynamic DO!.jp</a><br> SUCCESS: yokensaka.com <= [ 121.113.208.81 ]<br> IPアドレス更新完了<br> 2007/06/23 18:45:52<br> <input type="button" value="閉じる" onclick="window.close();"> </body></html>
■ プログラムを08分~58分の10分おきに自動実行できるようにcronの設定ファイルに追加
[root@server ~]# crontab -e 08,18,28,38,48,58 * * * * /usr/ddns/ddo.jpIP_upgrade.pl 00 07 * * 0 rm -f /usr/ddns/CRT_IP.dat
ddo.jpは、IPアドレス更新リクエストが毎時00分前後の数秒に集中しており、サーバ負荷の増大に伴い、その間の更新リクエストが失敗する場合ありますので、自動更新処理は毎時00分を避け08分~58分の10分おきに設定しました。また、日曜日の午前7時にCRT_IP.datを強制削除するようにして、次のチェックタイミングに自動更新を行うようにしました。
※ 追記 (2008/02/17)
■ 停電などで再起動させたとき自動で実行するように設定
[root@server ~]# vi /etc/rc.local ← システム起動時実行コマンド定義ファイル編集 以下を最終行へ追加 chmod +x /usr/ddns/ddo.jpIP_upgrade.pl /usr/ddns/ddo.jpIP_upgrade.pl