一次递归 DNS 查询,逐跳详解
浏览器
想访问 example.com
解析器
运营商 / 1.1.1.1
根 + TLD
谁负责 .com?
权威服务器
真正的答案
这条链路上的每一跳本身都是一次 DNS 查询,之后都会被缓存
如何查找网站的 IP 地址(5 种可靠方法)
查找网站的 IP 地址只需几秒钟。真正有用的本事,是看懂您找到的是哪一个地址:源站服务器、CDN 边缘节点,还是负载均衡器,因为这决定了这个数字对您是否有用。
下面是五种方法,从最快到最详细,最后会如实说明如何解读结果。
方法 1:使用在线查询工具
这是最快的方式,也是唯一不需要终端的方式。把域名粘贴到首页的域名转 IP 查询中,一次服务端查询就能得到 A 记录(IPv4)、AAAA 记录(IPv6)、域名服务器,以及 MX、CNAME 和 TXT 记录。
相比本地命令,它的优势在于查询是从一台缓存干净的服务器上发起的,所以您看到的不会是自己电脑数小时前缓存下来的过期应答。如果有多个域名要检查,批量模式一次最多可解析 50 个。
方法 2:ping,快速且随处可用
ping 在发送任何数据之前会先解析名称,并打印出解析到的地址。在 Windows、macOS 和 Linux 上的表现完全一致。
ping example.com第一行会显示解析出的地址:PING example.com (93.184.216.34)。您想要的信息已经到手,按 Ctrl+C 即可停止。
方法 3:nslookup,跨平台的标准工具
Windows、macOS 和大多数 Linux 发行版都内置了它,正是为解决这个问题而设计的。
nslookup example.com输出会把作答的解析器(Server:)与应答本身分开显示。如果出现 Non-authoritative answer(非权威应答)这一行,只表示结果来自缓存而不是域名自己的域名服务器,这是正常情况,并不是警告。
nslookup example.com 1.1.1.1当您怀疑缓存已经过期时,第二种用法非常有用:您直接询问 Cloudflare 的解析器,而不是网络分配给您的那个解析器。
方法 4:dig,专业人士的首选
dig 随 macOS 和 Linux 一同提供(在 Windows 上,请使用 WSL 或安装 BIND 工具)。它能给出精确、可脚本化的输出,其中包括 TTL。
dig +short example.com A
dig +short example.com AAAAdig example.com在完整输出中,ANSWER SECTION 里位于 IN A 之前的数字,是剩余的 TTL(以秒为单位),即该解析器还会继续复用其缓存副本多久。反复查询时观察这个数字不断减小,是了解缓存如何运作最直观的方式。
dig @ns1.example.com example.com这会跳过所有缓存,直接询问源头。如果结果与您在别处看到的不一致,说明您正在目睹传播的过程。
方法 5:浏览器开发者工具
当您想知道实际在为当前页面提供服务的地址(包括任何重定向)时,这个方法很有用。
- 按
F12(macOS 上为Cmd+Option+I)打开开发者工具,选择 网络(Network)标签页。 - 重新加载页面。
- 点击第一个文档请求,然后打开 标头(Headers)面板。
- 在 常规(General)下找到 远程地址(Remote Address),这就是浏览器实际连接的 IP,并附带端口。
五种方法对比
| 方法 | 最适合 | 是否显示 TTL? | 是否需要终端? |
|---|---|---|---|
| 在线工具 | 一次获取所有记录类型,缓存干净 | 否 | 否 |
ping | 在任何地方快速得到答案 | 否 | 是 |
nslookup | 查询指定的解析器 | 部分 | 是 |
dig | 精确查询与脚本化 | 是 | 是 |
| 开发者工具 | 为这个页面提供服务的确切地址 | 否 | 否 |
那么,您找到真正的服务器了吗?
多半没有,而这在意料之中。稍具规模的网站大多位于 CDN 或负载均衡器之后,所以您解析到的地址属于这些基础设施。
为什么查询结果显示的是 CDN,而非源站
访客
查询该域名
CDN 边缘节点
104.21.x.x
DNS 返回的就是它
源站服务器
真实 IP,从不暴露
以下迹象说明您看到的是共享基础设施,而不是源站服务器:
- 对该地址做反向 DNS,解析出的是服务商的主机名(
*.cloudflare.com、*.amazonaws.com、*.fastly.net)。 - 同一个地址为许多互不相关的域名提供服务。
- 从不同位置查询,或重复查询时,得到的是不同的地址。
核心要点
这五种方法中的任何一种,给您的都是 DNS 所公布的地址。这是一个真实、正确的答案,只不过它回答的是域名对外的“前门”,而不一定是背后的那台机器。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
本主题的免费工具
常见问题
相关阅读
一次递归 DNS 查询,逐跳详解
浏览器
想访问 example.com
解析器
运营商 / 1.1.1.1
根 + TLD
谁负责 .com?
权威服务器
真正的答案
这条链路上的每一跳本身都是一次 DNS 查询,之后都会被缓存
DNS 如何工作:从域名到 IP 地址
互联网的电话簿,从头到尾追踪一遍:从输入域名,到第一个数据包抵达服务器,这短短几毫秒里究竟发生了什么。
为什么查询结果显示的是 CDN,而非源站
访客
查询该域名
CDN 边缘节点
104.21.x.x
DNS 返回的就是它
源站服务器
真实 IP,从不暴露
为什么 CDN 会隐藏源站 IP,而且这正是用意
查询一个域名,却得到了 Cloudflare 的地址?这说明系统运转正常。下面讲讲它背后是什么,以及您为什么看不穿。
几乎每个 DNS 区域都会遇到的记录
什么是 DNS A 记录?何时需要 AAAA 记录
真正把您的域名指向服务器的那条记录:它的结构、对应的 AAAA 记录,以及最容易让网站出故障的四个错误。