![]() |
|
@ DynamicDNSの取得・自動更新
DynamicDNS は,IP を動的に特定のFQDNに関連付けてくれるものです.固定IPで独自ドメインも持っている方には無関係ですが,普通の一般人はDDNSのお世話になりますよ.基本的な利用は無料が多いです. DDNSサイトへの登録
まずは,DDNSを提供しているドメインのサブドメインを無料で取得しましょう.案外多くのサイトが見つかると思いますが今回は下記2サイトで.Dynamic DO!.jp DynDNS.org 前者が日本のDDNSで,後者は英語圏のものです.登録はどちらもいたって簡単なのでサイトに行ってもらえればすぐわかります. DynDNS.org のほうは1アカウントで幾つもサブドメインを登録できるので,Apacheでバーチャルホストを使う際には便利です. 自動更新
DynamicDNS は,自身のIPが変更になる度に登録したサイトに報告して更新していかなければなりません.さもなければ,IPが変わってしまうとサイトがFQDNで表示できなくなってしまい非常に不便です.(グローバルIPを入力すれば見れます)しかし,IPが変化するたびに手動で更新していくのはとても骨の折れる作業ですね.自宅に居るときなら何とかなりますが,外出中はお手上げです. そこで,サーバ機自身にIP変化を監視させて,変化した時に自動でDDNSへ報告するようにすれば良いでしょう. ここで,DDNSの自動更新で有名な DiCE というソフトを利用するのが解決への早道でしょう. Linux版は更新する気がないらしいので,そのうち使えなくなるかもしれませんね.そうしたら,開発してくれるかもしれませんけど. DiCEのインストールは解凍するだけで終わりですので,解凍後,dicedを起動して設定を済まして,自動起動に設定しておくと良いでしょう. 自動起動は,"/etc/rc.local" に "/解凍ディレクトリ/DiCE/diced -dl" を追加するだけです.起動も同様にして行います.
さて,普通に設定していて特に問題がなければ良いのですが,時々,問題があってDiCEが使用できない可能性があるので,その時は,自前で更新スクリプトを作成すると良いでしょう.以下,その例です. ddns.cgi
#!/usr/bin/perl
sub get_ip;
# The Shortest Update Distance Time (Minuites)
$Next_Up=60; # Default 60
open(DATA,"/var/www/cgi-bin/ip.pl"); # File Pass for IP Data
@IP_ADD=<DATA>;
close(DATA);
$Current_IP="0.0.1.0";
$Old_IP=@IP_ADD[0];
chomp $Old_IP;
$Update_Time=@IP_ADD[1];
chomp $Update_Time;
$Current_Date=time();
$num=0;
do{
get_ip();
$num++;
} while($Current_IP!~/Address/ && $Current_IP ne "0.0.0.0");
$Current_IP=~s/.*?(([0-9]+\.){3}[0-9]+).*/$1/;
$difference=$Current_Date-$Update_Time;
#######################################################################
########################### FTP-PASV_mode #############################
if ($Current_IP ne $Old_IP){
open(FTP,"/etc/vsftpd/vsftpd.conf");
@ftp_conf=<FTP>;
close(FTP);
$new_conf='';
foreach(@ftp_conf){
if($_=~/^pasv_address=/){
$new_conf.="pasv_address=$Current_IP\n";
} else{
$new_conf.=$_;
}
}
open(FFTP,">/etc/vsftpd/vsftpd.conf");
print FFTP "$new_conf";
close(FFTP);
print "Grobal IP is changed! The following is text of vsftpd.conf\n\n";
print "$new_conf\n";
system("/etc/init.d/vsftpd restart");
}
#######################################################################
#######################################################################
if($difference > $Next_Up*60 && $Current_IP ne $Old_IP || $difference > 60*60*24*7){
print "IP Update....\n";
system("wget -q -O - http://free.ddo.jp:80/dnsupdate.php?dn=USER&pw=PASSWORD&ip="); # DDO!.jp USER,PASSWORD is yours!
system("wget -q -O - http://USER:PASSWORD\@members.dyndns.org:80/nic/update?hostname=FQDNs&myip=&wildcard=&mx=&backmx="); # DynDNS.org USER,PASSWORD,FQDNs is yours!
open(DaTE,">/var/www/cgi-bin/ip.pl");
print DaTE "$Current_IP\n$Current_Date\n";
close(DaTE);
}
sub get_ip{
if($num==0){
system("wget -q -r -O - http://checkip.dyndns.org/ | grep Address > /var/www/cgi-bin/get_ip.pl");
} elsif($num==1){
system("wget -q -r -O - http://www.dyndns.org/cgi-bin/check_ip.cgi | grep Address > /var/www/cgi-bin/get_ip.pl");
} elsif($num==2){
system("wget -q -r -O - http://web0.obenri.com/ipsend.php | grep Address > /var/www/cgi-bin/get_ip.pl");
} else{
$Current_IP="0.0.0.0";
}
open(GIP,"/var/www/cgi-bin/get_ip.pl");
$Current_IP=<GIP>
close(GIP);
$Current_IP=@Current_IP[0];
$Current_IP=~s/\n//;
$Current_IP=~s/\r//;
}
exit();
FTP-PASV_mode のところは不要なら削って下さい.PASV mode (ブラウザなど) でFTP接続する際に設定する項目です. サーバ構築の流れ
1.OSの選定2.OSのインストール 3.必要なサーバソフトの設定 4.ルータの設定 5.動作確認 6.DynamicDNSの取得・自動更新 7.その他 |
広告とか
| This site is created by Benben. Copy Right 2008 Benben |