You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用程序DNS解析缓慢但dig/nslookup正常的问题排查求助

应用程序DNS解析缓慢但dig/nslookup正常的问题排查求助

各位好,我遇到一个困扰了好几个月的DNS解析问题,跨系统重启、软件包更新都没解决,实在找不到头绪,来求助大家!

今年年初开始,我访问新域名(有时候连之前访问过的域名)经常会出现10-30秒的延迟,而且这个问题出现在多个程序里:Firefox浏览器、Discord的更新器,还有命令行里的ssh和mosh都中招了。我一直用ssh -vvvv来做测试,因为它会明确显示域名解析的开始和结束节点。

测试现象整理

  • 打开从未访问过的域名http://asdfasdf.com,Firefox会显示空白标签+加载动画,卡10秒以上,我没等加载完成就关闭了标签页
  • 执行ssh -vvvv asdfasdf.com,当输出到debug3: resolve_host: lookup asdfasdf.com:22时就会停滞10秒以上,我只能按Ctrl+C中断测试
  • 但用dig asdfasdf.com测试时,立刻就能返回正确结果(十几个A记录),它查询的是我的本地路由器192.168.1.1——这也是/etc/resolv.conf里配置的唯一DNS服务器
  • nslookup asdfasdf.com会立刻返回结果,但之后会停顿5秒,输出;; communications error to 192.168.1.1#53: timed out,重复三次后,最后显示;; no servers could be reached
  • 指定外部DNS服务器测试的话,dig @4.2.2.1 asdfasdf.com和nslookup asdfasdf.com 4.2.2.1都能立刻返回正确结果,且没有任何错误

后续重复测试的情况

  • 再次执行ssh -vvvv asdfasdf.com,依然会在解析步骤卡15秒,之后才到debug3: ssh_connect_direct: entering(当然这个域名没开ssh服务,最后连接失败)
  • 第二次用Firefox打开asdfasdf.com,这次只卡了约5秒就开始加载页面
  • 第三次打开Firefox,页面立刻开始加载
  • 但ssh的解析延迟问题依然存在,还是会卡15秒

我尝试过的配置修改

  • 修改/etc/resolv.conf,把默认DNS服务器改成4.2.2.1,虽然dig和nslookup的默认查询服务器变了,但其他问题现象完全没改善
  • 修改/etc/nsswitch.conf里的hosts配置行:
    原配置:hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
    修改后:hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
    改完后没看出任何效果
  • 之前还试过在/etc/resolv.conf里加一行来禁用伴随A请求发送的AAAA请求,不过现在记不清具体内容了,当时也没起到作用

UPDATE 1:关于systemd-resolved的测试

一开始执行resolvectl status时,报错Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.,查了下是systemd-resolved.service处于禁用且未运行状态。我执行了systemctl enable systemd-resolved.service和systemctl start systemd-resolved.service把它启动起来,之后resolvectl status的输出如下:

Global
Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
Current DNS Server: 192.168.1.1
DNS Servers 192.168.1.1
Fallback DNS Servers 1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net 8.8.8.8#dns.google 2606:4700:4700::1111#cloudflare-dns.com 2620:fe::9#dns.quad9.net 2001:4860:4860::8888#dns.google

Link 2 (enp37s0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 3 (wlp38s0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1

但测试resolvectl query asdfasdf.com时,居然超时了120秒,提示asdfasdf.com: resolve call failed: Connection timed out.,而resolvectl query google.com却能立刻返回6个IPv4和4个IPv6结果。更糟的是,启用这个服务后Firefox完全加载不了页面,我只好又停止并禁用了systemd-resolved.service。


UPDATE 2:Wireshark抓包发现的线索

用Wireshark抓包后,我发现了关键问题:ssh发送A记录请求后立刻收到了响应,但发送AAAA记录请求后完全没收到回复,然后就卡住了。进一步排查IPv6的情况,发现除了本地回环地址ping -6 ::1能通,其他外部IPv6地址都ping不通。

目前我打算要么彻底禁用IPv6,要么想办法修复IPv6的问题,后续会继续排查,找到解决方案后会回来更新答案。

备注:内容来源于stack exchange,提问作者Sparr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:43:10