Net_DNS_Resolver::axfr()

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

Synopsis

require_once('Net/DNS.php');

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

Description

  • dname - 転送するドメイン名(ゾーン名)

  • class - 転送するゾーンのクラス

  • old - 以前のバージョンの Net_DNS との互換性のためだけに用いられる

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

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

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

Example

Net_DNS_Resolver::axfr() 問い合わせの失敗例

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

$resolver = new Net_DNS_Resolver();
$resolver->debug 1;
$response $resolver->axfr('example.com');
print_r($response);
if (
count($response) == 0) {
  echo 
"\n";
  echo 
"AXFR 失敗\n";
}
?>

出力結果:

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

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

;; ANSWER SECTION (0 records)

;; AUTHORITY SECTION (0 records)

;; ADDITIONAL SECTION (0 records)
Array
(
)

AXFR 失敗

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

Net_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

Note

This function can not be called statically.

ネームサーバへの問い合わせを行い、結果を受け取る (Previous) DNS パケットを抽象化したオブジェクトを提供する (Next)
Last updated: Thu, 23 Oct 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.