Appearance
DNS 错误与域名解析失败排查指南:ERR_NAME_NOT_RESOLVED 解决
导读:在浏览器输入网址后,页面瞬间报错:
无法访问此网站,未找到服务器 IP 地址 (DNS_PROBE_FINISHED_NXDOMAIN)或ERR_NAME_NOT_RESOLVED。为什么开了翻墙软件,连最基本的域名都解析不出来?
本文严格遵循【症状】 → 【原因】 → 【检查】 → 【解决方案】诊断框架,带你快速修复 DNS 解析故障。
一、症状 (Symptom)
- 表象 1:浏览器打开任何海外网站均提示
DNS_PROBE_FINISHED_NXDOMAIN或ERR_NAME_NOT_RESOLVED; - 表象 2:直接在浏览器输入国外服务器的原始 IP 地址(如
1.1.1.1)可以打开,但输入域名(如cloudflare.com)立刻报错; - 表象 3:客户端后台日志频繁报错:
dns: lookup failed: i/o timeout或failed to resolve domain; - 表象 4:QQ/微信等不需要频繁 DNS 查询的通讯软件正常,但所有网页浏览器全面瘫痪。
二、原因 (Cause)
mermaid
graph TD
DNSErr["DNS 解析失败 (Lookup Failed)"]
DNSErr --> C1["1. 客户端 DNS 监听端口未开放或冲突 (占 40%)<br/>内核配置的 1053 或 53 端口被其他软件占用,本地 DNS 查询被拒"]
DNSErr --> C2["2. 上游加密 DNS (DoH) 服务器本身被墙 (占 35%)<br/>配置了 1.1.1.1/dns-query,但在直连解析时被 GFW 掐断"]
DNSErr --> C3["3. 本地操作系统 DNS 缓存损坏 (占 15%)<br/>缓存了失效的虚假解析记录"]
DNSErr --> C4["4. 系统 Hosts 文件被恶意软件锁死 (占 10%)"]三、检查 (Inspection / 3步自测)
检查 1:使用 nslookup 命令行工具测试
打开终端,直接指定不同 DNS 服务器解析目标域名:
cmd
nslookup google.com 223.5.5.5
nslookup google.com 127.0.0.1- 判定标准:若指定
127.0.0.1报错No response from server,说明客户端内置的 DNS 服务根本没有在监听本地请求!
检查 2:检查客户端的 DNS 配置语法
查看配置中的 dns: 模块:
- 是否设置了
enhanced-mode: fake-ip? nameserver:中是否填入了有效的上游服务器?
四、解决方案 (Solution)
1. 刷新本地操作系统 DNS 缓存
打开系统终端,运行一键清除 DNS 缓存指令:
- Windows:cmd
ipconfig /flushdns - macOS:bash
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
2. 修正客户端上游 DNS 配置(采用阿里/腾讯安全 DoH)
避免在直连解析链条中使用未经加密且易被干扰的境外 IP,在客户端配置中采用以下可靠 DNS:
yaml
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
fallback:
- https://1.1.1.1/dns-query3. 关闭 IPv6 解析(消除最大的 DNS 隐患)
在客户端 DNS 设置中,将 ipv6: false 明确设为关闭。目前绝大多数国内运营商的 IPv6 路由极其脆弱且极易导致 DNS 超时回退。