514-labs/dnsglobe
GitHub: 514-labs/dnsglobe
dnsglobe 是一个 Rust 编写的终端 TUI 程序,用于在全球 34 个公共 DNS 解析器上实时可视化追踪 DNS 记录的传播状态。
Stars: 872 | Forks: 27
# dnsglobe
[](https://crates.io/crates/dnsglobe)
[](LICENSE)
**一个用于终端的全球 DNS 传播检查工具** —— 一个 Rust TUI 程序,它可以并行查询全球 34 个公共 DNS 解析器,对比它们的答案,并在世界地图上展示你的记录的传播情况。

你可以把它看作终端版的 dnschecker.org / whatsmydns.net,它还带有 watch 模式:启动一次检查,它会不断重复轮询,直到记录完成全球传播。
解析器覆盖了全球任播网络(Google、Cloudflare、Quad9)、北美、欧洲、俄罗斯、中东、东亚以及南半球(澳大利亚的 Telstra、新西兰的 SafeSurfer、巴西的 UOL)—— 每一个解析器都会被直接查询,因此你能看到每台服务器当前对该记录的真实视图。
每个解析器都会被直接查询(无缓存,使用 EDNS0,对截断的答案启用 TCP 回退),因此你看到的就是每台服务器当前对该记录的真实视图。共享任何相同记录的答案会被归为一组 —— 因此对于轮询 DNS(每个解析器缓存了 IP 池中不同的子集),它会被算作一个一致的答案,而不是二十个相互冲突的答案。传播进度表显示了有多少解析器处于多数分组中;当所有结果返回后,异常值会被标记为 `≠ DIFFERS`。
在宽度大于等于 150 列的终端上,右侧会显示一张世界地图,每个解析器对应一个圆点,其颜色代表了状态(绿色表示一致,洋红色表示有差异,红色表示错误,黄色表示查询进行中)。
## 用法
安装:
```
brew install 514-labs/tap/dnsglobe # Homebrew (macOS/Linux)
cargo install dnsglobe # from crates.io
# 或者从 GitHub Releases 页面获取预构建的 binary
```
运行:
```
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)
```
### 按键
| 按键 | 操作 |
| -------------- | ------------------------------- |
| 输入字符 / ⌫ / Del | 编辑域名 |
| ←/→ / Home/End | 在域名输入框中移动光标 |
| Enter | 开始检查并监听:每 30 秒重新轮询一次,直到传播达到 100% |
| Ctrl+R | 停止或继续监听 |
| Tab / Shift-Tab | 选择记录类型 (A, AAAA, CNAME, MX, NS, TXT, SOA) |
| ↑/↓ / PgUp/PgDn | 滚动解析器表格 |
| Ctrl+S | 切换表格排序:解析器 / 位置 / 时间 / 状态 / 答案 |
| Ctrl+U | 清空域名 |
| Esc / Ctrl+C | 退出 |
## 说明
- 有几个解析器属于任播网络,因此响应的节点是距离你最近的那一个;“位置”列显示的是运营商的总部所在地区。
- 解析器列表位于 `src/resolvers.rs` 文件中 —— 你可以自由添加或删除条目。
每个条目都经过验证,能够响应外部查询;许多知名的 ISP 解析器(尤其是所有主要的非洲解析器)会拒绝来自其网络外部的查询,因此无法将它们包含在内。
标签:DNS, Docker 部署, Rust, 可视化界面, 监控工具, 网络流量审计, 网络运维, 通知系统