网络诊断 · doggo

doggo DNS 查询教程:指定解析器与加密查询

同一个域名在两台设备上表现不同,可以先用 doggo 单独查 DNS。它能指定解析器和查询协议,也能输出 JSON,方便比较记录、状态和查询时间。

官方下载 ↗官方资料开始 DNS 查询
WindowsmacOSLinux

哪些问题适合用 doggo

域名在一台设备上打不开,或两种解析器返回不同地址时,可以先用 doggo 把 DNS 单独拿出来查。表格便于现场看回答,JSON 适合保存结果。

DNS 决定域名如何得到地址,但后续还有 TCP/UDP、TLS 和应用响应。先将 DNS 与连接问题分开:解析有回答后,如果网页仍失败,可用 NextTrace观察路线或用 Wireshark检查握手。

安装与命令检查

从 doggo 官方 Releases下载对应系统与架构的压缩包,或按 官方安装说明使用已有软件包管理器。支持平台包含 Windows、macOS 与 Linux,具体资产以当前发行页为准。

示例代码
brew install doggo

上面适用于已安装 Homebrew 的 macOS/Linux。Windows 已有 Scoop 时可以执行 scoop install doggo。直接解压二进制的用户,应把程序所在目录加入 PATH,或在该目录使用 ./doggo、.\doggo.exe。

安装后执行 doggo --help,确认命令与参数存在。报“找不到命令”通常是路径或安装步骤问题,不是 DNS 故障。记录所装版本,避免用旧程序直接套用新文档中的选项。

查询 A、AAAA 并指定解析器

用文档示例域名查询 A 记录,再显式指定一个解析器。普通地址未写协议前缀时使用 UDP:

示例代码
doggo example.com A
doggo example.com A @1.1.1.1 --timeout=5s
doggo example.com AAAA @1.1.1.1 --timeout=5s

A 是 IPv4 地址记录,AAAA 是 IPv6 地址记录。@1.1.1.1 指定接收查询的解析器;--timeout=5s 限制查询等待时间。公共解析器在你的网络中可能不可达,可换成你有权使用且确认支持对应协议的解析器。

查询 AAAA 并不要求一定通过 IPv6 连接解析器。记录类型与传输网络不同;-4、-6 控制解析器连接所用地址族,A、AAAA 控制要查询哪类记录。对照时要保持查询域名和记录类型一致。

doggo 对照查询先固定域名和记录类型,再选择解析器与传输协议,最后记录状态、答案、TTL 和时间。
查询对照的记录顺序。比较解析器时固定协议,比较协议时尽量固定服务。

UDP、TCP 与加密查询示例

doggo 根据解析器地址前缀选择协议。下面每条独立运行,不需要同时执行,也不需要更改系统 DNS:

示例代码
doggo example.com A @udp://1.1.1.1 --timeout=5s
doggo example.com A @tcp://1.1.1.1 --timeout=5s
doggo example.com A @https://cloudflare-dns.com/dns-query --timeout=5s
doggo example.com A @tls://1.1.1.1 --tls-hostname=cloudflare-dns.com --timeout=5s
doggo example.com A @quic://dns.adguard.com --timeout=5s

https:// 需要完整 DoH 端点,不能只填服务首页;tls:// 选择 DoT,上例显式给出证书校验主机名;quic:// 选择 DoQ。不同协议的解析器可能由不同服务运营,回答差异不一定来自协议。

DoH、DoT、DoQ 保护客户端到解析器这一段传输,解析器仍能处理你查询的域名。它们不会把后续网站访问自动变成匿名或代理连接。遇到证书问题先检查时间、主机名与服务配置,保留校验,不用关闭证书检查来掩盖错误。

读取记录、TTL 和回答状态

doggo 查询结果的关键字段
字段或现象含义与判断
NAME / TYPE确认回答是否对应查询域名与记录类型,留意别名链。
ADDRESS 或记录数据查看实际返回地址或记录内容;不预设 example.com 的固定 IP。
TTL记录可缓存的剩余时间线索,不是连接延迟,也不说明网站速度。
NAMESERVER确认回答来自哪个解析器,避免比较时把不同服务混在一起。

多个地址可能来自正常的 CDN 或负载均衡;不同解析器也可能因缓存、位置或策略给出不同回答。没有某类记录不一定是域名不存在:例如有 A 而没有 AAAA,仍可通过 IPv4 访问。

出现 NXDOMAIN 表示所查询名称被报告不存在;没有该类型答案、SERVFAIL 和等待超时属于不同情况。应记录状态与错误文本,而不是把所有空结果都归为“DNS 污染”。

保存 JSON 与查询对照

需要留档时用 --json,先看终端输出,再写入一个新文件。比较时把域名、记录类型、解析器和查询时间一起保存。

示例代码
doggo example.com A @1.1.1.1 --json --timeout=5s
doggo example.com A @1.1.1.1 --json --timeout=5s > dns-example.json

第一条先查看结构,第二条保存结果。--short 适合快速看回答,但可能省略排查所需上下文。记录运行时间、网络、解析器、协议、记录类型与实际结果,JSON 字段按本机版本输出为准。

要比较协议影响,尽量选择同一服务的不同协议端点;要比较服务差异,则固定协议。缓存和连接建立成本也会影响耗时,单次查询快慢不能当作长期排名。DNS 结果文件可能包含内部域名,分享前检查内容与个人路径。

超时、证书和结果差异

  1. 命令不能启动:检查 PATH、架构与执行权限,先让 --help 正常显示。
  2. 查询超时:确认解析器地址、协议、端口与网络访问条件;用短时普通 DNS 对照,区分服务不可达与域名问题。
  3. DoH 失败:确认是 DNS 查询端点而非网页地址,查看具体 HTTP 或连接错误。
  4. DoT/DoQ 失败:核对解析器支持、证书主机名与系统时间,不把 TLS 失败当作 NXDOMAIN。
  5. 查询有答案但网站不通:继续验证实际连接、IPv4/IPv6 路由和应用代理。

浏览器可能使用自己的加密 DNS,代理客户端也可能有独立解析规则;命令行查询不一定复现应用选择。反馈时注明你测的是哪个解析器,不要把一次指定查询当作所有应用的 DNS 状态。可继续参考 分层排查入口。

更新后保留同样的查询条件

沿原安装渠道更新,再运行原来的查询命令,检查参数和 JSON 输出是否有变化。回答内容还受缓存与解析器策略影响,连同时间一起保存。

常见问题

查询 AAAA 必须使用 IPv6 网络吗?

不必。AAAA 是要查询的记录类型,而 -4/-6 决定连接解析器的地址族。可以经 IPv4 查询 AAAA,也可以经 IPv6 查询 A。

doggo 会修改电脑的系统 DNS 吗?

本文示例只为单次命令指定解析器,不修改系统 DNS。浏览器或代理客户端仍可能采用自己的解析设置。

DoQ 和 DoH 的命令可以互换前缀吗?

不能随意替换。解析器必须支持对应协议,DoH 还需要完整查询路径。使用官方公布的端点,核对 @https:// 与 @quic:// 的协议差别。

参考资料

下载、系统要求和配置字段以对应版本的官方说明为准。文中的流程图由 AFQKit 绘制。

NextTrace →路由追踪与路径诊断Wireshark →抓包与网络协议分析sing-box →可自定义的代理核心

先弄清这些概念

返回工具目录 · 按症状排查问题