hosts文件是操作系统中优先于DNS解析的本地域名映射文本文件,用于绕过公共DNS、测试迁移、屏蔽广告等;其路径为Windows的C:\Windows\System32\drivers\etc\hosts、macOS/Linux的/etc/hosts;需管理员/root权限编辑,格式为“IP 域名”,修改后须刷新DNS缓存并用ping/nslookup验证。

hosts文件是操作系统中用于将域名映射到IP地址的本地文本文件,它在DNS解析之前被系统优先读取。当您希望绕过公共DNS、测试网站迁移、屏蔽广告或拦截恶意域名时,直接编辑hosts文件是最基础且有效的手段。以下是修改hosts文件以实现自定义域名解析的具体操作步骤:
一、了解hosts文件的位置与作用
hosts文件是一个无扩展名的纯文本文件,其核心功能是在本地强制指定某域名对应的具体IP地址。系统在发起网络请求前会首先检查该文件,若存在匹配条目,则直接使用其中的IP,不再向DNS服务器发起查询。这一机制独立于浏览器和网络设置,对所有应用程序生效(部分应用如某些容器环境可能绕过)。
1、Windows系统中,hosts文件位于 C:\Windows\System32\drivers\etc\hosts;
2、macOS与Linux系统中,hosts文件位于 /etc/hosts;
3、该文件默认无写入权限,需管理员(Windows)或root(macOS/Linux)权限才能保存修改。
二、以管理员身份打开并编辑hosts文件
由于操作系统保护机制,直接双击打开并保存会导致权限拒绝。必须通过具备提升权限的文本编辑器进行编辑,否则修改无法生效。
1、Windows用户:右键点击“记事本”图标,选择“以管理员身份运行”,再通过记事本的“文件→打开”菜单,定位至 C:\Windows\System32\drivers\etc\ 目录,将文件类型切换为“所有文件”,选中hosts后打开;
2、macOS用户:打开“终端”,输入命令 sudo nano /etc/hosts,回车后输入当前用户密码(输入时不显示字符),进入编辑界面;
3、Linux用户(GNOME桌面):按Alt+F2,输入 gksudo gedit /etc/hosts(若未安装gksudo,可改用 sudo nano /etc/hosts)。
三、添加自定义域名解析记录
每条有效记录由IP地址、空格(或制表符)、域名三部分组成,一行一条。注释行以#开头,不会被系统解析。添加规则时需确保格式严格正确,任意多余空格或拼写错误均会导致整行失效。
1、在文件末尾另起一行,输入目标IP地址,例如 192.168.1.100;
2、在IP地址后插入至少一个空格或一个Tab键;
3、接着输入要绑定的域名,例如 test.local;
4、完整示例行:192.168.1.100 test.local;
5、如需绑定多个域名到同一IP,可在同一行IP后追加其他域名,各域名间以空格分隔,例如:127.0.0.1 example.com www.example.com。
四、保存修改并刷新系统DNS缓存
编辑完成后,若未正确保存或未清除系统缓存,新配置将不会立即生效。不同系统刷新方式不同,必须执行对应操作才能使变更起效。
1、Windows用户:在记事本中点击“文件→保存”,然后打开命令提示符(管理员模式),输入 ipconfig /flushdns 并回车;
2、macOS用户:在终端中执行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder;
3、Linux用户(systemd-resolved):执行 sudo systemd-resolve --flush-caches;若使用dnsmasq或其他本地DNS服务,需重启对应服务,例如 sudo systemctl restart dnsmasq。
五、验证hosts配置是否生效
完成刷新后,需通过独立于浏览器缓存的命令行工具确认系统级解析已更新。仅在浏览器中访问成功不能代表hosts生效,因浏览器可能使用自身DNS缓存或HTTP预加载机制。
1、Windows用户:打开命令提示符,输入 ping test.local(将test.local替换为您设置的域名),观察返回的IP是否与hosts中一致;
2、macOS/Linux用户:在终端中运行 ping -c 3 test.local 或 nslookup test.local,检查响应IP是否匹配;
3、若返回“请求超时”但IP地址正确,说明网络层连通性存在问题,而非hosts解析失败;
4、若返回原始公网IP或报错“未知主机”,请重新检查hosts文件路径、权限、格式及缓存刷新步骤。










