トップページ > インフォメーション

自宅サーバ構築MY HOME SERVER

IP自動更新(スクリプト編) IP自動更新(DiCE編)

- IP自動更新(スクリプト編) -

ホームユーザのほとんどの方は、現在ISPから割り当てられているグローバルIPは非固定IPです。(有料で固定IPにすることも出来ます) すでにドメイン名を登録していますから、ドメイン名と現在割り当てられているグローバルIPは紐付けられています。

しかし、非固定グローバルIPはいつ変わるかわかりません。毎日変わるかもしれないし、10〜20日間隔で変わるかもしれません。 グローバルIPが変わると、取得したドメイン名との紐付けが出来なくなってしまいます。つまり、hoge123@ddo.jp で外部から アクセスしようとしても、「サーバが見つかりません」と言うエラーが返ってきます。

そこでグローバルIPが変わったとき、自動的にドメイン名登録サイトに接続して更新してくれるスクリプトを導入します。既に ドメイン取得が済んでいることを前提に説明します。
下記サイトを開き、自動更新用スクリプトの内容を全てコピーします。
http://ieserver.net/ddns-update.txt

コピーした内容を貼り付けます。(viエディタの場合、入力モードにした状態でAltキー、Vキーを押します。)
[root@hoge123 ~]# cd /usr/local/bin/
[root@hoge123 /bin]# vi ddns-update.pl ← 新規作成します。

貼り付けた内容の下記の部分を編集・保存します。

 # 以下2ファイルの配置ディレクトリは好みに応じ設定
 # 1. 設定IPアドレスワークファイル
 $CURRENT_IP_FILE = "/var/log/ieserver/current_ip";
 
 #  2. 設定状況ログファイル
 $LOG_FILE        = "/var/log/ieserver/ip_update.log";
 
 # 回線IP確認ページURL
 $REMOTE_ADDR_CHK = "http://ieserver.net/ipcheck.shtml";
 # DDNS更新ページURL
 # wgetをSSL接続可能でビルドしているなら、https:// での接続を推奨
 $DDNS_UPDATE     = "https://ieserver.net/cgi-bin/dip.cgi";
 
 # ieServer.Netにて取得したアカウント(サブドメイン)情報を記入
 $ACCOUNT         = "hoge123";     # アカウント(サブドメイン)名設定
 $DOMAIN          = "dip.jp";     # ドメイン名設定
 $PASSWORD        = "XXXXXXXXXXXX";     # パスワード設定

[root@hoge123 /bin]# cd
[root@hoge123 ~]# chmod +x /usr/local/bin/ddns-update.pl 
[root@hoge123 ~]# mkdir /var/log/ieserver
[root@hoge123 ~]# /usr/local/bin/ddns-update.pl ← ieServer用のIPアドレス更新を手動実行します。 
更新結果は/var/log/ieserver/ip_update.logに保存されます。

[root@hoge123 ~]# cat /var/log/ieserver/ip_update.log
Sun Apr 22 22:36:31 2011 hoge123.dip.jp Updated 0.0.0.0 to XXX.XXX.XXX.85
↑ IPアドレス更新情報が、ログに記載されています。

[root@hoge123 ~]# crontab -e

最終行に追記します。10分毎にスクリプトが実行されます。
*/10 * * * * /usr/local/bin/ddns-update.pl




- IP自動更新(DiCE編) -

グローバルIPが変わったとき、自動的にドメイン名登録サイトに接続して更新してくれるソフト(DiCE)を導入します。DiCEを ダウンロードしてから、設定します。ダウンロード先は下記のとおりです。

ダウンロード先:http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019

サーバに直接ダウンロードするためには、wget コマンドの後に、ダウンロード先のパスを入力してダウンロードします。実際のダウンロードは下図の ようになります。
[root@hoge123~]# cd /usr/local/ ← ダウンロード先フォルダに移動します。
[root@hoge123 local]# wget http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019

--2012-06-05 05:08:20-- http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019
www.hi-ho.ne.jp をDNSに問いあわせています... 202.224.157.11
www.hi-ho.ne.jp|202.224.157.11|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://homepage3.nifty.com/sarad/diced01914.tar.gz [続く]
--2012-06-05 05:08:21-- http://homepage3.nifty.com/sarad/diced01914.tar.gz
homepage3.nifty.com をDNSに問いあわせています... 2001:258:8602:351:202:248:175:225, 61.121.100.78
homepage3.nifty.com|2001:258:8602:351:202:248:175:225|:80 に接続しています... 失敗しました: 接続を拒否されました.
homepage3.nifty.com|61.121.100.78|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1094082 (1.0M) [application/x-gzip]
`diced01914.tar.gz' に保存中

100%[======================================>] 1,094,082 1.98M/s 時間 0.5s

2012-06-05 05:08:21 (1.98 MB/s) - `diced01914.tar.gz' へ保存完了 [1094082/1094082]

[root@hoge123 local]# ls
anaconda-ks.cfg diced01914.tar.gz install.log install.log.syslog
↑ diced01914.tar.gz がルートディレクトリにダウンロードされています。(圧縮ファイルです)

[root@hoge123 local]# tar zxvf diced01914.tar.gz ← ダウンロードしたファイルを展開します。

- 省略します。 -
DiCE/plug-in/cheapnet.plg
DiCE/plug-in/changeIP.plg
DiCE/plug-in/ARTofDNS.plg
DiCE/plug-in/VALUEDOMAIN.plg
DiCE/plug-in/ODS.plg
DiCE/plug-in/JSPEED.plg
DiCE/plug-in/IPDYN.plg
DiCE/plug-in/DnsTokyo.plg

