您很早以前就已经收到了答复,但是我认为我们可以更加精确,您还有一个后续问题,实际上应该是另一个问题。
因此,让我们从头开始。
如果查询根服务器以了解.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使用的UDP比TCP轻,因此比TCP更快,并且这种名称服务器是任意广播的,这意味着您总是很幸运有一个“靠近”你。
我确实意识到a.gtld-servers.net可能是几台机器
您可以删除“可能” :-)这些名称服务器收到太多查询,以至于任何一个盒子都无法承受。
如果您访问https://stat.ripe.net/192.5.6.30#tabId=routing,您将看到很多可能难以消化的信息,但是基本上,看到的是该IP a.gtld-servers.net
(实际上是是由几家AS共同宣布的,这些AS都由一家公司控制,这是任播的有力指标,对于大多数DNS来说效果都很好。
如果您访问http://www.root-servers.org/,则可以了解更多信息。这与根名称服务器有关,不再与根名称服务器有关.COM
,但从技术上讲,这是完全相同的。例如,您可能发现13个根服务器由930个实例中的12个不同组织管理(一个实例不仅是一台服务器,它还是一个位置,是一个“存在点”,操作员在其中存在一个“节点”,通常是路由设备,负载平衡/故障转移设置中的多台服务器,某些监视/远程功能等)。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查询的建议。事实是,从定义上看,它们是一个巨大的答案,并且如果重复,可能会使服务器承受压力,这是事实。On可以无休止地争论为什么/是否需要公众提供此信息。在DNS的开头,它经常用于在名称服务器之间复制区域(现在有更好的替代方法)。因此通常会禁用AXFR ...除非您以某种特定方式(即NSEC而非NSEC3变体)同时进行DNSSEC,否则很容易遍历标准DNS查询,而无需AXFR,区域并重建区域文件。有工具可以做到这一点。
还要注意,在线上的各种提供商会向您出售许多TLD的区域文件和/或所有域名的列表,他们通过各种方式获得了该域名(其中一个主意是:您采用打开的区域文件(例如).COM
,对于TLD则.example
一一查询。您在中找到的所有名称.COM
,除了可以根据在搜索到的TLD中最常用的语言进行词典漫游之外,还可以给您带来一些想法。