我们知道域可以解析为 IP 地址。我们可以使用该nslookup
工具获取域的 IP 地址。
我怎样才能得到IP的域名?
我的意思是,当我提供 IP 时,我就可以获得域。
编辑-01
当我使用 时nslookup <x.x.x.x>
,我无法获取其域名。
[root@localhost ~]# nslookup 40.224.226.185
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find 185.226.224.40.in-addr.arpa.: NXDOMAIN
首先,根本就没有“一个IP的域”这样的东西,因为这种关系不是一对一的,而是多对多的。一个域可以指向多个地址,多个域可以指向同一个地址,多个地址可以指向同一个域,一个地址可以指向多个域。
其次,DNS 没有自动反向查找(“查找指向该地址的所有域”)。这曾经是一个计划,在很早的时候,但很快就放弃了——DNS 是一个分布式系统,有数百万个域名服务器,甚至不可能列出所有的域名服务器,更不用说查询它们了。
相反,DNS 只有静态反向查找(“这个地址指向哪个域?”又名 rDNS),不同之处在于反向查找数据是手动管理的——地址和域名之间没有自动双向关系。创建反向查找数据完全取决于地址所有者,许多管理员根本不这样做。
所以命令
nslookup <addr>
orhost <addr>
是正确的,但它们只能显示地址所有者提供的信息(可能是错误的、过时的或丢失的)。没有命令可以自动查找指向该地址的所有域。(
nslookup a.b.c.d
是一个快捷方式——实际上它被翻译成nslookup -q=PTR d.c.b.a.in-addr.arpa
, 并且对于使用 in6.arpa 的 IPv6 类似。)在许多域指向一个地址的情况下,您几乎永远不会发现该地址指向所有这些域。如果该地址完全具有反向 DNS,那么它通常只会指向一个描述服务器本身的域,而不是托管在其上的任何网站。
简短回答:您可能无法这样做。不要求 IP 地址提供反向查找,因此有许多 IP 地址没有与之关联的任何反向 DNS 查找区域。
长答案:DNS 的真正设计目的是从人类可读的名称到 IP 地址进行查找。当你进行正常的 DNS 查询时,比如“www.my-example.com”,DNS 查询实际上是一系列从最不具体到最具体的查询,询问“域 example.com 中主机 www 的 IP 地址是什么? “ 它可能看起来有点像这样(简单化):
但是,当您对 IP 地址(例如 1.2.3.4)进行 DNS 查询时,这将无法正常工作,主要是因为与主机/域/URL 不同,最具体的信息点在末尾。所以 DNS 稍微改变一下,询问“3.2.1.IN-ADDR-ARPA 中主机 4 的服务器和域是什么?” 这可能看起来更像这样(简单化):
请注意,虽然一台服务器可能同时包含“my-example.com”区域和“3.2.1.IN-ADDR-ARPA”区域的信息,但它们也可能是两台不同的服务器。
此外,服务器通常由两家不同的公司运营。例如,如果您付费让 CompanyX 在他们的服务器上托管您的网站,您可以控制指向 CompanyX 服务器(可能托管来自不同客户端的许多不同域)的 IP 地址的域的 DNS 区域,但 CompanyX 控制区域IP地址的反向查找。他们对该 IP 地址(如果存在)的反向查找可能会反映 CompanyX 的服务器/域。
即使一个实体有权控制正向和反向区域,他们也不需要为任何一个提供 DNS 服务。您完全有权注册域名,但不为其提供任何 DNS 服务。
最终的结果是,这意味着即使你确实得到了反向查找的响应,它也可能与你正在访问的服务的域名无关。您可能正在访问“www.my-example.com”,但对该 IP 地址的反向查找可能会为您提供“server37.companyx.com”或其他内容。
注意:这个答案的大部分内容是从我在这里发布的自己的答案中复制的。