514-labs/dnsglobe

GitHub: 514-labs/dnsglobe

dnsglobe 是一个 Rust 编写的终端 TUI 程序,用于在全球 34 个公共 DNS 解析器上实时可视化追踪 DNS 记录的传播状态。

Stars: 872 | Forks: 27

# dnsglobe [![crates.io](https://img.shields.io/crates/v/dnsglobe)](https://crates.io/crates/dnsglobe) [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE) **一个用于终端的全球 DNS 传播检查工具** —— 一个 Rust TUI 程序,它可以并行查询全球 34 个公共 DNS 解析器,对比它们的答案,并在世界地图上展示你的记录的传播情况。 ![dnsglobe 演示 —— 检查某域名在全球 34 个解析器上的 A 和 NS 记录](https://raw.githubusercontent.com/514-labs/dnsglobe/main/demo/demo.gif) 你可以把它看作终端版的 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, 可视化界面, 监控工具, 网络流量审计, 网络运维, 通知系统