PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

Net_DNS_Resolver::axfr() | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

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.

忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「Net_DNS_Resolver::axfr()」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | Net_DNS_Resolver::axfr()」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: