DiCEのIP更新がうまくいかない
VirtualHostとかChroot設定しているときに、いつの間にか外部からアクセスできなくなった。
この設定が関係あるわけもないので、基本的なところからチェック。
wget -q -O - ipcheck.ieserver.net
DiCEで更新かけてみたがうまく変わらないので、以下を拝借しました。(EveryDNS用)
グローバルIP取得の部分がうまく動かなかったので、上記のものと差し替え。
/cron/ip_update.sh とかで適当に保存。
あと、現在DNSに登録されているIPを/tmp/oldip.everydnsに記述しておく。
#!/bin/bash hostname="example.com" USER="username" PASS="password" VER="0.1" #IP=$(curl -s http://myip.dk/ | egrep -m1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') IP=$(wget -q -O - ipcheck.ieserver.net) if [ -r "/tmp/oldip.everydns" ]; then OLDIP=`cat /tmp/oldip.everydns` if [ "$OLDIP" = "$IP" ]; then exit 0 else RETURN=$(curl -s http://${USER}:${PASS}@dyn.everydns.net/index.php?ver=${VER}&ip=${IP}&domain=${hostname}) echo $RETURN | grep "IP change suceeded" > /dev/null 2>&1 if [ "$?" -eq "0" ]; then echo $IP > /tmp/oldip.everydns else echo "" > /tmp/oldip.everydns fi fi fi
これを定期実行するためcronに設定。
エディタを開いて記述。
# crontab -e * * 7 * * /cron/ip_update.sh
ちなみにcronの書き方は、左から
minute | 分 | 0〜59 |
hour | 時 | 0〜23 |
day_of_month | 日 | 0〜31 |
month | 月 | 1〜12 または jan〜dec |
day_of_week | 曜日 | 0〜6 または sun〜sat |
command | コマンド行 |
【2010/03/21 追記】
DiCEのsetupでプライベートIPアドレスを検出対象からはずすとうまく更新されるようになりました。