Skip to content

修改 hosts 文件并刷新 DNS 缓存:Windows 和 Linux 完全指南

无论你是想本地测试网站、屏蔽广告,还是解决域名解析问题,修改 hosts 文件都是最直接有效的方法。本文将用最清晰的方式,带你一步步完成 Windows 和 Linux 下的操作。

什么是 hosts 文件?

hosts 文件是一个没有扩展名的系统文件,用于将域名(例如 google.com)映射到特定的 IP 地址。它的优先级高于 DNS 服务器 —— 也就是说,系统会先查 hosts 文件,找不到域名时才会去问 DNS。

一、Windows 系统

1. hosts 文件位置

C:\Windows\System32\drivers\etc\hosts

2. 修改 hosts 文件

由于 hosts 属于系统文件,必须以管理员身份编辑。

方法一:用记事本(推荐新手)

  • 按下 Win 键,搜索“记事本”
  • 右键点击“记事本”,选择 “以管理员身份运行”
  • 在记事本菜单:文件打开
  • 路径输入 C:\Windows\System32\drivers\etc\hosts(记得把文件类型从“文本文档”改为“所有文件”)
  • 添加或修改规则,保存即可

方法二:用命令行(快速)

powershell
# 以管理员运行 PowerShell 或 CMD
notepad C:\Windows\System32\drivers\etc\hosts

3. hosts 文件格式示例

# 注释行以 # 开头
127.0.0.1       localhost
192.168.1.100   mytest.com
# 屏蔽某个网站(指向本地)
0.0.0.0         bad-site.com

每行格式:IP地址 空格 域名

4. 刷新 DNS 缓存(让修改立即生效)

Windows 会缓存 DNS 结果,修改 hosts 后需要清空缓存:

powershell
# 以管理员身份运行 PowerShell 或 CMD
ipconfig /flushdns

看到提示“已成功刷新 DNS 解析缓存”即表示完成。

可选操作:如果修改后仍不生效,可以重启网络适配器或直接重启电脑。


二、Linux 系统

1. hosts 文件位置

/etc/hosts

2. 修改 hosts 文件

需要 root 权限。推荐使用终端编辑器:

方法一:使用 nano(最友好)

bash
sudo nano /etc/hosts

编辑后按 Ctrl+O 保存,Ctrl+X 退出。

方法二:使用 vim

bash
sudo vim /etc/hosts

i 进入编辑模式,编辑后按 Esc,输入 :wq 保存退出。

方法三:echo 追加(适合添加单行)

bash
echo "192.168.1.100  mysite.local" | sudo tee -a /etc/hosts

3. 刷新 DNS 缓存

Linux 下 DNS 缓存机制因发行版而异,下面列出最常见的情况:

Ubuntu / Debian(使用 systemd-resolved)

bash
sudo systemd-resolve --flush-caches

或者(新版命令):

bash
sudo resolvectl flush-caches

使用 nscd(Name Service Cache Daemon)

bash
sudo systemctl restart nscd

如果没有安装 nscd,可以忽略。

使用 dnsmasq

bash
sudo systemctl restart dnsmasq

最通用的“笨办法”——重启网络服务或电脑

bash
sudo systemctl restart NetworkManager

或者直接重启:

bash
sudo reboot

💡 提示:很多 Linux 发行版默认不启用 DNS 缓存,修改 hosts 后可能立即生效,无需刷新。如果你不确定,直接执行对应命令即可。

4. 验证修改是否生效

使用 pingnslookup 测试:

bash
ping mytest.com -c 4

如果返回的 IP 是你 hosts 里写的地址,说明成功。


三、常见问题与技巧

❓ 修改 hosts 后浏览器不生效?

  • 检查格式:IP 和域名之间用空格或 Tab 隔开,不要有多余符号
  • 清空浏览器 DNS 缓存:Chrome 访问 chrome://net-internals/#dns,点击“Clear host cache”
  • 关闭代理/VPN:代理可能会绕过 hosts 解析

❓ 没有权限保存文件?

  • Windows:确保用“管理员身份”打开编辑器
  • Linux:命令前加 sudo

❓ 如何恢复默认 hosts?

  • Windows:用备份覆盖,或删除自定义行(只保留 127.0.0.1 localhost 等默认内容)
  • Linux:同上,默认内容通常只有 127.0.0.1 localhost::1 ip6-localhost

❓ 能不能用 hosts 屏蔽所有广告?

可以,但维护麻烦。推荐找现成的“广告 hosts 列表”(如 StevenBlack/hosts),直接追加到文件末尾。


总结

系统hosts 路径修改方式刷新命令
WindowsC:\Windows\System32\drivers\etc\hosts管理员运行记事本ipconfig /flushdns
Linux/etc/hostssudo nano /etc/hostssudo systemd-resolve --flush-caches 或重启网络

掌握修改 hosts 文件是每个开发者、技术爱好者的必备技能。现在就去试试吧,遇到问题欢迎在评论区留言交流!

最后的小提醒:修改前最好备份原文件(复制一份叫 hosts.bak),万一出错可以快速恢复。

/src/technology/dateblog/2026/04/20260409-%E4%BF%AE%E6%94%B9-hosts-%E6%96%87%E4%BB%B6%E5%B9%B6%E5%88%B7%E6%96%B0-dns-%E7%BC%93%E5%AD%98%E5%85%A8%E6%8C%87%E5%8D%97.html