Jer*_*oen 5 php dns nameservers
我一直在试图找出如何检测父域名服务器与域名关联的内容.例如,当您使用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
Run Code Online (Sandbox Code Playgroud)
似乎所有通用TLD都可以在某个子域中查询gtld-servers.net.
现在,我发现PHP中的'普通'名称服务器如下:
$nameservers = dns_get_record($domain_name, DNS_NS);
Run Code Online (Sandbox Code Playgroud)
所以,我想知道,如何找出特定域的父名称服务器是什么,以及如何使用PHP查询?
我发现UNIX' nslookup工具接受服务器参数.如果它是空的,它返回与PHP相同的结果dns_get_record,但如果它是http://www.iana.org/domains/root/db上指定的该顶级域的根服务器之一,它将返回与intoDNS列表相同的结果作为父服务器的结果.
剩下的唯一问题是如何查询这个特定的服务器,因为我更不愿意直接exec()调用nslookup.有没有人知道dns_get_record允许您指定服务器的替代方案?
我已经知道怎么做了。为此,我必须使用NET_DNS2 PEAR 包,因为它允许您指定要使用哪个 DNS 服务器。如果我指定提到的文件 nickc 中列出的服务器之一:
\n\nhttp://www.iana.org/domains/root/db
\n\n(您必须使用您正在查询的顶级域的其中一台服务器,哪一台并不重要)
\n\nrequire \'Net/DNS2.php\';\n\n$server = gethostbyname(\'j.gtld-servers.net\'); // 192.48.79.30\n\n$r = new Net_DNS2_Resolver(array(\'nameservers\' => array($server)));\n$result = $r->query(\'stackoverflow.com\', \'NS\');\n\nprint_r ($result);\nRun Code Online (Sandbox Code Playgroud)\n\n这将打印:
\n\n...\n [authority] => Array\n (\n [0] => Net_DNS2_RR_NS Object\n (\n [nsdname] => ns1.webfaction.com\n [name] => webassay.com\n [type] => NS\n [class] => IN\n [ttl] => 172800\n [rdlength] => 17\n [rdata] => ns1webfaction\xef\xbf\xbd\n )\n\n [1] => Net_DNS2_RR_NS Object\n (\n [nsdname] => ns2.webfaction.com\n [name] => webassay.com\n [type] => NS\n [class] => IN\n [ttl] => 172800\n [rdlength] => 6\n [rdata] => ns2\xef\xbf\xbd.\n )\n\n [2] => Net_DNS2_RR_NS Object\n (\n [nsdname] => ns3.webfaction.com\n [name] => webassay.com\n [type] => NS\n [class] => IN\n [ttl] => 172800\n [rdlength] => 6\n [rdata] => ns3\xef\xbf\xbd.\n )\n\n )\n...\nRun Code Online (Sandbox Code Playgroud)\n\n这与 intoDNS 上的父服务器返回的列出的名称服务器相匹配:http://www.intodns.com/stackoverflow.com
\n