![a.gtld-servers.net 是否有所有 .com 域名的列表?](https://linux22.com/image/1272490/a.gtld-servers.net%20%E6%98%AF%E5%90%A6%E6%9C%89%E6%89%80%E6%9C%89%20.com%20%E5%9F%9F%E5%90%8D%E7%9A%84%E5%88%97%E8%A1%A8%EF%BC%9F.png)
当我这样做时dig @a.gtld-servers.net example.com
,它很快就会返回名称服务器example.com
和这些名称服务器的IP地址(胶水记录)。
这是否意味着a.gtld-servers.net
(和*.gtld-servers.net
) 本地拥有所有域名的记录?他们的响应非常快,所以我认为他们自己不会进行进一步查询。同样,对的名称服务器
.com
的请求不会将我重定向到或任何其他内容。example.com
domains.starting.with.e.gtld-servers.net
我确实意识到a.gtld-servers.net
可能有几台机器,并且我被路由到离我最近的一台机器(通过新的一 IP 多机技术),但这只意味着其他几台机器拥有所有.com
域。
编辑:感谢所有回答的人!后续问题:如果有人“入侵”其中一台机器,难道他们无法获得所有.com
域的列表吗?这似乎是有用的信息,除非它已经在某个地方免费提供?我知道域信息是公开的,但仍然很难批量获取。我猜*.gtld-servers.net
不支持区域传输(尽管.edu
至少几年前的域名服务器支持区域传输)。
注意:我意识到 example.com 不是一个实际域名 - 只需将其替换为上面的任何其他 .com 域名(我最初是 xyz.com,但有人正确地编辑了它以避免使用真实的域名)。
答案1
是的,“ x.gtld-servers.net”是“ com”顶级域的权威服务器,因此它们具有.com域的所有“ pointers”。
dig -t ns com
dig -t ns us
dig -t ns dk
dig -t ns aero
答案2
您很久以前就已经得到了答复,但我觉得我们可以更精确一些,而且您还有一个后续问题,事实上那应该是另一个问题。
因此让我们从头再来。
如果您查询根服务器以了解.COM
委派情况(请注意,以下所有内容均以相同的方式适用,因为.NET
两者都由同一个注册表处理),您会得到以下答复:
$ dig @a.root-servers.net com. NS +noall +auth
; <<>> DiG 9.12.0 <<>> @a.root-servers.net com. NS +noall +auth
; (1 server found)
;; global options: +cmd
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
因此,总而言之,这些名称服务器中的任何一个都是权威的,.COM
并且它们都具有相同的数据(因此您可以扩大您的问题,a.gtld-servers.net
绝不是特殊的,以下所有内容都适用于这些名称服务器中的任何一个)。
当您向这些名称服务器查询任何.COM/.NET
域名时,他们需要使用您所请求域名的权威名称服务器做出权威答复。
因此,根据定义,“这是否意味着 a.gtld-servers.net(和 *.gtld-servers.net)在本地拥有所有 .com 域的记录?”,但事实确实如此!关于“全部”有一些警告,下文将进一步说明。
请注意,您说的是胶合记录,这是一种特殊情况,而不是最常见的情况。通常,在上述任何名称服务器上对域名的请求只会返回一个或多个 NS 记录。
让我们花点时间来解决一下文本中的其他小问题:
他们回复得非常快,所以我认为他们自己不会再做进一步的询问。
从定义上来说,权威名称服务器拥有回复查询所需的数据,而无需依赖任何外部资源,否则它就不是真正权威的。
至于速度,这在一定程度上是主观的,并且高度依赖于你测试的内容和方式,但也有几个因素:默认情况下,DNS 使用比TCP更轻的UDP,因此速度更快,并且此类名称服务器是任播的,这意味着如果幸运的话,你总会有一个“靠近”你的。
我确实意识到 a.gtld-servers.net 可能是几台机器
您可以删除“可能”:-) 这些名称服务器收到如此多的查询,以至于任何单个盒子都无法承受。
如果你去https://stat.ripe.net/195.5.6.30#tabid=routing你会看到很多可能难以消化的信息,但基本上,看到这个单一 IP a.gtld-servers.net
(实际上是它所在的块)是由一个公司控制的几个 AS 宣布的,这是一个强有力的任播指标,它对大多数 DNS 都很有效。
如果你去http://www.root-servers.org/您可以了解更多信息。这与根名称服务器有关,不再是根名称服务器.COM
,但从技术上讲,它们是完全相同的。例如,您可以发现 13 个根服务器由 12 个不同的组织管理,涉及 930 个实例(一个实例不仅仅是一台服务器,它是一个位置,一个“存在点”,操作员在其中有一个“节点”,通常是路由设备、负载平衡/故障转移设置中的多台服务器、一些监控/远程操作功能等)。F
例如,在 222 个地方。
并且我被路由到离我最近的一台机器(通过新的一 IP 多机技术),但这只意味着其他几台机器都拥有 .com 域。
是的,许多机器都有所有域名的列表.COM
。但首先要明确一点:在这些名称服务器上,您将获得所有 .COM 域名的所有名称服务器的列表……这意味着对于未委托的域名,您将无法在此处找到它们。这可能发生在多种情况下:
- 当您注册域名时,您可以选择不设置名称服务器,或者稍后删除它们。
- 例如,由于付款纠纷,您的注册商可能会
clientHold
在您的域名上添加状态,从而使其从 DNS 中消失 serverHold
注册机构可以因任何原因将该域名列入名单。
(看https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en如果您想了解有关这些状态和其他状态的更多信息)。
根据您如何定义“全部”以及您对这些数据的操作,您可能无法真正获得所有这些数据。
在上述所有情况下,域名都不会出现在注册 DNS 服务器上,但会在您执行 whois 查询时出现。因此,whois 服务器(再次强调,不是单个服务器)也会有...所有 .COM 域名的列表,甚至比名称服务器上的数据还要多,因为:
- 您实际上拥有所有域名,包括那些无法解析且不在注册名称服务器上的域名
- whois 提供了更多信息,例如联系数据
而且这些仍然只是面向公众的注册服务,以某种方式或部分拥有域名列表(或其中的一部分)。
至于你的后续行动:
后续问题:如果有人“侵入”其中一台机器,他们难道不能获得所有 .com 域名的列表吗?
从技术上来说,是的。但是:
- 这当然不是你在网上能找到的最简单的目标
- 在这种特定情况下,数据已经可以免费获得。
.COM
是 gTLD,因此受 ICANN 的合同约束。ICANN 要求所有 gTLD 注册机构每天至少发布一次其区域文件(这基本上是名称服务器自己使用的内容,因此是 NS 记录加上 A/AAAA 胶水),并且任何人都可以免费访问,只要您签署协议以确保您不会将这些数据用于“不良”目的(例如自己重新发布)。
看https://czds.icann.org/en了解所有详细信息。这可以让您访问数百个 gTLD 区域文件。
请注意,如果你的问题扩展到“如果有人入侵这些机器之一,并且改变添加或删除 .COM 域名的内容...”那么我们可以快速回答:
- 这些变化不会在全球范围内显现,因为你只破解了一个盒子,并且有许多名称服务器,首先通过名称,然后通过任意广播
- DNSSEC可能会导致您的更改显示为错误,因此将很快发现(当然,除了操作员本身的任何本地对策之外)。
简而言之,为了弄乱.COM
域名而这样做并不是最好的主意,还有其他方法。
我知道域名信息是公开的,但仍然很难批量获取。
请参阅上文的 ICANN 计划。至于 ccTLD,情况各不相同,但更常见的是,他们不提供对其区域文件的访问权限,而且不是实时的。
有时,你可以在一段时间后访问它,例如通过“开放数据”运动。一个例子:https://opendata.afnic.fr/en/products-and-services/services/opendata-en.html用于.FR
域名。
我猜测 *.gtld-servers.net 不支持区域传输(尽管 .edu 的名称服务器至少在几年前就支持)。
易于测试:
$ for ns in $(dig NS . +noall +ans | grep 'IN NS' | awk '{print $5}') ; do echo $ns ; dig @$ns com. AXFR; done
c.root-servers.net.
; <<>> DiG 9.12.0 <<>> @c.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
m.root-servers.net.
; <<>> DiG 9.12.0 <<>> @m.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
i.root-servers.net.
; <<>> DiG 9.12.0 <<>> @i.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
e.root-servers.net.
; <<>> DiG 9.12.0 <<>> @e.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
j.root-servers.net.
; <<>> DiG 9.12.0 <<>> @j.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
l.root-servers.net.
; <<>> DiG 9.12.0 <<>> @l.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
g.root-servers.net.
; <<>> DiG 9.12.0 <<>> @g.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
k.root-servers.net.
; <<>> DiG 9.12.0 <<>> @k.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
b.root-servers.net.
; <<>> DiG 9.12.0 <<>> @b.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
h.root-servers.net.
; <<>> DiG 9.12.0 <<>> @h.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
d.root-servers.net.
; <<>> DiG 9.12.0 <<>> @d.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
;; QUERY SIZE: 44
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
;; QUERY SIZE: 44
;; connection timed out; no servers could be reached
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
a.root-servers.net.
; <<>> DiG 9.12.0 <<>> @a.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
f.root-servers.net.
; <<>> DiG 9.12.0 <<>> @f.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
不,目前没有.COM
权威域名服务器接受 AXFR 查询。但这不一定在所有地方都一样。如果您查询f.root-servers.net
域名服务器,则可以执行 AXFR 查询以获取已发布的所有 TLD。其他一些 TLD 也可能允许这样做。
请注意,有“很多”建议反对允许公开 AXFR 查询。事实是,从定义上讲,它们是巨大的答案,如果重复,可能会给服务器带来压力,这是真的。人们可以无休止地争论为什么/公众是否需要这些信息。它在 DNS 开始时更多地用于在名称服务器之间复制区域(现在有更好的替代方案)。因此,AXFR 经常被禁用……除非您同时以某种特定方式(即 NSEC 而不是 NSEC3 变体)执行 DNSSEC,否则很容易通过标准 DNS 查询和没有 AXFR 遍历您的所有区域并重建区域文件。存在可以做到这一点的工具。
还要注意,许多在线提供商都会向您出售许多tld的域名和/或所有域名列表,它们通过各种方式获得了这些域名(一个想法:您将开放的区域文件拿走,例如.COM
,.example
您可以通过一个人找到所有名称.COM
,这些名称都可以从中找到,除了在tld中使用的语言,您还可以为您提供一些想法)。
答案3
对域本身进行查询 – dig @a.gtld-servers.net com.
– 并寻找“权威答案”标志:
snowflake ~ $ dig @a.gtld-servers.net com | grep flags
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
^^