Net_DNS_Resolver::axfr()

Net_DNS_Resolver::axfr() -- ネームサーバからのゾーン転送を行う

概要

require_once('Net/DNS.php');

Net_DNS_Packet Net_DNS_Resolver::axfr (string $dname [, string $class = 'IN' [, boolean $old = FALSE]])

説明

axfr() は、Net_DNS_Resolver->nameservers の配列で指定されている ネームサーバからのゾーン転送を試みます。 Net_DNS_Resolver::axfr()Net_DNS_Resolver::query() メソッドが使っているのと同じリゾルバ設定を利用します。

ほとんどの公開ネームサーバは、標準ではゾーン転送を許可していません。 ゾーン転送は、ゾーンファイル内の DNS リソースレコードの完全なリストを提供します。 ゾーン転送には、UDP の代わりに常に TCP が用いられます。

戻される RR オブジェクトの詳細は Net_DNS_RR を参照してください。

次の例では、デバッグ表示が有効になっており、またネームサーバは ゾーン転送を許可するように設定されています。この例でもっとも注目すべき 箇所は、応答内容の最初と最後にある SOA レコードです。 ネームサーバがゾーン転送を行う際、最初に送られるレコードが SOA レコードです。ゾーン転送の完了後に、ネームサーバは SOA レコードを 再送します。このことは、デバッグ出力から確認できます。 axfr() の結果として戻される配列には、最後の SOA レコードは含まれません。

例 54-2Net_DNS_Resolver::axfr() 問い合わせの成功例

<?php
require_once 'Net/DNS.php';

$resolver = new Net_DNS_Resolver();
$resolver->debug = 1;
$response = $resolver->axfr('my.example.com');
echo "\n\n以下のリソースレコードがネームサーバから戻されました:\n";
if (count($response)) {
  foreach ($response as $rr) {
    $rr->display();
  }
}
?>

出力結果:

;; axfr_start(my.example.com, IN)
;; query(my.example.com, AXFR, IN)
;; axfr_start(192.168.0.254:53)
;; sending 32 bytes
;; read_tcp: expecting 2 bytes
;; read_tcp: received 2 bytes
;; read_tcp: expecting 262 bytes
;; read_tcp: received 262 bytes
;; received 262bytes
;; HEADER SECTION
;; id = 21220
;; qr = 1    opcode = QUERY    aa = 1    tc = 0    rd = 0
;; ra = 1    rcode  = NOERROR
;; qdcount = 1  ancount = 10  nscount = 0  arcount = 0

;; QUESTION SECTION (1 record)
;;
;my.example.com.        IN      AXFR

;; ANSWER SECTION (10 records)
my.example.com.         300     IN      SOA     ns1.my.example.com. hostmaster.my.example.com. 103 3600 1800 2592000 300
my.example.com.         300     IN      NS      ns1.my.example.com.
my.example.com.         300     IN      MX      10 mx1.my.example.com.
my.example.com.         300     IN      MX      20 mx2.my.example.com.
my.example.com.         300     IN      A       192.168.0.1
mx1.my.example.com.     300     IN      A       192.168.0.2
mx2.my.example.com.     300     IN      A       192.168.0.3
server.my.example.com.  300     IN      CNAME   www.my.example.com.
www.my.example.com.     300     IN      A       192.168.0.1
my.example.com.         300     IN      SOA     ns1.my.example.com. hostmaster.my.example.com. 103 3600 1800 2592000 300

;; AUTHORITY SECTION (0 records)

;; ADDITIONAL SECTION (0 records)


以下のリソースレコードがネームサーバから戻されました:
my.example.com.         300     IN      SOA     ns1.my.example.com. hostmaster.my.example.com. 103 3600 1800 2592000 300
my.example.com.         300     IN      NS      ns1.my.example.com.
my.example.com.         300     IN      MX      10 mx1.my.example.com.
my.example.com.         300     IN      MX      20 mx2.my.example.com.
my.example.com.         300     IN      A       192.168.0.1
mx1.my.example.com.     300     IN      A       192.168.0.2
mx2.my.example.com.     300     IN      A       192.168.0.3
server.my.example.com.  300     IN      CNAME   www.my.example.com.
www.my.example.com.     300     IN      A       192.168.0.1

注意

この関数は、スタティックにコールする ことはできません。