![更新:](https://linux22.com/image/604330/%E6%9B%B4%E6%96%B0%EF%BC%9A.png)
假设我拥有域名example.com
。该域名在 注册商 处注册R
。在我的 帐户中R
,我为注册中心注册了以下名称服务器.TLD
:
ns1.example.com
-->192.0.2.1
ns2.example.com
-->192.0.2.2
假设还没有域名使用这些名称服务器进行 DNS 操作。如何在我的R
帐户之外验证名称服务器是否已在.TLD
注册中心成功注册?
例如,VeriSign Inc 的 WHOIS页面允许您查找已注册的.COM
名称服务器:
服务器名称:NS1.HOSTGATOR.COM IP地址:67.18.54.2 注册商:ENOM, INC. Whois 服务器: whois.enom.com 推荐网址:http://www.enom.com
对于任何 TLD 注册机构来说,是否有查找此信息的标准方法?
澄清一下,我不是希望验证域名设置使用的名称服务器,例如:
域名:HOSTGATOR.COM 注册商:ENOM, INC. Whois 服务器: whois.enom.com 推荐网址:http://www.enom.com
名称服务器:NS1.P13.DYNECT.NET 名称服务器:NS2.P13.DYNECT.NET 名称服务器:NS3.P13.DYNECT.NET 名称服务器:NS4.P13.DYNECT.NET
状态:clientTransferProhibited 更新日期:2013 年 1 月 5 日 创建日期:2002 年 10 月 22 日 到期日期:2015 年 10 月 22 日
相反,我正在寻找一种方法来根据注册表查询单个注册的名称服务器(例如ns1.example.tld
),以找到注册表为该名称服务器记录的 IP 地址(例如123.456.789.001
)。
更新:
我联系了 VeriSign 征求意见,结果发现 VeriSign 的名称服务器 WHOIS 查询是专有的。以下是他们的回复:
关于您是否能够获得有关在注册中心注册但目前未与任何域关联的名称服务器的任何信息的问题,很遗憾,您无法通过其他途径(例如通过执行 DiG)获得此信息。名称服务器只有在连接到域时才会发布到区域,因此,除非该名称服务器与域相关联,否则您将无法获得此信息。此外,DiG 可能会为您提供与域相关联的名称服务器及其各自 IP 的列表等。
-- Benjamin,VeriSign 公司客户服务部
第二部分@Iian 的回答以下是正确的。名称服务器必须与域相关联,以便查找注册中心为该名称服务器记录的 IP 地址。
答案1
您可以挖掘并选择一个公共 DNS 服务器
dig 8.8.8.8 NS example.com
这将为你提供名称服务器的名称,然后你可以查找它们,例如
dig +short ns1.example.tld
123.456.789.001
或者如果你使用 Windows,你可以使用 nslookup
nslookup
> server 8.8.8.8
> set type=ns
> example.com
然后类似上面
nslookup ns1.example.tld
将为您提供 IP 地址
如果你想直接查询顶级域名,那么
dig ns tld
将提供 TLD 名称服务器列表,然后您可以直接向它们查询 ns 记录,例如 .tld
dig @ns666.tld ns example.tld
答案2
通常你可以使用 Whois 来查询名称服务器:
$ whois -h whois.verisign-grs.com "nameserver =ns3.serverfault.com"
Whois Server Version 2.0
Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
Server Name: NS3.SERVERFAULT.COM
IP Address: 69.59.196.217
Registrar: NAME.COM LLC
Whois Server: whois.name.com
Referral URL: http://www.name.com
>>> Last update of whois database: Fri, 18 Jan 2013 08:57:23 UTC <<<
此功能的实现取决于 TLD。例如,.GOV 不返回名称服务器查询:
$ whois -h whois.nic.gov "nameserver =a.gov-servers.net"
% DOTGOV WHOIS Server ready
No match for nameserver "A.GOV-SERVERS.NET".
>>> Last update of whois database: 2013-01-18T08:59:27Z <<<
实际上,没有一种可靠的方法(即所有 TLD 上都可用的方法)来检查主机是否已通过公共 DNS 或 Whois 服务在注册中心注册。您无法直接查询胶水记录,并且只有在使用您要查找的名称服务器查询域时才能看到它们。由于您对与任何域都不关联的名称服务器感兴趣,因此这不是一个选项。
whois 方法是最佳选择,但不能完全依赖。注册中心可能已注册名称服务器,但如果没有关联域名,则不会费心将其放入 Whois 中。验证名称服务器是否存在于注册中心的唯一 100% 可靠的方法是通过 EPP CHECK 命令查询注册中心。由于这些方法仅供注册商使用,因此对您帮助不大。
假设还没有域名使用这些名称服务器进行 DNS。如何在我的 R 帐户之外验证名称服务器是否已在 .TLD 注册中心成功注册?
当然,如果您没有与名称服务器关联的域名,这真的很重要吗?唯一可以保证的检查方法是使用您的名称服务器在 TLD 中注册一个域名,查询该域名,并检查您从“dig @tldnameservers yourdomain ns”返回的胶水。
答案3
使用 nslookup 或 dig 查询 gTLD 服务器以获取您的名称服务器。您还可以使用以下网站跟踪您域的 DNS 委派:
答案4
首先,查询根名称服务器:
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 名称服务器,一个就足够了。但是如果您愿意,您可以查询所有 TLD 名称服务器。
为了测试这一点,您需要一个与名称服务器的域名处于同一 TLD 中的域名。如果您没有这样的域名用于测试,您可以先将新名称服务器添加为旧名称服务器之外的附加名称服务器,然后检查它是否有效,然后才删除您域名的旧名称服务器。