Back

12月 07 2013

Linux(Raspbian)でダイナミックDNSを使う

 
 今まで使用していたダイナミックDNSサービスが,IPアドレス更新用ソフトが利用できない環境(ARM)のため使用できない事となり,再考することにしました。
そこで比較的簡単に利用できそうなno-ipwww.no-ip.com)を使用することにしました。最も便利なところは,IPアドレス更新用のアプリがソースで公開されていることでした。

■ グローバルアドレスが変化したときダイナミックDNSを更新する
WS000004
  • 先ず,サインインして[ID][メールアドレス][パスワード]を記入,IDと同じホスト名の付いたno-ip.bizというドメインが候補として表示されますが,「ホストは後で設定する」にチェックを付け[Free Sign Up]バーをクリックします。
  • アカウントが生成されると,no-ip からメールが届き,その中のリンクをクリックしてサインインすると登録完了です。


WS000006-1
  • 先ほど「ホストは後で設定する」を選択した理由は[Add a Host]をクリックして表示されるホスト登録画面では図のようにたくさんのドメイン名の中から選択可能だからです。
  • 一度登録したら,訂正変更は[Manage Host]で行います。もちろん新規追加もここで出来ます。ただし,最大数3ホストです。ホストを作成したら一旦ログアウトして終了します。

 
さて,今回このダイナミックDNSを選んだもっとも大きな要因である,自動更新アプリケーションをダウンロードします。ここからは Raspberry のブラウザーでサインインし直して,先ず,画面トップ左側の[Support]リンクをクリックします。更にトップメニュー右端の[Download]をクリックすると,[Dynamic DNS Update Client for Windows]という画面が表示されます。Windowsを使用している場合は,これをインストールすればとても簡単に設定できるでしょう。今回はRaspberry Pi に使用するため,画面を下へスクロールして[Other Downloads]から[Linux]をクリックします。

SSHなどで作業する場合は次のようになります。

$ wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz

このURLはブラウザーで[Linux]リンクを右クリックして[リンクアドレスをコピー]で得られるものを貼り付けます。

$ sudo tar zxvf noip-duc-linux.tar.gz
$ cd noip-2.1.9-1/
$ sudo make
$ sudo make install

ダウンロードした圧縮ファイルを解凍するとフォルダーができますので,その中に入ります。(2行目)
コンパイルした後インストールします。(3行目と4行目)

Please enter the login/email string for no-ip.com USER ID
Please enter the password for user ‘USER ID’ ********
Only one host [XXXXX.no-ip.biz] is registered to this account.
It will be used.
Please enter an update interval:[30] 30
Do you wish to run something at successful update?[N] (y/N) n

New configuration file ‘/usr/local/etc/no-ip2.conf’ created.

no-ip.com に登録したときのID又はE-mailとパスワードを入力します。複数ホストを登録してある場合には全部更新するか個別に設定するかと聞いてきます。この結果 noip2 という名称の実行ファイルが /usr/local/bin の中に,また no-ip2.conf という設定ファイルが /usr/local/etc の中に作成されます。

$ /usr/local/bin/noip2

としても起動することは出来ますが,自動起動するように設定します。(フォルダ noip-2.1.9-1 の中で)

$ sudo cp debian.noip2.sh /etc/init.d/noip2

RaspbianはDebian系なので,フォルダ内の「debian.noip2.sh」というスクリプトファイルを /etc/init.d フォルダの中に noip2という名前でコピーします。

$ sudo chkconfig –add noip2

自動起動するように登録したら,一度再起動して作業は完了です。

$ sudo /etc/init.d/noip2 stop
$ sudo /usr/local/bin/noip2 -C    # 設定を変更(インストール時と同じ要領)
$ sudo /etc/init.d/noip2 start
$ sudo /usr/local/bin/noip2 -S    # 稼働中に実行すると情報を表示

サービスを停止した上で設定変更します。また状況表示はサービス稼働中に実行します。

=MEMO=

以上の設定における環境は,Raspbian のイメージSDを作成した直後ではなく下記のコンパイル環境などを追加しています。

$ sudo apt-get install chkconfig
$ sudo apt-get install wx2.8-headers
$ sudo apt-get install wx-common
$ sudo apt-get install libwxgtk2.8-0
$ sudo apt-get install libwxgtk2.8-dev
$ sudo apt-get install libwxbase2.8-0
$ sudo apt-get install libwxbase2.8-dev
$ sudo apt-get install portaudio19-dev
$ sudo apt-get install libportaudio2
$ sudo apt-get install build-essential
$ sudo apt-get install libusb-dev
$ sudo apt-get install g++
$ sudo apt-get install libusb-1.0-0
$ sudo apt-get install libusb-1.0-0-dev


■ 変化がないときの定期更新
$ sudo nano /etc/cron.weekly/noip.sh

cron の自動起動用フォルダに次のファイルを作成します。

 GNU nano 2.2.6          File: /etc/cron.weekly/noip.sh
#!/bin/sh
USERNAME=xxxxxx
PASSWORD=******
HOSTS=’freename1.no-ip.org freename2.no-ip.org’

CHECKIP=`wget –no-verbose -O – http://checkip.dyndns.org/ 2>/dev/null`
IP=`expr “$CHECKIP” : ‘.* \([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*’`
echo $IP

for HOST in $HOSTS
do
STAT=`wget –no-verbose -O – “http://dynupdate.no-ip.com/update.php?username=$USERNAME&pass=$PASSWORD&host=$HOST&ip=$IP” 2>/dev/null`
echo “$HOST: $STAT”
done

ファイルを保存したら,パスワード等が書かれているので root ユーザしか開けないように設定します。

$ sudo chmod 700 /etc/cron.weekly/noip.sh

cron が自動起動に設定されていることを確認して再起動しておきます。
手動実行したとき,アップデートが成功すると「0」を表示します。

これでグローバルアドレスが全く変化していなくても,1週間に一度更新されることになり,一ヶ月以上放置することによるダイナミックDNS の期限切れが回避されます。

(定期更新におけるスクリプトはWEB上を参照させて戴きましたが,残念ながらURLを失念致しました。感謝します。)

Back