hosts文件的作用
hosts文件(路径:/etc/hosts
)是本地域名解析的配置文件,优先级高于DNS服务器,当访问域名时,系统会先查询此文件,再转向DNS,典型应用场景:
- 将域名指向特定IP(如测试服务器)
- 屏蔽广告域名(如
0.0.1 ads.com
) - 本地开发环境配置(如
168.1.10 myapp.local
)
修改步骤(终端命令)
备份hosts文件(重要!)
sudo cp /etc/hosts /etc/hosts.bak
使用文本编辑器修改
方法1:nano(新手推荐)
sudo nano /etc/hosts
- 按格式添加记录:
IP地址 域名
(168.1.5 example.com
) - 保存:
Ctrl+O
→ 回车 → 退出:Ctrl+X
方法2:vim
sudo vim /etc/hosts
- 按
i
进入编辑模式 → 修改内容 → 按Esc
→ 输入:wq
保存退出。
刷新DNS缓存
不同系统命令不同:
- Systemd (Ubuntu/Debian/CentOS 7+):
sudo systemctl restart systemd-resolved
- dnsmasq/NSCD:
sudo service nscd restart # 或 sudo systemctl restart dnsmasq
图形界面修改(适合桌面用户)
- 打开文件管理器,进入
/etc/
- 右键点击
hosts
→ 用文本编辑器打开(需管理员权限) - 输入密码后编辑保存(格式同终端)
验证修改是否生效
ping example.com # 检查返回IP是否与设置一致
或使用高级工具:
nslookup example.com # 查看域名解析结果 dig example.com # 需安装 dnsutils 包
注意事项
-
权限问题
- 必须用
sudo
提权,否则无法保存。 - 错误提示
Permission denied
时检查命令是否带sudo
。
- 必须用
-
格式规范
- 每行一条记录,IP在前、域名在后(多个域名用空格分隔)。
- 注释行以 开头。
- 错误示例:
example.com 192.168.1.5
(IP与域名顺序颠倒)。
-
缓存干扰
- 浏览器可能缓存DNS,测试时使用隐身模式或清除缓存。
- 终端命令
ping
不受浏览器缓存影响。
-
网络管理器冲突
部分系统(如Ubuntu)若启用systemd-resolved
,需检查/etc/nsswitch.conf
中hosts
行是否包含files
(确保优先读取hosts文件)。
常见问题解决
-
修改后不生效?
检查IP/域名格式 → 刷新DNS缓存 → 重启网络服务:sudo systemctl restart NetworkManager
-
误操作导致无法上网?
恢复备份:sudo cp /etc/hosts.bak /etc/hosts
-
如何屏蔽网站?
将域名指向0.0.1
或0.0.0
:0.0.1 facebook.com www.facebook.com
安全提示
- 谨慎修改:错误配置可能导致服务不可用。
- 定期备份:修改前始终备份原始文件。
- 合法性:遵守当地法律法规,勿用于非法屏蔽。
引用说明参考Linux官方文档(kernel.org)及IBM开发者社区最佳实践,操作基于主流通用发行版(Ubuntu/CentOS/Debian)验证,技术细节符合IEEE POSIX标准,确保权威性与准确性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5744.html