内向きDNS Server - IP変更時のスクリプト変更

Last Modified: 2004.02.18

5. IP変更時のスクリプト変更
Dynamic DNS Serviceを利用して、独自ドメインを運用している。
IPが変更された時のために、pingの戻り値とADSL RouterのIPアドレスを比較して処理を行っていた
ところが、DNS ServerをLAN内に立てたため、pingの戻り値がローカルIPとなってしまう。

そこで、スクリプトを下記に変更した。

1. スクリプトのpingを利用していた部分


 # pingの結果を調査し、万一ADSLのIPと異なる場合はdns2goを再起動
 open(FH, "/bin/ping -c1 -q $mydomain |");
 while( $buf=<FH>)
 {
 	@pings = split(/ /,$buf);
 	$pingip = substr($pings[2],1,length($pings[2])-2);
 	last;
 }
 close(FH);
 if( $new_adslip ne $pingip )
 {
 	system("/usr/local/bin/dns2go -k");
 	system("/usr/local/bin/dns2go");
 }

2. 変更後のスクリプト


 # hostコマンドの結果を調査し、万一ADSLのIPと異なる場合はdns2goを再起動
 $mydomain .= ".";
 open(FH, "/usr/bin/host -t a -R 10 -W 30 $mydomain dns.nifty.com |");
 while( $host=<FH>)
 {
 	@hosts = split(/ /,$host);
 	for( $i=0; $i<$#hosts; $i++ )
 	{
 		if( $hosts[$i] eq $mydomain )
 		{
 			$hostip = substr($hosts[$i+3],0,length($hosts[$i+3])-1);
 		}
 	}
 }
 close(FH);
 if( $new_adslip ne $hostip )
 {
 	system("/usr/local/bin/dns2go -k");
 	system("/usr/local/bin/dns2go");
 }
  • hostコマンドはDNS Serverを指定することができるので、距離が一番近そうなniftyのDNS Server dns.nifty.com を利用して、IPを取得している。
  • hostコマンドの戻り値が、TurboLinux 6では"kkoba.com has address aaa.bbb.ccc.ddd"だが、TurboLinux 7では"kkoba.com. has address aaa.bbb.ccc.ddd"とドメイン名の後に"."が付くのでスクリプトの変更が必要。

<Prev Top Next>
Copyright(C) 2001-2003 Katsuyuki Kobayashi.
このサイトへのリンクや引用時はメール頂戴
webmaster@kkoba.com