[root@hoge123 local]# cd DiCE ← DiCEのディレクトリへ移動
[root@hoge123 DiCE]# ./diced ← DiCEを実行します。

=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

-- 日本語が文字化けするので、Tera Termの文字コード設定をEUCに変更します。メニュー バーから「設定」、「端末」に進み「漢字-受信」「漢字-送信」をそれぞれ EUC に変更して「OK」ボタンを 押してください。DiCEの設定が終わったらUTF-8に戻すのを忘れないでください。--

:setup ← DiCEの環境設定を行います。(初回起動時のみ)
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない      (P)戻る
>0
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>y
検出IPアドレス>XXX.XXX.79.40 ← 現在割り当てられているグローパルIPアドレスです。
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>n
-------------------------------------------------
IPアドレスをチェックする間隔を指定してください(分)
設定可能範囲は5分以上です
<現在:10>
(N)変更しない     (P)戻る
>n
=================================================
DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
ください(分) 設定可能範囲は10分から1440分です
<現在:60>
(N)変更しない      (P)戻る
>n
=================================================
設定を保存しますか? (Y/N)
(P)戻る
>y
設定を保存しました
=================================================
:add ← DDNSサービスの個別設定を行います
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
対応しているサービスを表示してみる
>?
            ZoneEdit               unicc             MyIP.US               DtDNS
             BIGLOBE                dnip              Now.nu         StaticCling
              theBBS                ysdn          Netservers                dyns
              Dynamx             GetmyIP          onamae.com               IPDYN
                  yi           my-domain            MyDNS.JP              JPN.ch
              instat         VALUEDOMAIN            cheapnet              Dyn.ee
              DNS2Go              dyndns              @nifty            SelfHOsT
             ddns.ca           ZENNO.COM                 p2p             miniDNS
            MyServer                todd               Earth              ddo.jp
            livedoor                 dhs            ieServer           dynDNS.it
                DION           Microtech                Dynu                 ODS
                dnsQ             DDNS.nu            EveryDNS          WebReactor
               Dynup              pcc.jp                 USA               No-IP
      did.expoze.com                ZiVE            changeIP              JSPEED
            DynDNSdk             nicolas                 ODN              DynDSL
            DnsTokyo            ARTofDNS                 cjb          HAMMERNODE
=================================================
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>ieServer
-------------------------------------------------
<< ieServer Project l>l>
URL: http://www.ieserver.net/
*** 情報 ***
ユーザー名の入力は不要です
独自ドメインの場合はドメイン名を”ホスト”の所へ入力してください
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>dip.jp← 取得したドメインを指定します。
=================================================
ホスト名を入力してください
(P)戻る
> ← 空欄のままEnter キーを押します。
=================================================
ログインユーザ名を入力してください
(P)戻る
>hoge123← ユーザ登録時のサブドメイン名を入力後、Enter キーを押します。
=================================================
ログインパスワードを入力してください
(P)戻る
>xxxxxx ← ドメイン登録時、設定したパスワードを入力します。
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
> ← 空欄のままEnter キーを押します。
=================================================
このイベントに題名を付けてください
(P)戻る
>dip.jp
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
>5 ← 通常は「5」を指定します。
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎   (1)14日毎   (2)21日毎   (3)28日毎
(4)35日毎   (5)56日毎   (6)84日毎
(P)戻る
>0 ← 一週間以上未更新だと削除されるので「0」を指定します。
=================================================
詳細オプションを設定します
-------------------------------------------------
[ サービスタイプ ]
(0)無料 (1)有料
番号>0
-------------------------------------------------
[ SSL ]
(0)使用する  (1)使用しない
番号>1
-------------------------------------------------
[ オフライン ]
(0)No   (1)Yes
番号>0
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>y
=================================================
イベントを保存しますか? (Y/N)
>y
イベント"ddo.jp"を保存しました
=================================================
:list ← 登録した設定を確認します。
(No.)   (イベント名)   (スケジュール)         (次回予定)
0 *     dip.jp     IPアドレス変化時 (7日毎)   03/03 01:23
:exec 0 ← 0番のイベントを実行します。
+ 2/3 1:38 にdip.jpが実行されました
IPアドレスを更新しました
:exit ← 正しくIPアドレスが更新されたらDiCEを終了します。


以上でDiCEの設定が完了しました。後はバックグランドで動作するように設定します。
[root@hoge123 DiCE]# ./diced -d -l ← DiCEをバックグランドで動作させます
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

DiCE Daemon Started !!
[root@hoge123 DiCE]# ps -C diced ← DiCEが動作しているか確認します。
PID TTY    TIME CMD
1256 ?    00:00:00 diced
[root@hoge123 DiCE]#


最後に、システム起動時にDiCEが自動起動するように設定します。もしシステムをシャットダウン・再起動した場合、 手動で /usr/local/DiCE/diced -d -l を実行すればDiCEがバックグランドで動作しますが、忘れる可能性もあります。 そこで、設定ファイル rc.local を編集・保存します。
      
[root@hoge123 DiCE]# vi /etc/rc.d/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/DiCE/diced -d -l ← 最後にこの一行を付け加えて保存します。
           
[root@hoge123~]# 


自宅サーバ構築(Vine Linux6)に戻る


Copyright(C) PCDEMAGIC All Rights Reserved.