[目次] [前のページ] [次のページ]


●● Libretto100をWebサーバにする(DynamicDNS利用)-2002.07.14


§Webサーバの起動

setup コマンドでメニューを表示し、システムサービス設定に入ります。
メニューの中にある httpd にチェックを付け

# /etc/rc.d/initd/httpd start

するか

# reboot

します。

httpデーモンとして起動する apache の設定は、始めるときりがないのでWeb等で情報を集めてください。

§無料ダイナミックDNSサービスでドメインを取得する

IPアドレスをプロバイダの DHCP から取得しているような場合だと、何らかの原因で切断したときなど再接続
時にIPアドレスが変わってしまう事はよくあります。

たとえ自分がドメインを取得していても、いつ変わるかわからないIPアドレスは、DNSに対して設定すべきでは
ありません。

そこで、ダイナミックDNSの登場です。これは、ユーザが自分のIPアドレスをダイナミックDNSに対して随時更
新することにより、動的なDNSとして利用できるのです。
利用条件としては、プロバイダからグローバルなIPアドレスを取得できている。という事だけです。

#CATV等のインターネット接続サービスの場合は、グローバルIPを取得できない場合があります。

そして、ダイナミックDNSには、無料でサービスを提供してくれているところが、こんなにあるんです。
私は、家サーバー・プロジェクト - ダイナミック IP DNS サービスに登録してみました。

ここでは、「myhome.cx」「or.cf」「jpn.ph」「fam.cx」「dip.jp」という5種類のドメインから選んでサブ
ドメインを無料で取得できます。
以下の説明では、hoge.myhome.cx の取得を仮定に説明していきます。

まず、家サーバー・プロジェクトの中にある便利ツールから 、perl版クライアントの GnuDIP をダウンします。
私の場合、/root/gdipc にダウンロードした gdipc.pl を置きました。

最初に、ダウンロードしたGnuDIPに自分の登録情報を設定します。

# gdipc.pl -c

を実行すると、以下のように聞いてきますので、それぞれ答えていきます。

Changing prefernces:
  New Username: ******            ←登録したユーザ名
  New Password: ******            ←登録したパスワード
  New Password Again: ******      ←登録したパスワード再び
  Domain: myhome.cx               ←自分で選んだドメイン名
  New GnuDIP Server: ieserver.net ←家サーバー・プロジェクトのサーバ名
そして、1日1回は設定更新をするように crontab に次の行を追記します。

05 3 * * * /root/gdipc/gdipc.pl 1> /dev/null 2> /dev/null

これで、毎日午前 3:05 にサーバに対してIPアドレスを更新します。
ずぅーっと更新しないと、ユーザ登録を抹消されるかもしれないので、このようにしておけば大丈夫でしょう。

このままの運用でも良いのですが万が一、回線が切断され再接続の結果、IPアドレスが変わってしまった場合、
3:05にならないと情報を更新しないので、1時間に1度、IPアドレスをチェックする仕掛けを作っておきます。

まず、自分のグローバルIPアドレスを表示できるスクリプトを書きます。

# vi /usr/local/bin/ipdisp

して、以下のように記述します。

-----/usr/local/bin/ipdisp------------------------
#!/bin/bash
/sbin/ifconfig ppp0 | grep "inetアドレス" | cut -f2 -d: | cut -f1 -d" "
--------------------------------------------------

見てのとおり、ifconfig ppp0 から強引にIPアドレスを切り出します。(笑)

そして、IPアドレスを保存しておいて、新しいIPアドレスと比較し、相違があれば情報更新するスクリプトを
書きます。

# vi /root/gdipc/ipchk

-----/root/gdipc/ipchk----------------------------
#!/usr/bin/perl
#
$OLD_IPA = '/任意のディレクトリ/ip.dat';
$NEW_IPA = '/任意のディレクトリ/ipnew.dat';
$LOG = '/var/log/ddns.log';

open INPUT,"$OLD_IPA";
$CRT_IP=<INPUT>;
close INPUT;

system("/usr/local/bin/ipdisp >$NEW_IPA");
open INPUT,"$NEW_IPA";
$NEW_IP=<INPUT>;
close INPUT;

if ($NEW_IP ne "" and $CRT_IP ne $NEW_IP) {
        open (OUTPUT ,">$OLD_IPA");
        print OUTPUT $NEW_IP;
        close OUTPUT;

        print "IP Address update: $CRT_IP to $NEW_IP\n";
        system("/root/gdipc/gdipc.pl -f /root/.GnuDIP2");
        system("/bin/mail -s IP-Update hogehoge\@docomo.ne.jp </任意のディレクトリ/ip.dat");

        $now_string = localtime;
        open (OUTPUT ,">>$LOG");
        print OUTPUT "$now_string DDNS IP Address Updated. $CRT_IP to$NEW_IP\n";
        close OUTPUT;
}
--------------------------------------------------
#このスクリプトは、http://240net.ddo.jp/linux/linuxddns.htmlを参考にさせてもらいました。

/usr/local/bin/ipdisp も /root/gdipc/ipchk も chmod で実行属性を付けておくのを忘れずに。

そして、crontab に次の行を追記します。

02 * * * * /root/gdipc/ipchk 1> /dev/null 2> /dev/null

これで毎時 02分に、新旧のIPアドレスを確認し、アドレスに変化があれば DNS に対して情報を更新してくれ
ます。

また、スクリプトの後半に

system("/bin/mail -s IP-Update hogehoge\@docomo.ne.jp </任意のディレクトリ/ip.dat");

という行がありますが、IPアドレスに変化があった場合、携帯電話に新IPアドレスを送信するようにしてあり
ます。

#ま、この辺は必要なければ行ごと削除しちゃってください。(笑)


[目次] [前のページ] [次のページ]