递归查询慢本质是所选递归dns服务器响应慢或路径绕远,需先用dig对比不同服务器延迟、+trace分析卡点,再检查其可达性与稳定性,排除本地干扰后更换并固化优质dns(如1.1.1.1/223.5.5.5)。

递归查询慢,本质是你的系统发出去的DNS请求,在到达权威服务器前的中间环节卡住了。不是本地没配好,也不是域名本身有问题,而是那台被你指定的递归DNS服务器——比如运营商DNS、公司内网DNS或你手动填的8.8.8.8——响应太慢或路径绕远。
先确认是不是递归服务器的问题
别急着改配置,先做两件事:
- 用 dig @8.8.8.8 example.com 和 dig @114.114.114.114 example.com 分别测,看 Query time 字段谁更大;
- 再用 dig +trace example.com 看完整链路:如果卡在“问根服务器”或“问.com顶级域”这步耗时长,说明你用的递归服务器上游质量差,不是你本地的问题。
检查递归服务器是否可达且低延迟
递归服务器本身得通、得快,否则一切白搭:
- ping -c 3 8.8.8.8 看丢包和延迟,超过100ms就值得怀疑;
- 用 dig @8.8.8.8 google.com +short 多跑几次,观察 Query time 是否波动剧烈(>200ms且不稳定);
- 如果公司有自建DNS,优先用内网地址(如192.168.1.11),它通常比公网DNS快一个数量级。
排除本地干扰因素
即使递归服务器没问题,也可能被你本机“拖后腿”:
- 查 cat /etc/resolv.conf,确认只留一个靠谱的 nameserver,别堆一堆;
- 运行 systemd-resolve --status(如果启用了 systemd-resolved),看它是否把你的请求又转发给了另一个慢DNS;
- 临时停掉 NetworkManager 或 systemd-resolved:sudo systemctl stop systemd-resolved,再直接 dig 测试,看速度是否恢复。
换更优的递归DNS并固化配置
别依赖 DHCP 自动下发的运营商DNS,它们常带缓存污染或限速:
- 推荐组合:1.1.1.1(Cloudflare)、9.9.9.9(Quad9)、223.5.5.5(阿里DNS),三者可轮询;
- 写入 /etc/systemd/resolved.conf 的 DNS= 行,再 sudo systemctl restart systemd-resolved;
- 或者直接覆盖 /etc/resolv.conf(需禁用 NetworkManager 自动生成),加 options timeout:1 rotate。











