如何自建域名的自定义NS服务器,并验证NS服务器是否已在 TLD 注册局注册
假设我拥有域名。它在注册商godaddy处注册。在我的帐户中,我注册了以下名称服务器:example.com
ns1.example.com --> 192.0.2.1
ns2.example.com --> 192.0.2.2
假设还没有将这两个NS服务器正常运行并解析域名。我们要如何在myaccount之外验证名称服务器是否已在注册表中成功注册呢?
例如,VeriSign Inc(威瑞信)的 Whois 页面允许您查找已注册的名称服务器:
以下是Verisign Inc支持查询的后缀
威瑞信对名称服务器的WHOIS查找是专有的。以下是他们的回应:
关于您的问题,您是否能够获得任何 有关在注册处注册的名称服务器的信息 但目前未与任何域关联,您将很遗憾 无法通过其他途径获取此信息,例如 执行 DiG。名称服务器仅在以下情况下发布到区域 附加到域,因此您将无法获得此 信息,除非所述名称服务器与域相关联。也 DiG可能会为您提供与 域及其各自的 IP 等。
-- Benjamin, VeriSign, Inc. 客户服务
那么是否有为任何 TLD 注册管理机构查找此信息的标准方法呢?
我正在寻找一种方法来针对注册表查询单个注册的名称服务器,以查找注册表为此名称服务器记录的 IP 地址。例如:ns1.example.tld 123.456.789.001
首先,查询根名称服务器:
dig ns .
然后,在其中一个根名称服务器中查询 TLD 的名称服务器(例如):.net
dig @m.root-servers.net. ns net.
(或者您可以跳过第一步,只查询dig ns net.
现在,在以下名称服务器之一中查询具有所需名称服务器的域名:
dig @m.gtld-servers.net. ns speedy.net.
如果域的 TLD 与名称服务器的 TLD 相同(不必是同一域),并且名称服务器在 TLD 级别注册,您将收到名称服务器的 IP 地址:
; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> @m.gtld-servers.net. ns speedy.net.
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39877
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;speedy.net. IN NS
;; AUTHORITY SECTION:
speedy.net. 172800 IN NS ns1.speedy.net.
speedy.net. 172800 IN NS ns2.speedy.net.
speedy.net. 172800 IN NS ns3.speedy.net.
speedy.net. 172800 IN NS ns4.speedy.net.
;; ADDITIONAL SECTION:
ns1.speedy.net. 172800 IN A 205.251.197.253
ns1.speedy.net. 172800 IN AAAA 2600:9000:5305:fd00::1
ns2.speedy.net. 172800 IN A 205.251.192.194
ns2.speedy.net. 172800 IN AAAA 2600:9000:5300:c200::1
ns3.speedy.net. 172800 IN A 205.251.199.10
ns3.speedy.net. 172800 IN AAAA 2600:9000:5307:a00::1
ns4.speedy.net. 172800 IN A 205.251.194.116
ns4.speedy.net. 172800 IN AAAA 2600:9000:5302:7400::1
;; Query time: 2 msec
;; SERVER: 192.55.83.30#53(192.55.83.30)
;; WHEN: Thu Jun 18 04:42:20 UTC 2020
;; MSG SIZE rcvd: 287
否则,如果 TLD 不同或名称服务器未注册,您将收到不带 IP 地址的名称服务器名称:
dig @m.gtld-servers.net. ns speedymatch.com.
; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> @m.gtld-servers.net. ns speedymatch.com.
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10930
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;speedymatch.com. IN NS
;; AUTHORITY SECTION:
speedymatch.com. 172800 IN NS ns1.speedy.net.
speedymatch.com. 172800 IN NS ns2.speedy.net.
speedymatch.com. 172800 IN NS ns3.speedy.net.
speedymatch.com. 172800 IN NS ns4.speedy.net.
;; Query time: 2 msec
;; SERVER: 192.55.83.30#53(192.55.83.30)
;; WHEN: Thu Jun 18 04:45:02 UTC 2020
;; MSG SIZE rcvd: 126
对要检查名称服务器的任何 TLD 重复这些查询。您不必查询每个 TLD 名称服务器,一个就足够了。但是,如果需要,可以查询所有这些。
当然,你也可以使用在线测试工具:https://simpledns.plus/lookup-dg
下面是查找ipinfo.io的A纪录的示例
- 首先去查找根服务器
- 任意选一台根服务器m.root-servers.net查找.io后缀的注册局DNS服务器
- 询问.io后缀的DNS服务器(c0.nic.io)查询ipinfo.io此域名的dns
- 询问域名的ns服务器ns-cloud-e2.googledomains.com,查找 @.ipinfo.io的A纪录
以上是如何去权威DNS查询纪录的一个走向,实际的网络应用中,都是由当地ISP的DNS服务缓存,返回的是一个非权威应答
> server 192.168.1.1
默认服务器: [192.168.1.1]
Address: 192.168.1.1
> www.baidu.com
服务器: [192.168.1.1]
Address: 192.168.1.1
非权威应答:
名称: www.a.shifen.com
Addresses: 36.152.44.96
36.152.44.95
Aliases: www.baidu.com
> server 114.114.114.114
默认服务器: public1.114dns.com
Address: 114.114.114.114
> baidu.com
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: baidu.com
Addresses: 39.156.66.10
110.242.68.66
{lamp/}
下方高能,重点关注
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
在国内搭建DNS需要资质,切勿随意搭建公网DNS,小心口袋罪套你
在国外搭建DNS,通常主机服务商也会发出警告(本人就收到过VUTLR的关切信),如实应对即可,如DNS学习,个人自用。有些主机服务商一刀切,禁止53端口。
本文系作者 @Leo 原创发布在开封菜博客站点。未经许可,禁止转载。
评论