Net::DNS::Resolver
DNSクライアントモジュール
use Net::DNS;
パッケージをロードする。
実際の処理は、Net::DNS::Resolver等の派生クラスが行う。必要な派生クラスは全てロードされる。
my $dns = Net::DNS::Resolver->new(
nameservers => [
'10.1.1.128', '10.1.2.128' ],
recurse
=> 0,
debug => 1);
Resolver インスタンスを生成する。
$dns->nameservers(@servers);
検索するネームサーバを設定する。
my $packet = $dns->query($hostname[, $type]);
DNSレコードを検索してNet::DNS::Packetオブジェクトを返す。エラーが発生した場合は、undefが返る。
$type
を省略した場合はAレコード。但し、$hostnameにIPアドレスが指定された場合はPTRレコード。
$dns->errorstring;
直前の検索のエラーメッセージを返す。
my @rr = $packet->answer; (Net::DNS::Packet のメソッド)
直前の検索結果をNet::DNS::RRオブジェクトリストで返す。戻りオブジェクトは1つとは限らない。
例えば、Aレコードを検索する場合、ホスト名がCNAMEだった場合、CNAMEレコードとAレコードのリストが返ってくる。
Net::DNS::RR のメソッド
$rr->print ; # 検索結果の表示
$rr->string; #
検索結果
$rr->name; # ホスト名
$rr->type; # タイプ
$rr->class; # class
$rr->ttl; # TTL(生存時間)
$rr->address; # IPアドレス
$rr->rdata; # レコードデータ(バイナリ)
$rr->rdatastr; #
レコードデータ文字列
Net::DNS::RRは、レコードタイプ毎にサブクラスがあり、サブクラスによっては使えないメソッドもある。主なタイプ毎の戻り値は、下記の様になっていた。
type | name | address | rdatastr |
A | sagami.bko.to | 219.117.195.148 | 219.117.195.148 |
CNAME | sv01.lan.bko.jp | 不可 | vc10.lan.bko.jp. |
MX | bko.to | 不可 | 0 mail.bko.to |
PTR | 254.192.168.192.in-addr.arpa | 不可 | gw5.lan.bko.jp. |