hosts 并不是传统意义上的后缀名文件,它本身是没有扩展名的纯文本系统文件,很多人习惯称呼它为 hosts 后缀名,核心作用是本地域名解析,优先级高于系统 DNS,电脑访问域名的时候会优先读取 hosts 里面的映射记录,把域名直接绑定指定 IP,因为 Windows macOS Linux 系统都自带这个文件,日常运维调试网站屏蔽域名本地测试都会用到,很多新手误区就是把它理解成 hosts.xxx 后缀文件,这里要区分清楚,hosts 是文件名,不是后缀,接下来分层讲解文件属性 存放路径 编辑规则 作用原理 常见误区和操作要点。
一 核心基础定义
hosts 文件全称 host static table 主机静态映射表
文件类型 纯文本无扩展名文件
编码要求 优先使用 ANSI 或者 UTF8 无 BOM 编码,带 BOM 容易解析异常
默认状态 系统自带空白模板,只有注释说明,没有生效映射条目
核心原理 域名解析顺序 先查询 hosts 静态记录,再向 DNS 服务器发起查询,hosts 匹配成功就不再请求外网 DNS
二 各系统默认存放路径清单
| 操作系统 | 完整路径 |
|---|---|
| Windows | C Windows System32 drivers etc hosts |
| macOS | etc hosts 也就是根目录下 etc 文件夹 |
| Linux | etc hosts |
补充要点 Windows 默认是隐藏文件夹,需要打开显示隐藏项目才能看到 etc 目录,mac 和 Linux 是根目录 etc,需要管理员权限才能修改保存
三 文件内部格式规范
每一条生效记录格式
IP 地址 域名
示例
127.0.0.1
规则说明
1 IP 和域名之间使用空格或者 Tab 分隔
2 井号开头的行是注释,不会生效
3 一行可以写多个域名,同一个 IP 绑定多个域名
4 不支持通配符原生写法,原生 hosts 不能直接写 .test.com,这个是高频坑点
四 主要用途清单
1 本地网站开发测试 把域名指向本机 127.0.0.1,模拟正式域名访问
2 屏蔽广告恶意网站 把广告域名指向无效 IP 比如 0.0.0.0
3 加速域名解析 跳过公共 DNS,直接固定 IP,减少解析延迟
4 临时解决 DNS 污染 手动指定正确 IP 完成域名解析
五 容易混淆的相关后缀文件区分
很多人会把 hosts 和其他后缀文件搞混,做表格对比
| 名称 | 类型 | 说明 |
|---|---|---|
| hosts | 无后缀系统文件 | 静态域名映射表 |
| hosts.ics | 日历后缀 | Outlook 日历文件,和系统 hosts 无关 |
| hosts.bak | 备份后缀 | hosts 修改前手动备份文件,bak 是备份后缀 |
| hosts.txt | txt 文本后缀 | 用户复制保存产生,这个 txt 版本系统不会识别生效 |
重点提醒 如果保存成 hosts.txt,系统不会读取这个文件,必须去掉 txt 后缀,文件名就叫 hosts,不能带扩展名
六 修改 hosts 常见故障要点
1 保存失败 权限不足,需要管理员身份运行编辑器
2 修改之后不生效 系统 DNS 缓存没有刷新,Windows 执行 ipconfig flushdns,mac 和 Linux 需要刷新系统缓存
3 编码错误 保存成 UTF8 带 BOM,hosts 解析失败,条目全部无效
4 杀毒软件拦截 部分安全软件会锁定 hosts,防止恶意篡改,修改前需要临时放行
七 hosts 和 DNS 的关系
hosts 属于本地静态解析表,属于本地优先解析,DNS 是远程服务器解析,hosts 优先级更高,但是 hosts 只支持静态固定 IP,如果目标网站 IP 经常变动,hosts 就会失效,这也是它最大局限
【常见问题】
问题 1 hosts 后缀名是不是就是 hosts 这个文件的扩展名
回答 1 hosts 后缀名这个说法其实是误区,hosts 后缀名对应的文件本身没有扩展名,hosts 就是完整文件名,不是后缀,它是系统静态域名解析文件
问题 2 hosts 后缀名如果保存成 hosts.txt 还可以正常生效吗
回答 2 hosts 后缀名相关文件保存成 hosts.txt 之后系统不会识别,因为系统只读取无后缀的 hosts 文件,txt 属于额外后缀,必须删除 txt 后缀才能生效
问题 3 hosts 后缀名相关备份文件 hosts.bak 是什么作用
回答 3 hosts 后缀名相关备份文件 hosts.bak 是备份副本,bak 是备份后缀,作用是修改原 hosts 出错之后,可以把 bak 文件恢复还原,原 hosts 系统不会读取 bak 文件
问题 4 hosts 后缀名修改之后为什么没有效果
回答 4 hosts 后缀名修改后不生效一般是 DNS 缓存没有刷新,或者文件编码错误权限不足,也有可能是文件错误保留了 txt 后缀,系统根本没有加载这个 hosts 文件
【免责申明】
本内容为系统 hosts 文件技术学习参考,修改 hosts 可能影响网络访问,请勿随意篡改,遵守相关网络管理规定,操作前建议做好原文件备份。


