如何修复 Chrome 中的 ERR_NAME_NOT_RESOLVED
当 Chrome 显示 ERR_NAME_NOT_RESOLVED 时,意味着浏览器无法将你输入的域名(例如 example.com)转换成服务器 IP 地址。换句话说,DNS 解析这一步失败了——浏览器根本不知道该把请求发往哪里。
这与 ERR_CONNECTION_REFUSED 截然不同:后者是服务器明确拒绝了连接,发生在拿到 IP 之后;而 ERR_NAME_NOT_RESOLVED 发生在连接建立之前,连目标 IP 都没有找到。问题可能出在你的设备、家用路由器、ISP 的 DNS 服务器,甚至域名本身的配置上。好消息是,绝大多数情况都能通过刷新缓存、更换 DNS 服务器或检查域名配置来解决。本文带你从浅到深逐一排查 6 个常见原因,并提供 Windows、macOS、Linux 的具体命令。
ERR_NAME_NOT_RESOLVED 是什么?
每次你在浏览器输入网址,背后都会发生一次 DNS(域名系统)解析。整个过程大致如下:
- 浏览器先检查本地 DNS 缓存,看是否已经知道这个域名对应的 IP。
- 如果没有,请求会被交给操作系统的解析器,再转发给系统配置的 DNS 服务器(通常是路由器或 ISP 提供的 DNS)。
- DNS 服务器执行递归查询:先问根域名服务器,再问顶级域(TLD)服务器,最后问权威域名服务器,拿到最终的 A 记录(IPv4)或 AAAA 记录(IPv6)。
- 拿到 IP 之后,浏览器才能发起 TCP 连接并完成 HTTPS 握手。
当这条链路中任何一环返回"找不到"(NXDOMAIN)或干脆没有响应时,Chrome 就会显示 ERR_NAME_NOT_RESOLVED。常见的触发点包括:本地缓存中存了错误的负缓存记录、DNS 服务器暂时不可用、域名未注册或 DNS 记录未正确配置、VPN 或代理劫持了 DNS 查询等。理解了这一点,你就会明白为什么"换一个 DNS 服务器"往往是最有效的修复手段。
常见原因
下表汇总了最常见的 6 类原因及其典型症状和对应的修复方向,方便你快速对号入座。
| 原因 | 症状 | 修复方法 |
|---|---|---|
| 本地 DNS 缓存过期或污染 | 所有浏览器都无法打开某域名,重启后短暂恢复 | 刷新系统与 Chrome 的 DNS 缓存 |
| DNS 服务器不可用或响应慢 | 偶发性解析失败,更换网络后立即恢复 | 更换为公共 DNS(8.8.8.8 / 1.1.1.1) |
| hosts 文件被篡改 | 仅特定域名解析到错误 IP 或被屏蔽 | 检查并修正 hosts 文件 |
| VPN / 代理劫持 DNS | 开启 VPN 时失败,关闭后正常 | 禁用 VPN 和系统代理 |
| 浏览器缓存或 Cookie 异常 | 仅 Chrome 失败,其他浏览器正常 | 清除浏览器缓存和 Cookie |
| 域名未注册或 DNS 记录缺失 | 所有人、所有网络都无法访问该域名 | 用 dig/nslookup 确认,联系域名注册商 |
分步修复指南
按以下 6 个步骤从最简单到最深入依次排查。绝大多数偶发性问题在前两步即可解决,无需全部做完。
步骤 1:刷新 DNS 缓存
本地 DNS 缓存可能保存了过期的"域名不存在"(负缓存)记录,导致域名即便已经恢复也无法解析。先清掉它:
# Windows(CMD 或 PowerShell,无需管理员)
ipconfig /flushdns
# Linux(systemd-resolved)
sudo systemd-resolve --flush-caches
# 较新版本使用 resolvectl:
sudo resolvectl flush-caches
# Linux(使用 nscd 守护进程时)
sudo systemctl restart nscd
# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Chrome 内部 DNS 缓存:在地址栏访问
# chrome://net-internals/#dns 然后点击 Clear host cache
刷新后重新加载页面(Ctrl+F5 强制刷新)。如果只是本地缓存问题,到这里就已经解决了。
步骤 2:更换 DNS 服务器
如果刷新缓存无效,下一步是排除 ISP 的 DNS 服务器故障。把系统 DNS 改成知名的公共 DNS,例如 Google 的 8.8.8.8 或 Cloudflare 的 1.1.1.1:
# Windows(PowerShell,管理员)
# 先查看网络接口名称
Get-DnsClientServerAddress
# 设置为 Google DNS 和 Cloudflare DNS
Set-DnsClientServerAddress -InterfaceAlias "Wi-Fi" -ServerAddresses 8.8.8.8,1.1.1.1
# 恢复为 DHCP 自动获取
Set-DnsClientServerAddress -InterfaceAlias "Wi-Fi" -ResetServerAddresses
# Linux(NetworkManager,nmcli)
nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1" ipv4.ignore-auto-dns yes
nmcli connection up "Wired connection 1"
# macOS
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 1.1.1.1
# 恢复为自动获取
sudo networksetup -setdnsservers Wi-Fi empty
修改后建议再执行一次步骤 1 的刷新命令,确保新的 DNS 服务器立即生效。别忘了重启家用路由器——路由器本身也会缓存 DNS,且缓存时间可能比设备更长。
步骤 3:检查 hosts 文件
hosts 文件的优先级高于 DNS 查询。如果它被恶意软件或某次调试写入过错误的映射,就会让特定域名永远解析到错误地址。检查并清理它:
# Windows:以管理员身份打开记事本编辑
notepad C:\Windows\System32\drivers\etc\hosts
# Linux / macOS
sudo nano /etc/hosts
# 查找是否存在可疑的域名映射
grep example.com /etc/hosts
# Windows 下用 findstr:
findstr example.com C:\Windows\System32\drivers\etc\hosts
一个干净的 hosts 文件通常只包含本地回环记录:
# /etc/hosts 示例
127.0.0.1 localhost
::1 localhost
# 如果看到类似下面的行,删除它(这会把真实域名劫持到本地):
# 127.0.0.1 example.com
步骤 4:禁用 VPN 和代理
VPN 和代理客户端通常会接管系统的 DNS 查询。当 VPN 节点不可用或代理配置出错时,DNS 请求会被丢弃,从而触发 ERR_NAME_NOT_RESOLVED:
# 查看代理相关的环境变量
echo $http_proxy
echo $https_proxy
echo $all_proxy
# 临时清除代理环境变量
unset http_proxy https_proxy all_proxy
# Chrome:设置 -> 系统 -> 打开您计算机的代理设置
# 确认 "使用代理服务器" 已关闭,或配置正确
# 关闭 Clash / V2Ray / 商业 VPN 客户端后重新访问
如果你怀疑是浏览器扩展(如代理类插件)在作怪,可以用 Chrome 隐身模式测试——隐身模式默认禁用扩展,能快速排除这一因素。
步骤 5:清除浏览器缓存和 Cookie
当只有 Chrome 报错而其他浏览器正常时,问题多半在浏览器侧。Chrome 拥有独立的 DNS 缓存和预测服务,可能缓存了错误结果:
Chrome 清除缓存步骤:
1. 按 Ctrl+Shift+Delete(Windows/Linux)或 Cmd+Shift+Delete(macOS)
2. 时间范围选择 "时间不限"
3. 勾选 "缓存的图片和文件" 以及 "Cookie 及其他网站数据"
4. 点击 "清除数据"
# 或直接用隐身模式快速排除缓存影响(不保存任何历史)
# Windows / Linux: Ctrl+Shift+N
# macOS: Cmd+Shift+N
此外可以在 chrome://settings/security 中暂时关闭"使用安全 DNS"(Secure DNS / DNS-over-HTTPS),它有时会因为上游 DoH 服务器异常而导致解析失败。
步骤 6:检查域名注册和 DNS 记录
如果前面 5 步都无效,而且换网络、换设备后所有人都打不开该域名,那么问题很可能在域名本身。用命令行工具直接向公共 DNS 查询,确认域名是否已注册、记录是否生效:
# 查询 A 记录(IPv4),+short 只输出结果
dig example.com A +short
# 查询 AAAA 记录(IPv6)
dig example.com AAAA +short
# 查询域名的权威 NS 服务器
dig example.com NS +short
# 绕过本地缓存,直接向指定 DNS 查询
dig @8.8.8.8 example.com
# Windows 自带的 nslookup
nslookup example.com
nslookup example.com 1.1.1.1
# 查询域名注册状态(WHOIS)
whois example.com | grep -E "Registry|Domain Name|Status"
如果 dig 返回空结果或 NXDOMAIN,说明域名未注册、已过期,或 DNS 记录尚未生效(DNS 传播通常需要几分钟到 48 小时)。此时需要登录域名注册商控制台,检查 NS 服务器和 A/AAAA 记录是否配置正确。
DNS 配置示例
下面给出排查和配置 DNS 时最常用的几组命令与文件示例,可直接复制使用。
# 1. dig 完整查询示例
dig example.com
# 关键输出字段说明:
# ;; ANSWER SECTION:
# example.com. 3600 IN A 93.184.216.34
# ^TTL ^类型 ^解析到的 IP
# 2. nslookup 交互式查询
nslookup
> server 1.1.1.1
> set type=A
> example.com
> exit
# 3. /etc/resolv.conf(Linux 手动指定 DNS 参考)
nameserver 8.8.8.8
nameserver 1.1.1.1
# IPv6 DNS(可选)
nameserver 2001:4860:4860::8888
options timeout:2 attempts:2 rotate
# 4. 测试解析是否正常
getent hosts example.com
# 或
ping -c 2 example.com
快速参考表
下表列出常见的 DNS 错误码及其含义,帮助你从命令输出中快速判断故障层级。
| 错误码 / 状态 | 含义 | 建议处理 |
|---|---|---|
| NXDOMAIN | 域名不存在,DNS 服务器找不到任何匹配记录 | 检查域名拼写,或确认域名已注册且未过期 |
| SERVFAIL | DNS 服务器在处理请求时遇到内部错误 | 更换 DNS 服务器,或检查权威服务器配置 |
| REFUSED | DNS 服务器拒绝回答该查询 | 检查区域传输限制或访问控制列表 |
| TIMEOUT | DNS 服务器在规定时间内未响应 | 更换 DNS,检查防火墙是否放行 53 端口 |
| 负缓存(Negative Cache) | 本地缓存了之前的"不存在"结果 | 刷新本地与 Chrome 的 DNS 缓存 |
| ERR_NAME_NOT_RESOLVED | Chrome 层面显示的解析失败汇总错误 | 按本文 6 个步骤逐一排查 |
常见问题
为什么只有 Chrome 报这个错,其他浏览器正常?
这通常说明问题在浏览器层面而非系统 DNS。Chrome 有自己的 DNS 缓存(chrome://net-internals/#dns)和内置异步解析器,可能缓存了错误的负缓存记录,或被某个扩展(如广告拦截、代理插件)劫持了请求。先清除 Chrome 内部 DNS 缓存,再用隐身模式测试;若隐身模式正常,逐个禁用扩展排查即可定位元凶。
刷新 DNS 缓存后还是不行怎么办?
依次尝试:更换为公共 DNS(8.8.8.8 / 1.1.1.1)排除 ISP 故障;重启家用路由器(路由器也缓存 DNS);检查 hosts 文件是否被篡改;用 dig @8.8.8.8 域名 确认是本地问题还是域名本身的问题。一个关键判断标准是:如果换网络、换设备后所有人都打不开该域名,问题多半在域名侧;如果只有你打不开,问题就在本地。
ERR_NAME_NOT_RESOLVED 和 ERR_CONNECTION_REFUSED 有什么区别?
ERR_NAME_NOT_RESOLVED 发生在连接建立之前——浏览器连目标 IP 都没找到,属于 DNS 解析失败;ERR_CONNECTION_REFUSED 发生在解析成功之后——浏览器拿到了 IP 并尝试连接,但服务器明确拒绝了(返回 TCP RST),通常是服务未启动或端口未监听。前者查 DNS 与域名,后者查服务进程和端口。
更换 DNS 服务器会影响网络安全或速度吗?
更换为知名公共 DNS(如 Google 8.8.8.8、Cloudflare 1.1.1.1)通常是安全的,而且由于它们拥有更大的缓存和更优的任播网络,解析速度往往比 ISP 的 DNS 更快、更稳定。需要注意两点:一是公共 DNS 可能影响基于 DNS 的地理负载均衡(CDN 有时会把用户指向较远节点);二是你的 DNS 查询会经过第三方服务器。对隐私要求高的用户可优先选择 1.1.1.1,它承诺不记录可识别日志。
总结
ERR_NAME_NOT_RESOLVED 的本质是 DNS 解析链条某一环断裂。排查时遵循"由近及远"的原则:先清本地缓存(步骤 1),再换 DNS 服务器(步骤 2),这两步能解决绝大多数偶发性问题;若仍失败,依次检查 hosts 文件、VPN 与代理、浏览器缓存;最后用 dig 和 nslookup 验证域名本身的注册和记录状态。
记住那个关键判断:换网络、换设备后所有人都打不开,问题多半在域名侧(未注册、DNS 记录未生效、权威服务器故障);只有你打不开,问题就在本地(缓存、DNS、代理)。借助本站的 DNS 检查工具,你可以快速验证域名解析是否正常,把故障精准定位到具体哪一层。