Linuxからアホ話まで、何でもありでござる

2004年11月25日

ダイナミックDNSのIPアドレスが変わったら

[Linux備忘録]
俺はダイナミックDNSのサービスを利用してこのサーバを立ち上げているのだが、このサーバのIPアドレスがいつの間にか変わっていることはよくある話。ダイナミックDNSの自動更新は、恒常的にそのサービスを使う場合絶対に必要だ。いつ突然変更になるかわからないのに、いちいち手作業で対応できるものじゃない。俺はダイナミックDNSサービスの自動更新をDiCEで行っている。

設定は展開先(/usr/local/bin)の中のDiCE/dicedで対話式に行う。DNS更新の追加はadd、設定の変更はsetupでできる。簡単に設定できた。TurboLinux7だとGUIでできるらしい(DiCE/dice)が、qt関連をaptで入れたがVineでは動かなかった。別に動かなくても問題なしだけど。

設定終了後、/usr/local/bin/DiCE/diced -d -l でデーモンを起動させる。最後にこれを/etc/rc.d/rc.localに追加しておけばもし何かのとき再起動させても自動的にデーモンが走るようになる。

あと、どうしてもIPアドレスが変更になったことをできるだけ早く知りたいこともあるだろう。その場合はやはりメールで自動的に通知させるようにすれば便利だ。これはシェルスクリプトで簡単に作れる。

bashの場合は
#! /bin/sh
#DiCEのLogの場所
eventlog=/usr/local/bin/DiCE/log/events.log
#IPアドレス一時保管ファイル
oldipfile=/var/log/ip.old

#DiCEのログから一番最後に更新したIPアドレスを抽出
ipnow=`cat $eventlog|gawk '/>/{print $5}'|tail -1`
#一時保管しているIPアドレスを読み込む
ipold=`cat $oldipfile`

#最終更新IPアドレスと一時保管IPアドレスが違ったら
if [ $ipnow != $ipold ];
then
 #最新のIPアドレスをhoge@domain宛てにメール
 echo $ipnow|mail -s "Home IP Changed" hoge@domain
 #最新のIPアドレスを一時保管ファイルに記録
 echo $ipnow>$oldipfile
fi

といった具合でOKだろう。これを適当な名前(changeipmailなど)で保存し、パーミッションを変更しておく。コマンドはchmod 744 changeipmail

後はこのスクリプトをcronで動かせば、定期的にDiCEのログをチェックして変更があればhoge@domainまでメールが送られてくるようになる。当然hoge@domainには送りたいメールアドレスを入れておく。携帯に送るようにしておけばいいかも。

ブログランキング・にほんブログ村へ
posted by oyajiman at 2004年11月25日 01:50:33



コメント

コメントはありません

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.

コメントする