我们知道域名可以解析为 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
答案1
首先,根本不存在“IP 的域名”这种东西,因为这种关系不是一对一的,而是多对多的。一个域名可以指向多个地址,多个域名可以指向同一个地址,多个地址可以指向同一个域名,一个地址可以指向多个域名。
其次,DNS 没有自动反向查找(“查找指向此地址的所有域”)。这在很早以前就曾计划过,但很快弃– DNS 是一个具有数百万个域名服务器的分布式系统,甚至不可能列出所有名称服务器,更不用说查询所有名称服务器了。
相反,DNS只有静态反向查找(“这个地址指向哪个域?”又名rDNS),不同之处在于反向查找数据由手动- 有不地址和域名之间的自动双向关系。创建反向查找数据完全由地址所有者决定,许多管理员只是不去做。
因此命令nslookup <addr>
或是host <addr>
正确的,但它们只能显示地址所有者提供的信息(这些信息可能是错误的、过时的或缺失的)。不命令会自动查找指向该地址的所有域。
(nslookup a.b.c.d
是一种快捷方式 - 实际上它被翻译为nslookup -q=PTR d.c.b.a.in-addr.arpa
,对于 IPv6 使用 in6.arpa 也是类似的。)
如果多个域名指向一个地址,则几乎从不找到指向所有这些域的地址。如果该地址有反向 DNS,那么它通常只指向一个描述服务器本身的域,而不是其上托管的任何网站。
答案2
如何获取某个 IP 的域名?
简短回答:您可能无法这样做。IP 地址不要求提供反向查找,因此有许多 IP 地址没有与之关联的任何反向 DNS 查找区域。
长答案:DNS 的设计初衷实际上是从人类可读的名称到 IP 地址进行查找。当您执行常规 DNS 查询时,例如“www.my-example.com”,DNS 查询实际上是一系列从最不具体到最具体的查询,询问“域 example.com 中主机 www 的 IP 地址是什么?”它可能看起来有点像这样(简单来说):
- 根服务器被要求提供有关“com”的信息
- 向“com”服务器请求有关“my-example”的信息
- 向“my-example”服务器请求有关“www”的信息
- 您收到的回复是“1.2.3.4”
但是,当您对 IP 地址(例如 1.2.3.4)进行 DNS 查询时,这种方法效果不佳,主要是因为与主机/域/URL 不同,最具体的信息点位于末尾。因此 DNS 稍微改变了一些东西,并询问“3.2.1.IN-ADDR-ARPA 中主机 4 的服务器和域是什么?”这可能看起来更像这样(简单):
- 向“IN-ADDR-ARPA”服务器请求有关“3.2.1”的信息
- 向“3.2.1”服务器请求有关“4”的信息
- 您收到的响应是“www.my-example.com”
请注意,虽然一台服务器可能同时包含“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”或其他完全不同的内容。
笔记:本回答大部分内容抄自我自己的答案发布在这里。