Mar
16
2010

ddclient with DynDNS

20:06 pm

ddclientとは
ddclientとは、ダイナミックDNS(DDNS)サービスを使用している際に、グローバルIPアドレスが変更されてしまった場合、それを自動的に検知し、DNSサービス側の設定を自動更新してくれるアプリです。
標準では、DDNSサービスサイトの DynDNS.org で取得したドメインに対応するIP アドレスを自動更新してくれます。
他のValueDomainやMyDNS等にも対応するような改変も可能で、Google等で検索すれば各種の情報が見つかると思います。
同種のアプリとしては、DiCEが有名ですが、DiCEは、PPC上ではどうも動かないようなので、PPCにも対応しているddclientを使います。
このアプリはプロバイダーから固定のグローバルIPアドレスを取得している場合は、不要なのでしょうが、持っていない場合は、必須になります。
自分の場合もグローバルIPアドレスを持っているわけではありませんが、ルーター自体はネットにつなぎっぱなしであるためか、実態的にはグローバルIPアドレスが頻繁に切り替わることはないようです。
調べて見ると、以下にあるように、一旦設定されたグローバルIPは、そうそう変わるものではないようです。
しかし、だからといってプロバイダーと契約している間、永続的に固定が保証されているわけではなく、ddclientの必要性がないわけではありません。

単純にルータの電源を切断してすぐに起動させてもグローバルIPは変化しません。
IPはプロバイダ側にあるルータ等のネットワーク機器によって割り当てられますが、特定IPの付与には期限があり、期限内に再取得をリクエストしても同一のIPしか割り当てられません。

以下は、念のためのチェックです。
グローバルIPアドレスの確認サイトです。
私のルーターAtermに設定されているグローバルIPアドレスは、http://ルーターのIPアドレス/(ex http://192.168.0.1/))とすれば、ルーターの設定メニューが表示されるので、その中から適切なものを選択すれば、確認できます。
当然、前者と後者のIPアドレスは一致しているハズです。

ddclientのインストール
右がddclient_3.8.0.tar.bz2 のダウンロードサイトです。
緑色のDownloadNowを右クリックでプロパティからダウンロードファイルのURLを取得します。
DynDNS.orgからもダウンロードできますが、こちらの方は少しバージョンが古いようです。


以下のようにwgetコマンドでダウンロードします。なお、ダウンロード先のディレクトリ(以下の例では、/home/hbirds/build)はあらかじめ作って置きます。

$ cd /home/hbirds/build
$ sudo wget http://sourceforge.net/projects/ddclient/files/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz/download

実行結果です。

hbirds@UbuntuServer:~/build$ sudo wget http://sourceforge.net/projects/ddclient/files/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz/download
[sudo] password for hbirds:
--2010-03-16 04:59:01--  http://sourceforge.net/projects/ddclient/files/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz/download
Resolving sourceforge.net... 216.34.181.60
Connecting to sourceforge.net|216.34.181.60|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://downloads.sourceforge.net/project/ddclient/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz?use_mirror=cdnetworks-kr-2 [following]
--2010-03-16 04:59:04--  http://downloads.sourceforge.net/project/ddclient/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz?use_mirror=cdnetworks-kr-2
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://cdnetworks-kr-2.dl.sourceforge.net/project/ddclient/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz [following]
--2010-03-16 04:59:05--  http://cdnetworks-kr-2.dl.sourceforge.net/project/ddclient/ddclient/ddclient-3.8.0/ddclient-3.8.0.tar.gz
Resolving cdnetworks-kr-2.dl.sourceforge.net... 211.39.135.163
Connecting to cdnetworks-kr-2.dl.sourceforge.net|211.39.135.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45893 (45K) [application/x-gzip]
Saving to: `ddclient-3.8.0.tar.gz'
100%[============================================================>] 45,893      --.-K/s   in 0.1s
2010-03-16 04:59:05 (414 KB/s) - `ddclient-3.8.0.tar.gz' saved [45893/45893]

解凍します。
$ sudo tar xzf ddclient-3.8.0.tar.gz
実行するとddclient-3.8.0というディレクトリが作成され、各種のファイルが作成されますが、このうち必要になるのは、以下の3つです。ちゃんとUbuntu用のinit.dファイルもあります。
・ddclient
・sample-etc_ddclient.conf
・sample-etc_rc.d_init.d_ddclient.ubuntu

構成ファイルのファイル名変更と適切なディレクトリへのコピー
3っつのファイルを以下のように適宜、適切なディレクトリに配置し、パーミッションを変更します。
$ sudo cp ddclient /usr/sbin
$ sudo chmod 755 /usr/sbin/ddclient
$ sudo mkdir /etc/ddclient
$ sudo cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf
$ sudo chmod 600 /etc/ddclient/ddclient.conf
$ sudo cp sample-etc_rc.d_init.d_ddclient.ubuntu /etc/init.d/ddclient
$ sudo chmod 755 /etc/init.d/ddclient
$ sudo mkdir /var/cache/ddclient

ddclient.confの編集 /etc/ddclient/ddclient.conf
$ sudo nano /etc/ddclient/ddclient.conf として、設定を変更します。
設定方法は、このサイトを参考にしました。詳細に書かれており、大変参考になります。
使い方は、このページが本家のようです。

/etc/ddclient/ddclient.confファイルを編集します。
先にコピーしたddclient.confを編集し以下を挿入・追記してもいいし、新規に以下をddclient.confとして作成してもOKです。

daemon=300
syslog=yes
mail=root
mail-failure=root
pid=/var/run/ddclient.pid
ssl=yes
cache=/var/cache/ddclient/ddclient.cache
max-interval=7d ← 強制変更する間隔
use=web ← グローバルIPをwebから取得する設定
login=hogehoge ← DynDNS.orgのログインユーザー名
password=ABCD1234 ← DynDNS.orgのログインパスワード
server=members.dyndns.org,
protocol=dyndns2
hbirds.homelinux.com ← DynDNS.orgで取得したドメイン名

max-interval=は、IPが変わっていなくても強制変更する間隔の設定です。上の例では7d(=1週間)とセットしていますが、DynDNSは4週間更新されなかった場合は、5週間目に削除する仕様になっているため、IPの変動があまりない環境にある場合は、このコマンドは必須でセットしておかないと、期限前にいちいちDynDNSアクセスして手動で強制更新する羽目になってしまいます。

次に以下をインストールします。
$ sudo aptitude install libio-socket-ssl-perl
$ sudo aptitude install sysv-rc-conf

ddclientをスタートさせます。
$ sudo /etc/init.d/ddclient.sh start 

$ sudo sysv-rc-conf
  => メニュー式の起動設定画面 で適切なランレベルをddclientにセットします。
$ sudo sysv-rc-conf -list
  => サービスの起動設定状態一覧を出力で確認します。

$ sudo ddclient -daemon=0 -debug -verbose -noquiet で確認します。
成功したら最後の行に SUCCESS: hbirds.homelinux.com: …….. となります。

念のため、DynDNSのページに行くと更新日付がアップデートされているのが確認できます。
今回の設定例だと例えグローバルIPが変わらなくとも7日後に更新されることになるはずです。
 ところが、後日調べてみると強制アップデートが働いていないようです。
 sudo ddclient -daemon=0 -debug -verbose -noquiet を実行すれば、強制更新はされるのですが、ほうっておくと自動的に更新してくれないようです。原因究明しないと。
失礼しました。ちゃんと、自動更新されてます。

No Comments »

RSS feed for comments on this post. TrackBack URL

Leave a comment

You must be logged in to post a comment.

www.hbirds.net