你的 DNS 记录传遍全球了吗?看一眼就知道

改了 DNS 记录之后最烦人的就是等传播——你这边在终端里改了,浏览器刷新还是旧 IP,你也不知道是新记录还没传到,还是自己搞错了。于是你打开 dnschecker.org,选记录类型,等页面加载,看完再切回终端…… 如此往复。

DNSGlobe 把这个流程压缩成了一条命令 + 一张世界地图。它是一个终端 TUI 工具,同时查询全球 34 个公共 DNS 解析器,把结果实时显示在一张 ASCII 世界地图上——哪些解析器已经收到了新记录、哪些还没有、答案是否一致,扫一眼就知道。

项目由 514-labs 用 Rust 编写,MIT 开源,发布才两天就拿到了 536 Star。最新版本 v0.3.1,4 个 Release。

一行命令,34 个节点

dnsglobe example.com

就这么简单。默认查询 A 记录,34 个遍布全球的公共 DNS 解析器同时发出请求——Google、Cloudflare、Quad9、OpenDNS…… 覆盖北美、欧洲、俄罗斯、中东、东亚、澳大利亚、新西兰和巴西。如果你的终端宽度 ≥150 列,你会直接看到一张世界地图,每个解析器位置都有一个彩色圆点:

  • 绿色——答案和多数派一致
  • 紫色——答案和其他节点不同(可能有异常)
  • 红色——查询出错
  • 黄色——正在查询中

结果按一致度分组——如果一批解析器都返回了相同的记录集,它们会被折叠成一组显示,不用看几十行重复数据。

Watch 模式:等到 100% 自动停

真正解决「DNS 传播焦虑」的功能是这个:

dnsglobe example.com --watch

启动后每 30 秒自动重新查询所有解析器,地图上的颜色会逐渐从黄色变成绿色。当所有节点都返回了相同的最新记录时(传播率达到 100%),程序自动退出。

你不需要盯着它看——放在终端角落让它跑着就好,好了它会自己停。

Anycast 检测

很多大型 DNS 服务(Cloudflare、Google、Quad9、OpenDNS 等)使用 Anycast 路由,同一个 IP 在不同地点会路由到不同的物理服务器。DNSGlobe 能检测出请求被哪个 POP(接入点)处理了,以位置代码的形式显示出来,比如 →YUL 表示 Montreal 节点在响应。

这个功能对于排查「为什么不同地方的查询结果不一样」很有帮助——有时候不是记录没传到,而是 Anycast 路由到了不同 POP 上的不同缓存状态。

技术细节

DNSGlobe 做到「准确实时」的底气来自于几个技术选择:

  • 直连查询——不走本地 DNS 缓存,直接向每个公共解析器发起查询
  • EDNS0——支持 EDNS0 扩展,获取更完整的应答
  • TCP 回退——当 UDP 应答被截断时自动切到 TCP
  • Round-robin 分组——如果一个域名有多条 A 记录(负载均衡场景),只要解析器返回的子集属于同一个 IP 池,就视为一致
  • 支持 7 种记录类型——A、AAAA、CNAME、MX、NS、TXT、SOA,涵盖日常诊断所需

可脚本化输出

TUI 是默认模式,但如果你需要在脚本或 CI 中使用它:

dnsglobe example.com --once

这个模式输出 JSON 格式的结果,不含任何终端控制字符,可以直接 pipe 给 jq 处理。

自定义解析器

内置的 34 个解析器基本覆盖了全球主要区域,但作者也坦诚地说明了局限:「很多大型 ISP 的 DNS 服务器(尤其是非洲的主要运营商)会拒绝来自外部网络的查询」,所以它们不在内置列表中。如果你有自己的特定需求,可以通过 ~/.config/dnsglobe/config.toml 添加自定义解析器。

我的看法

DNSGlobe 是一个典型的「单点问题深度解决」的工具。它不做什么宏大叙事,只做一件事——查 DNS 传播——但把这件小事做到了极致。

同类工具有很多(dnschecker.org、whatsmydns.net、dig + 手动选服务器),但 DNSGlobe 的体验提升来自于几个巧妙的交互设计:世界地图让「哪里还没传到」一目了然,Watch 模式让你不用反复手动刷新,Anycast 检测揭示了大多数工具忽略的信息维度。

536 Star / 2 天的增长速度也说明这种需求确实存在——改 DNS 记录是几乎所有开发者和运维人员的日常操作,但在此之前没有一个足够好的终端工具来解决「查询+等待」这个流程。

当然,它还有一些改进空间:34 个节点覆盖了五大洲但非洲节点偏少,watch 模式目前固定 30 秒轮询不能自定义间隔,对于 TUI 不熟悉的用户初次使用会有一点学习成本。但作为一个刚发布两天的 v0.3.1 项目,方向已经非常对了。


项目地址:514-labs/dnsglobe · 许可:MIT · 🌟 536 Stars(截至 2026-07-06) · 最新发布:v0.3.1 · 安装:brew install 514-labs/tap/dnsglobecargo install dnsglobe