DiCE for Linuxの設定

Dynamic DNSは以前よりMyDNSを 使っていましたが、時々MyDNSの障害で自分のサーバーにつなげられないことが ありました。(頻回ではないですが…)
そこで、別のDynamic DNSも同時に設定しておき、MyDNSが落ちても 自分のサーバーに接続できるようすることにしました。
(もちろん自分のサーバー自体が落ちているとだめですが…)
MyDNSはメールチェックをすることでIP addressが更新されるため特に 新しいソフトを入れたりする必要がなかったのですが、多くのDynamic DNSでは、 そのDynamic DNSの設定ページにアクセスして手動でIPアドレスを設定しなく てはいけません。
自動で更新するためWindows系のOSではDiCEというソフトが開発され、IPアドレス の変化をチェックし、変更があれば自動的に更新してくれるといったことが できるようになりました。
LinuxやFreeBSDではperlなどを利用したscriptをcronで回すことにより IPアドレスを更新できますが、 Linux用のDiCEも開発されました。
今回DiCE for Linuxを利用してZiVEの Dynamic DNSを使えるようにしたので、その時のメモを書いておきます。

なお、参考にしたページは DiCE(Linux版) と、 Studio JamPack ANNEX - DiCE daemonです。


ここから Linux用のDiCE(diced0197.tar.gz)をDownloadします。
上記のページを参考にrootで展開し設定します。

$ su
# tar zxvf diced0.197.tar.gz -C /usr/local/bin
# cd /usr/local/bin/DiCE
# ./diced
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:add
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>ZiVE
-------------------------------------------------
<< ZiVE DNS Service >>
URL: http://www.zive.org/
*** 情報 ***
ZiVEのオプションについて
【ホストタイプについて】
 〔ダイヤルアップ〕
  「有効期間」「オフライン」「オフラインメッセージ」の設定が有効です。
  その他のオプションは無効です。
  ※ DiCEでは入力文字数に制限がありますのでご了承ください。
 〔常時接続〕
  「更新モード」「MXホスト名」の設定が有効です。
  その他のオプションは無効です。
  ※ MXレコードを定義する場合の注意
    IPアドレス更新後は、MXレコードを再登録する必要があります。
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>zive.net
=================================================
ホスト名を入力してください
(P)戻る
>shioji
=================================================
ログインユーザ名を入力してください
(P)戻る
>shioji
=================================================
ログインパスワードを入力してください
(P)戻る
>########
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
>
=================================================
このイベントに題名を付けてください
(P)戻る
>ZiVE update
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
>5
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎
(4)35日毎 (5)56日毎 (6)84日毎
(P)戻る
>0
=================================================
詳細オプションを設定します
-------------------------------------------------
[ ホストタイプ ]
(0)ダイヤルアップ (1)常時接続 
番号>1
-------------------------------------------------
[ オフライン ]
(0)No (1)Yes 
番号>0
-------------------------------------------------
[ 有効期間(日) ]
(0)1 (1)0 (2)2 (3)3 (4)4 (5)5 (6)6 (7)7 (8)8 (9)9 (10)10 (11)11 (12)12 (13)13 
番号>1
-------------------------------------------------
[ 有効期間(時間) ]
(0)0 (1)1 (2)2 (3)3 (4)4 (5)5 (6)6 (7)7 (8)8 (9)9 (10)10 (11)11 (12)12 (13)13
(14)14 (15)15 (16)16 (17)17 (18)18 (19)19 (20)20 (21)21 (22)22 (23)23 
番号>0
-------------------------------------------------
[ 有効期間(分) ]
(0)0 (1)10 (2)20 (3)30 (4)40 (5)50 
番号>0
-------------------------------------------------
[ オフラインメッセージ ]
入力>
-------------------------------------------------
[ 更新モード ]
(0)IPアドレス更新 (1)MXレコード設定 
番号>0
-------------------------------------------------
[ MXホスト名 ]
入力>
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>y
=================================================
イベントを保存しますか? (Y/N)
>y
イベント"ZiVE update"を保存しました
=================================================
:exit
#
次にIPアドレスの変更をチェックするための設定をします。
IPアドレスのチェック方法にはいくつかありますが、私の環境では ルーターを介してInternetに接続しているので、ルーターの設定画面に 表示しているIPアドレスをチェックすることにします。
ちなみに使っているルーターはCoregaのBAR HGWLです。
このルーターの場合、URLをhttp://192.168.1.1/title.htmとすることでIP アドレスを得ることができました。
ここではルーターへのloginに必要なlogin名とpasswordをそれぞれ、foobar、 hogehogeとします。

# ./diced
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
>2
-------------------------------------------------
スクリプトのURLを入力してください
<現在:>
(N)変更しない (P)戻る
>http://foobar:hogehoge@192.168.1.1/title
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスを検出をテストしますか? (Y/N)
(P)戻る
>y
検出IPアドレス>123.321.45.67
-------------------------------------------------
IPアドレスを検出をテストしますか? (Y/N)
(P)戻る
>n
-------------------------------------------------
IPアドレスをチェックする間隔を指定してください(分)
設定可能範囲は5分以上です
<現在:10>
(N)変更しない (P)戻る
>n
=================================================
DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
ください(分) 設定可能範囲は10分から1440分です
<現在:60>
(N)変更しない (P)戻る
>n
=================================================
設定を保存しますか? (Y/N)
(P)戻る
>y
設定を保存しました
=================================================
:exit
#
これでDiCEの設定は終了。/usr/local/bin/DiCE/diced -d -lで起動して うまくいくか確かめる。
これでうまくいっているようなら、boot時にも自動的に有効になるように /etc/init.dに以下のスクリプト(DiCE)を置いておく。
最後にupdate-rc.d DiCE defaultsで/etc/rc.*以下にlinkをはる。

# cat /etc/init.d/DiCE
#!/bin/sh
#
# diced: /usr/local/bin/DiCE/diced

[ -f /usr/local/bin/DiCE/diced ] || exit 0

case "$1" in
  start)
        # Start daemons.
        echo "Starting DiCE."
        /usr/local/bin/DiCE/diced -d -l > /dev/null
        echo
        touch /var/lock/diced
        ;;
  stop)
        # Stop daemons.
        echo "Shutting down DiCE."
        PID=`/bin/ps -aefw | grep diced | awk '{print $2}'`
        if [ ! -z "$PID" ] ;  then
            /bin/kill ${PID} 1> /dev/null 2>&1
        fi
        echo
        rm -f /var/lock/diced
        ;;
   *)
        echo "Usage: /etc/init.d/DiCE {start|stop}"
        exit 1
esac

exit 0
# update-rc.d DiCE defaults
一度Internetへの接続を切ってみて自動的に更新されるか確認する。