当您执行 whois 时,Linux 会询问谁?

Bas*_*asj 12 dns whois

当你这样做时:

$ whois stackoverflow.com
Run Code Online (Sandbox Code Playgroud)

你的Linux是不是先做DNS查询,找到stackoverflow.com的IP,然后直接在那里查询信息?

或者它是否询问“root”whois 服务器(“root whois 服务器”的 IP 是硬编码在 Linux 发行版中,以类似于的方式/etc/bind/db.root?),然后委托给另一个提供信息的 whois 服务器?

什么是连接流?

my computer doing `whois ...` ---> root whois server ---> another whois server ---> information
Run Code Online (Sandbox Code Playgroud)

或者

my computer doing `whois ...` ---> DNS server (?) ---> ... ?
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 13

如果您使用的是Marco d'Itri'swhois,则可以添加--verbose选项以查看它在做什么。对于 stackoverflow.com,它首先询问 whois.verisign-grs.com(请参阅其WHOIS 服务器列表),这会为其提供许多信息,包括 Stack Overflow 的注册商是 Name.com 及其 WHOIS服务器是 whois.name.com;所以它然后继续询问whois.name.com。

该协议记录在RFC 3912 中。该whois手册页也有一些有用的指针。


Pat*_*zek 12

斯蒂芬回答了核心部分,但您还有一些我想解决的问题:

  1. Whois 是一个定义不明确的协议。没有层次结构,没有根 whois 等。实际上,whois 系统中没有与 DNS 相关的任何内容,您应该首先将它们完全分开,因为除了它们从同一来源(注册表)获取数据之外数据库),它们完全独立运行。
  2. 每个 TLD 注册管理机构在这方面的运作方式各不相同。gTLD 本身就是一个案例:根据 ICANN 合同,目前,每个注册商都有义务让 whois 服务器为其处理的所有名称进行应答。注册管理机构有相同的要求。注册表 whois 输出列出了注册商 whois 服务器(但正如我在上面的评论中所写的那样,这最近略有变化 - 事实上没有充分的理由 - 这破坏了许多 whois 客户端)主要是由于一个很快就会消失的历史原因:过去(现在仍然适用于 .COM/.NET - .JOBS 最近有点切换,但以前在同一条船上,请参阅https://www.icann.org/resources/pages/thick-whois-transition-policy-2017- 02-01-cn) 注册管理机构,其中“瘦”意味着注册管理机构不存储有关联系人的数据,只有注册服务机构存储。这意味着,如果您真的想拥有有关域名的数据并找到在出现问题时联系谁(这曾经是——现在仍然是——whois 协议的最初目标),您需要首先查询注册机构的 whois 服务器以获取基本信息集并发现注册商 whois 服务器,然后联系该注册商 whois 服务器以访问所有联系信息。这解释了为什么今天 .COM/.NET 的注册表输出仅提供有关域名服务器、日期和状态的数据。和注册商 whois 服务器名称,whois 客户端尝试遵循但有时不能,因为事情发生了变化(见我上面的评论)
  3. ccTLD 几乎总是不会这样工作,即使使用注册商,查询注册机构的 whois 服务器可以让您返回所有需要的结果,即使某些结果丢失(例如出于隐私原因),您也不需要将注册商的 whois 服务器查询为注册管理机构并没有要求他们为他们处理的 ccTLD 运行它(但一些注册服务商仍然这样做)。例如,这解释了您对.fr域名的观察。
  4. 一些 whois 客户端对 whois 服务器的地址进行硬编码,一些whois.nic.$TLD默认尝试,通常用作注册中心,$TLD通常nic.$TLD用作主要操作域名。
  5. IANA 处理https://www.iana.org/domains/root/db和每个注册页面中的注册列表,例如https://www.iana.org/domains/root/db/fr.html你将有一行WHOIS Server列出与所选注册表相关的 whois 服务器。但请注意,它有时可能会过时或出错。您还可以通过对 TLD 执行 whois 查询来访问此数据whois.iana.org,它会为您提供有关相关注册管理机构的数据,包括whois密钥中的whois 服务器。
  6. 还有一个技巧。如果您进行 DNS 查询(但请记住,这一点不会使第一点无效),$TLD.whois-servers.net因为它将为您提供相应的 whois 服务器的名称$TLD,作为 CNAME 记录。一些 whois 客户端可能会使用这个技巧,但我对此表示怀疑(whois尽管GNU客户端可能是其中之一,或者可能是 FreeBSD 客户端)。请注意,该计划纯粹是私人的,即使它应该是私有的,也不会由参与所有这些活动的最高机构(如 ICANN 或 IANA)处理。例如dig uk.whois-servers.net +short会给你:whois.nic.uk.。这样做的魅力在于,如果新注册管理机构/顶级域名 (TLD) 生效时(非常罕见)或(更频繁)发生变化,则应该对其进行更新。
  7. 一些注册管理机构使用SRV专用 DNS 记录类型发布他们的 whois 服务器地址端点,以指定域名处理特定服务的位置。因此,如果您这样做,dig _nicname._tcp.fr +short您确实会得到0 0 43 whois.nic.fr.除了两个未使用的第一个数字(但可用于负载平衡/故障转移)之外,要联系的端口号 ( 43) 和服务器名称whois.nic.fr以获取nicname,即whois其下的服务官方注册名称 ( https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml ),用于fr领域。它没有被很多注册管理机构使用,但它应该是,SRV 记录准确地提供了这种分布式自动发现机制,它甚至可以在 DNS 树的任何级别工作,因此它适用于注册管理机构和“子”注册管理机构等.

请注意,一旦 RDAP(一种较新的协议)取代 whois,上述许多内容都会发生变化。它已经由多个 RFC 定义并被一些注册管理机构使用(在 RIR 的生产中,在一些域名注册管理机构的实验中),但在 gTLD 中尚未强制注册管理机构和注册服务商使用它(出于非技术原因)世界上,ccTLD 注册管理机构似乎不愿意放弃他们当前的 whois 服务器,转而使用 RDAP 服务器。


gma*_*ong 4

您的 WHOIS 客户端询问 WHOIS 服务器(在 TCP 端口 43 上),它会直接响应。Debian 的 WHOIS 客户端有一个硬编码的服务器列表,可以自动从中选择。IANA 还提供 WHOIS 服务。

来源:RFC 3912