5

私は、どの親ネームサーバーがドメイン名に関連付けられているかを検出する方法を見つけようとしてきました。たとえば、intoDNSを使用してドメイン名を検索すると、「通常の」ネームサーバーと親ネームサーバーの両方の結果が表示されます。彼らは、次のように、親のネームサーバーが何であるかについて言及しています。

k.gtld-servers.netは親切にも、その情報を提供してくれました。

しかし、どうして彼らはこの特定のネームサーバーに問い合わせなければならないことを知ったのでしょうか?親ネームサーバーとは何かのいくつかの例:

stackoverflow.com   k.gtld-servers.net
google.com          c.gtld-servers.net
ycombinator.com     a.gtld-servers.net
asp.net             g.gtld-servers.net
google.nl           sns-pb.isc.org
google.de           z.nic.de

すべてのジェネリックTLDは、の特定のサブドメインでクエリできるようですgtld-servers.net

今のところ、PHPの「通常の」ネームサーバーは次のようになっています。

$nameservers = dns_get_record($domain_name, DNS_NS);

だから、私は知りたいのですが、特定のドメインの親ネームサーバーが何であるかを知るにはどうすればよいですか?PHPを使用してこれをクエリするにはどうすればよいですか?


アップデート

nslookupUNIXのツールがサーバーパラメータを受け入れることがわかりました。空のままにすると、PHPと同じ結果が返されますが、 http://www.iana.org/domains/root/dbdns_get_recordで指定されているトップレベルドメインのルートサーバーの1つである場合は、親サーバーの結果と同じintoDNSリストの結果。

残っている唯一の問題は、この特定のサーバーにクエリを実行する方法です。直接exec()呼び出すために使用したくないためです。サーバーを指定できるnslookup代替手段を知っている人はいますか?dns_get_record

4

2 に答える 2

2

私はそれを行う方法を見つけました。これにはNET_DNS2PEARパッケージを使用する必要がありました。これにより、使用するDNSサーバーを特定できるようになります。上記のファイルnickcにリストされているサーバーの1つを指定した場合:

http://www.iana.org/domains/root/db

(クエリするトップレベルドメインのサーバーの1つを使用する必要があります。どちらのサーバーでもかまいません)

require 'Net/DNS2.php';

$server = gethostbyname('j.gtld-servers.net'); // 192.48.79.30

$r = new Net_DNS2_Resolver(array('nameservers' => array($server)));
$result = $r->query('stackoverflow.com', 'NS');

print_r ($result);

これは印刷されます:

...
    [authority] => Array
        (
            [0] => Net_DNS2_RR_NS Object
                (
                    [nsdname] => ns1.webfaction.com
                    [name] => webassay.com
                    [type] => NS
                    [class] => IN
                    [ttl] => 172800
                    [rdlength] => 17
                    [rdata] => ns1webfaction�
                )

            [1] => Net_DNS2_RR_NS Object
                (
                    [nsdname] => ns2.webfaction.com
                    [name] => webassay.com
                    [type] => NS
                    [class] => IN
                    [ttl] => 172800
                    [rdlength] => 6
                    [rdata] => ns2�.
                )

            [2] => Net_DNS2_RR_NS Object
                (
                    [nsdname] => ns3.webfaction.com
                    [name] => webassay.com
                    [type] => NS
                    [class] => IN
                    [ttl] => 172800
                    [rdlength] => 6
                    [rdata] => ns3�.
                )

        )
...

これは、intoDNSで親サーバーによって返されるものとしてリストされているネームサーバーと一致します:http://www.intodns.com/stackoverflow.com

于 2012-06-04T22:23:49.857 に答える
0

特定のドメインのネームサーバーは、ゾーンファイルで「NS」レコードとして指定されているものです。リストするホスト/サーバーは、問題のドメインの特定のTLDの情報を維持するグローバル/ルートサーバーです。

それらが何であるかを知りたい場合は、ここを見ることができます:http: //www.iana.org/domains/root/db

于 2012-06-03T11:04:59.363 に答える