在 Linux 系统中,hosts 文件是一个基础却至关重要的系统配置文件,它用于将主机名映射到 IP 地址,在域名解析系统中扮演着本地“DNS 缓存”的角色,与通过 DNS 服务器逐级查询域名不同,hosts 文件提供了直接的映射关系,能够加快解析速度、实现域名测试或屏蔽特定网站,是系统管理员和开发人员日常工作中频繁接触的工具。

hosts 文件的位置与基本结构
hosts 文件在不同 Linux 发行版中的路径略有差异,但通常位于 /etc/hosts,这是一个纯文本文件,所有用户(包括 root)均可读取,但只有 root 用户或有 sudo 权限的用户才能修改,其基本结构由 IP 地址、主机名 和 可选注释 三部分组成,每行一个映射关系,用空格或制表符分隔。
0.0.1 localhost
192.168.1.100 server1.localdomain server1
::1 localhost ip6-localhost ip6-loopback
- IP 地址:可以是 IPv4(如
168.1.100)或 IPv6(如:1),IPv6 地址需用方括号括起来(如[::1])。 - 主机名:可以是完整域名(如
www.example.com)或简短名称(如server1),多个主机名用空格分隔。 - 注释:以 开头,用于说明配置目的,不会被系统解析。
hosts 文件的核心功能
本地域名解析加速
当用户在浏览器中输入网址时,系统会优先查询 hosts 文件,若存在对应映射,则直接返回 IP 地址,无需请求 DNS 服务器,可显著提升访问速度(尤其是局域网内服务器或频繁访问的本地站点)。
测试与开发环境配置
在开发过程中,开发者常需通过自定义域名访问本地服务(如 localhost 指向开发环境),通过修改 hosts 文件,可将测试域名(如 dev.example.com)映射到本地 IP(0.0.1),无需配置正式 DNS 即可模拟线上环境。
屏蔽恶意网站或广告
通过将恶意域名或广告服务器的 IP 地址映射到 0.0.1 或无效地址(如 0.0.0),可阻止系统访问这些站点,实现基础的广告过滤或内容屏蔽。
0.0.0 ads.example.com
0.0.0.0 tracker.malware.com
局域网设备访问
在局域网中,可通过为设备配置固定 IP 和主机名,使其他设备通过主机名直接访问,无需记忆复杂的 IP 地址,将局域网打印机(168.1.200)映射为 printer.local,即可通过 printer.local 访问。
hosts 文件的常见配置场景
场景 1:本地开发环境配置
假设本地运行了一个 Web 服务,监听 0.0.1:8080,需通过 dev.local 访问,可在 hosts 文件中添加:

0.0.1 dev.local
保存后,浏览器访问 http://dev.local 即可指向本地服务。
场景 2:屏蔽广告域名
以屏蔽某广告平台为例,将广告域名映射到 0.0.0:
0.0.0 ad.doubleclick.net
0.0.0.0 googlesyndication.com
场景 3:映射多个域名到同一 IP
若需将多个子域名指向同一服务器(如 blog.example.com 和 forum.example.com 均指向 168.1.100),可配置为:
168.1.100 blog.example.com
192.168.1.100 forum.example.com
hosts 文件的修改与权限管理
修改文件
由于 hosts 文件属于系统关键文件,修改时需谨慎,推荐使用文本编辑器(如 nano、vim)以 root 权限编辑:
sudo nano /etc/hosts
修改后保存(nano 中按 Ctrl+O 保存,Ctrl+X 退出)。
权限与所有权
hosts 文件的默认权限为 644(所有者可读写,组用户和其他用户只读),所有者为 root,若权限被意外修改,可通过以下命令恢复:

sudo chmod 644 /etc/hosts sudo chown root:root /etc/hosts
配置验证
修改后,可通过 ping 命令测试域名是否正确解析:
ping dev.local
若输出显示正确的 IP 地址(如 0.0.1),则配置生效。
注意事项与最佳实践
- 避免冲突:确保 hosts 文件中的映射与 DNS 服务器返回结果不冲突,否则可能导致解析异常。
- 定期清理:屏蔽广告或测试后,及时清理无效配置,避免文件臃肿。
- 备份机制:修改前建议备份原文件(
sudo cp /etc/hosts /etc/hosts.bak),以便出错时快速恢复。 - IPv6 兼容性:若需支持 IPv6,需确保配置格式正确(如
:1对应localhost)。
hosts 文件与 DNS 的优先级
Linux 系统的域名解析顺序由 /etc/nsswitch.conf 文件控制,默认情况下,hosts 文件的优先级高于 DNS,若需调整解析顺序,可编辑 nsswitch.conf 中的 hosts 行,
hosts: files dns mdns
表示优先查询 hosts 文件(files),再查询 DNS(dns),最后查询多播 DNS(mdns)。
hosts 文件作为 Linux 系统中轻量级的本地域名解析工具,凭借其高效、灵活的特性,在开发测试、网络管理、安全防护等领域发挥着不可替代的作用,合理配置 hosts 文件不仅能提升系统效率,还能简化复杂网络环境下的设备访问,掌握其基本原理与操作方法,是每一位 Linux 用户必备的技能。



















