●● 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アドレスを送信するようにしてあり
ます。
#ま、この辺は必要なければ行ごと削除しちゃってください。(笑)