DNSGlobe – 用于观察全球 DNS 解析传播情况的 Rust TUI 工具
DNSGlobe – Rust TUI to watch DNS propagate around the world

原始链接: https://github.com/514-labs/dnsglobe

**dnsglobe** 是一款基于 Rust 开发的高性能终端用户界面(TUI)工具,可作为实时全球 DNS 传播检查器使用。它与 *whatsmydns.net* 等网页端工具类似,能够并行查询全球 34 个公共 DNS 解析器,从而提供您域名记录状态的本地化视图。 主要功能包括: * **实时监控:** 提供“监视模式”,可不断轮询记录,直至达到 100% 传播。 * **智能分组:** 自动对轮询(Round-robin)DNS 结果进行分组,以区分一致的记录和异常值。 * **可视化数据:** 在宽屏终端上显示世界地图及传播进度条,直观展示全球状态。 * **可靠查询:** 通过使用 EDNS0 和 TCP 回退(fallback)进行直接查询,从而绕过缓存。 **入门指南:** * **安装:** 使用 Homebrew (`brew install 514-labs/tap/dnsglobe`)、`cargo`,或从 GitHub 下载预编译的二进制文件。 * **使用:** 运行 `dnsglobe ` 即可启动。该直观界面支持实时编辑、切换记录类型(A、MX、TXT 等)以及键盘导航。 *dnsglobe* 专为开发人员和系统管理员设计,提供了一种直接在终端验证 DNS 变更的高效且可脚本化的方式。

**DNSGlobe** 是一款基于 Rust 语言的终端用户界面(TUI),用于监控全球 DNS 更新。它的发布在 Hacker News 上引发了关于技术术语及现代开发实践的热烈讨论。 **“传播”(Propagation)的神话** 以用户 *teddyh* 为首的批评者认为,“DNS 传播”是一个误区。他们坚持认为 DNS 记录并非在地理意义上“传播”;相反,各个 DNS 解析器是根据自身的 TTL(生存时间)设置来缓存记录,并独立使其过期。他们认为使用世界地图可视化会加剧人们对 DNS 工作原理的误解,并指出缓存刷新是不同步的,由解析器行为而非物理距离决定。支持者则反驳称,“传播”是一个被广泛理解的“行业术语”,它有效地描述了变更在全球范围内可见所需的时间。 **开发趋势** 该项目还因被贴上“氛围编程”(vibe-coded)——即使用 AI 工具快速生成——的标签而受到审视。批评者指出了代码效率低下和潜在的错误,而其他人则为该项目辩护,称其是现有网页版 DNS 检测工具的一种实用的无广告替代品。作者 *Callicles* 对反馈表示认可,并迅速实现了所要求的功能,这凸显了 AI 辅助开发所带来的快速迭代能力。
相关文章

原文

crates.io license

A global DNS propagation checker for your terminal — a Rust TUI that queries 34 public DNS resolvers around the world in parallel, compares their answers, and shows the propagation of your record on a world map.

dnsglobe demo — checking A and NS records for a domain across 34 resolvers worldwide

Think dnschecker.org / whatsmydns.net, but in your terminal, with watch mode: start a check and it re-polls until the record has propagated everywhere.

Resolvers span the global anycast networks (Google, Cloudflare, Quad9), North America, Europe, Russia, the Middle East, East Asia, and the southern hemisphere (Telstra AU, SafeSurfer NZ, UOL BR) — each queried directly, so you see every server's own current view of the record.

Each resolver is queried directly (no cache, EDNS0, TCP fallback for truncated answers), so what you see is each server's own current view of the record. Answers sharing any record are grouped together — so round-robin DNS (each resolver caching a different subset of an IP pool) counts as one consistent answer, not twenty conflicting ones. The propagation gauge shows how many resolvers are in the majority group; outliers are flagged ≠ DIFFERS once all results are in.

On terminals ≥150 columns wide, a world map appears on the right with one dot per resolver, colored by status (green agrees, magenta differs, red error, yellow in flight).

Install:

brew install 514-labs/tap/dnsglobe   # Homebrew (macOS/Linux)
cargo install dnsglobe               # from crates.io
# or grab a prebuilt binary from the GitHub Releases page

Run:

dnsglobe                            # start empty, type a domain
dnsglobe example.com                # query immediately and watch
dnsglobe --once example.com TXT    # no TUI: print results, exit (for scripts)
Key Action
type / ⌫ / Del edit domain
←/→ / Home/End move cursor in the domain field
Enter start the check and watch: re-polls every 30 s until propagation reaches 100%
Ctrl+R stop or resume watching
Tab / Shift-Tab select record type (A, AAAA, CNAME, MX, NS, TXT, SOA)
↑/↓ / PgUp/PgDn scroll the resolver table
Ctrl+U clear domain
Esc / Ctrl+C quit
  • Several resolvers are anycast networks, so the responding node is the one nearest to you; the location column is the operator's home region.
  • Resolver list lives in src/resolvers.rs — add or remove entries freely. Every entry was verified to answer external queries; many well-known ISP resolvers (and, notably, all major African ones) refuse queries from outside their network, so they can't be included.
联系我们 contact @ memedata.com