本文目录导读:

- 没有以管理员权限保存(最常见原因)
- hosts 文件格式错误
- 浏览器或系统存在 DNS 缓存(DNS Cache)
- 使用了错误的 IP 地址格式
- 被其他网络设置覆盖(如代理、VPN、加密DNS)
- 文件编码问题(较少见,但存在)
- 文件扩展名错误
- 紧急诊断步骤(推荐顺序)
修改 hosts 文件后不生效,通常是因为以下几个最常见的原因,请按照以下顺序逐一排查:
没有以管理员权限保存(最常见原因)
hosts 文件位于系统保护目录,普通方式编辑可能无法保存。
- Windows:
- 以管理员身份运行记事本(右键点击记事本 -> 更多 -> 以管理员身份运行)。
- 在记事本中打开
C:\Windows\System32\drivers\etc\hosts文件。 - 修改后保存,而不是直接右键编辑通常权限不足。
- macOS / Linux:
- 使用
sudo命令编辑,例如在终端运行:sudo nano /etc/hosts或sudo vim /etc/hosts。
- 使用
hosts 文件格式错误
系统对 hosts 文件的语法非常严格,一个空格或特殊字符都可能导致整行失效。
- 正确格式:
- IP地址与域名之间用一个或多个空格(或Tab键)隔开。
- 不能有 号注释( 后的内容会被忽略,不能写在IP和域名中间)。
- 不要有多余的点号或符号。
- 示例:
- ✅
0.0.1 www.example.com(正确) - ❌
0.0.1www.example.com(缺少空格) - ❌
0.0.1 , www.example.com(使用了逗号)
- ✅
浏览器或系统存在 DNS 缓存(DNS Cache)
即使 hosts 文件修改成功,系统或浏览器可能仍在使用旧记录。
- 清空 DNS 缓存:
- Windows:以管理员身份打开命令提示符(CMD),输入
ipconfig /flushdns回车。 - macOS:终端输入
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。 - Linux:不同发行版命令不同,通常用
sudo systemd-resolve --flush-caches或sudo service nscd restart。
- Windows:以管理员身份打开命令提示符(CMD),输入
- 浏览器缓存:即使系统刷新了,浏览器(Chrome/Edge)也有自己的DNS缓存。
- 方法:在地址栏输入
chrome://net-internals/#dns(Chrome/Edge),点击 “Clear host cache”(清除主机缓存)。 - 或者:彻底关闭浏览器后重新打开(注意:是关闭所有窗口,而不仅是关闭标签页)。
- 方法:在地址栏输入
使用了错误的 IP 地址格式
- IPv4:必须使用标准点分十进制,如
168.1.1。 - IPv6:必须使用冒号分隔格式,如
:1(代表 localhost)。 - 如果错误地将域名指向了
0.0.0或错误的 IP,访问自然失败。
被其他网络设置覆盖(如代理、VPN、加密DNS)
- 代理软件(如 Clash, V2Ray, Shadowsocks):这些软件通常会接管所有DNS请求,忽略系统的 hosts 文件。
- VPN:VPN 连接可能使用远程 DNS 服务器。
- 加密DNS(DoH/DoT):如果在浏览器或系统中设置了 Cloudflare(1.1.1.1)、Google(8.8.8.8)等加密DNS,系统会优先通过 HTTPS/TLS 发送请求,完全绕过 hosts 文件。
- 对策:临时关闭这些软件或服务,测试是否生效。
文件编码问题(较少见,但存在)
Windows 的 hosts 文件通常要求保存为 ANSI 编码 或 UTF-8 without BOM。
- 如果用带 BOM 的 UTF-8 保存,文件头部会多出三个不可见字节,可能导致系统无法正确解析。
- 推荐:使用记事本另存为时,选择编码:ANSI 或 UTF-8。
文件扩展名错误
确保文件名是 hosts,没有后缀名。
- 正确:
hosts - 错误:
hosts.txt,hosts.123(在查看时可能被隐藏,需要打开“显示文件扩展名”选项)
紧急诊断步骤(推荐顺序)
- 检查格式:打开文件,检查你的那一行是不是:
IP 空格 域名(如0.0.1 test.com)。 - 清空系统DNS:运行
ipconfig /flushdns(Win)或等价命令。 - 测试:不要用浏览器,用
ping 你的域名看是否返回你设置的IP。ping返回了新IP,说明 hosts 生效,问题是浏览器缓存(参考第3点)。ping返回了旧IP或找不到主机,说明 hosts 未生效,检查管理员权限或格式。
- 关闭代理与加密DNS:临时关闭所有防火墙、代理、VPN和浏览器安全DNS设置。
通常99%的问题源于管理员权限或浏览器DNS缓存,如果以上步骤都试过仍无效,请检查是否有杀毒软件(如火绒、360)拦截了对 hosts 文件的修改。