新規記事投稿
フォロー記事投稿
記事のキャンセル
From: にあ
<nir@mxa.meshnet.or.jp>
Subject: Re: REMOTE_HOST について
Date: 1998/05/01 23:39:59
Reference: mesh.program/00490
5月1日に、satoshi kusunokiさんは書きました。
>さっき気がついたのですが、infowebのユーザーホームページでは
>gethostbyaddr関数を使っても逆引きでないようになっている。
>自分で関数を作る代りになるものはないでしょうか?
>
つまり、サーヴァのOS自体がDNSを引かない設定に変えられてしまった、と
言うことですか?
うーむ、そうまでしてDNSサーヴァの負荷を下げようとしている時に、自分で
DNSを引くような設定をしてしまって良いのかどうか? と言う問題はありますね。
また、実際問題としてDNSサーヴァとやり取りして名前解決を計るのは
面倒な作業ですから、出来合いのルーティン群を使うのが簡単ですが、
そう言うルーティン群はデフォルトではインストールされていないで
しょうから、自分でインストールしなくてはなりませんね。(^^;;
取りあえず、perl5を使っているのなら、Net::DNS(現行ヴァージョンは
Net-DNS-0.12.tar.gzですね)を使うのが簡単だと思います。
例えば、以下のようなテストスクリプトを書いて見ました。
#!/usr/local/bin/perl
use Net::DNS;
$address = '133.205.10.1'; # 試しにここのアドレスを入れてみましょうか。
$nameserver = '127.0.0.1'; # ここはもちろん実際にはDNSサーヴァのIPアドレスにします。
printf("%s -> %s\n", $address, &gethost($address));
exit(0);
sub gethost {
my ($address) = @_;
my $res = new Net::DNS::Resolver;
$res->nameservers($nameserver);
my $query = $res->search($address, 'PTR');
if ($query) {
foreach ($query->answer) {
next if ($_->type ne 'PTR');
return($_->rdatastr);
}
}
return($address);
}
実行すると、
133.205.10.1 -> www2.biglobe.ne.jp.
と出力されました。(^^)
# perl -MCPAN -e 'shell' するようになってから、うちのサーヴァは
# Moduleてんこ盛りになっています。新しいのが出るとすぐ入れるし。(^^;;;