修改 hosts 文件并刷新 DNS 缓存:Windows 和 Linux 完全指南
无论你是想本地测试网站、屏蔽广告,还是解决域名解析问题,修改
hosts文件都是最直接有效的方法。本文将用最清晰的方式,带你一步步完成 Windows 和 Linux 下的操作。
什么是 hosts 文件?
hosts 文件是一个没有扩展名的系统文件,用于将域名(例如 google.com)映射到特定的 IP 地址。它的优先级高于 DNS 服务器 —— 也就是说,系统会先查 hosts 文件,找不到域名时才会去问 DNS。
一、Windows 系统
1. hosts 文件位置
C:\Windows\System32\drivers\etc\hosts2. 修改 hosts 文件
由于 hosts 属于系统文件,必须以管理员身份编辑。
方法一:用记事本(推荐新手)
- 按下
Win键,搜索“记事本” - 右键点击“记事本”,选择 “以管理员身份运行”
- 在记事本菜单:
文件→打开 - 路径输入
C:\Windows\System32\drivers\etc\hosts(记得把文件类型从“文本文档”改为“所有文件”) - 添加或修改规则,保存即可
方法二:用命令行(快速)
# 以管理员运行 PowerShell 或 CMD
notepad C:\Windows\System32\drivers\etc\hosts3. 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 或 CMD
ipconfig /flushdns看到提示“已成功刷新 DNS 解析缓存”即表示完成。
可选操作:如果修改后仍不生效,可以重启网络适配器或直接重启电脑。
二、Linux 系统
1. hosts 文件位置
/etc/hosts2. 修改 hosts 文件
需要 root 权限。推荐使用终端编辑器:
方法一:使用 nano(最友好)
sudo nano /etc/hosts编辑后按 Ctrl+O 保存,Ctrl+X 退出。
方法二:使用 vim
sudo vim /etc/hosts按 i 进入编辑模式,编辑后按 Esc,输入 :wq 保存退出。
方法三:echo 追加(适合添加单行)
echo "192.168.1.100 mysite.local" | sudo tee -a /etc/hosts3. 刷新 DNS 缓存
Linux 下 DNS 缓存机制因发行版而异,下面列出最常见的情况:
Ubuntu / Debian(使用 systemd-resolved)
sudo systemd-resolve --flush-caches或者(新版命令):
sudo resolvectl flush-caches使用 nscd(Name Service Cache Daemon)
sudo systemctl restart nscd如果没有安装 nscd,可以忽略。
使用 dnsmasq
sudo systemctl restart dnsmasq最通用的“笨办法”——重启网络服务或电脑
sudo systemctl restart NetworkManager或者直接重启:
sudo reboot💡 提示:很多 Linux 发行版默认不启用 DNS 缓存,修改 hosts 后可能立即生效,无需刷新。如果你不确定,直接执行对应命令即可。
4. 验证修改是否生效
使用 ping 或 nslookup 测试:
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 路径 | 修改方式 | 刷新命令 |
|---|---|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts | 管理员运行记事本 | ipconfig /flushdns |
| Linux | /etc/hosts | sudo nano /etc/hosts | sudo systemd-resolve --flush-caches 或重启网络 |
掌握修改 hosts 文件是每个开发者、技术爱好者的必备技能。现在就去试试吧,遇到问题欢迎在评论区留言交流!
最后的小提醒:修改前最好备份原文件(复制一份叫 hosts.bak),万一出错可以快速恢复。