在互联网的庞大体系中,我们每天通过域名(如 www.google.com)访问无数网站,而计算机之间通信依赖的却是IP地址(如 250.191.78),负责将人类易于记忆的域名翻译为机器可读的IP地址的系统,就是域名系统(DNS),在DNS系统成为全球标准之前,甚至在今天,我们的操作系统中都保留着一个更古老、更直接的“本地电话簿”——hosts文件,它扮演着一个本地DNS的角色,为我们提供了一种手动控制域名解析的强大能力。

什么是 hosts 文件?
hosts文件是一个没有扩展名的纯文本文件,其核心功能是建立一个“主机名到IP地址”的静态映射表,当您在浏览器或其他网络应用中输入一个域名时,操作系统会遵循一个固定的查询顺序,它会首先检查本地的hosts文件,看是否存在该域名的记录,如果找到了,操作系统会立即使用文件中指定的IP地址进行访问,而不会再向任何外部DNS服务器发出请求,只有在hosts文件中找不到对应记录时,系统才会转而查询网络中配置的DNS服务器(如运营商提供的DNS或公共DNS如8.8.8.8)。
这种“本地优先”的原则,赋予了hosts文件极高的优先级,使其成为一个可以覆盖全局DNS设置的强大工具。
hosts 文件的工作原理
为了更清晰地理解其工作流程,我们可以将其想象为一个简单的决策树:
- 用户发起请求:您在地址栏输入
www.example.com并按回车。 - 系统查询hosts文件:操作系统立即打开本地的hosts文件,逐行查找是否有
www.example.com的条目。 - 场景A:找到记录:如果文件中存在一行
184.216.34 www.example.com,系统会直接使用184.216.34这个IP地址与服务器建立连接,整个过程跳过了DNS查询,速度极快。 - 场景B:未找到记录:如果hosts文件中没有关于
www.example.com的任何信息,系统则会向预设的DNS服务器(168.1.1或8.8.8)发送查询请求,获取该域名对应的IP地址,然后再进行访问。
hosts 文件的常见应用场景
hosts文件的强大之处在于其灵活性和可控性,使其在多种场景下都非常有用。
- 本地开发与测试:对于Web开发者而言,这是最常见的用途,当开发一个新网站时,域名可能尚未指向开发服务器,开发者可以通过在hosts文件中添加一条记录,将域名(如
newsite.local)指向本地服务器(如0.0.1)或内网测试服务器的IP地址,从而模拟真实的线上环境进行调试,无需等待DNS生效。 - 屏蔽广告与恶意网站:这是另一个广泛的应用,许多广告和恶意软件依赖于从特定域名加载内容,我们可以将这些已知的恶意或广告域名指向本地回环地址
0.0.1,这样,当浏览器尝试加载这些资源时,实际上是在访问您自己的电脑,由于电脑上没有运行相应的服务器,请求自然会失败,从而达到屏蔽广告和保护安全的目的。 - 加速访问特定网站:对于一些IP地址相对固定且访问频繁的网站,手动将其域名和IP地址写入hosts文件,可以省去每次访问时的DNS查询时间(虽然通常只有几十毫秒),实现微小的访问加速。
- 访问故障或有问题的服务:有时,某个网站的DNS解析可能出现临时故障,或者您想绕过DNS污染访问特定服务,如果能找到该网站的正确IP地址,就可以通过修改hosts文件来“强制”访问。
如何修改 hosts 文件
修改hosts文件需要管理员或root权限,因为它是系统核心文件之一,不同操作系统的路径和修改方式略有不同。

| 操作系统 | 文件路径 | 修改注意事项 |
|---|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts |
需要以“管理员身份”运行记事本或其他文本编辑器,然后打开文件进行编辑。 |
| macOS | /etc/hosts |
需要在终端中使用 sudo nano /etc/hosts 命令,输入密码后进行编辑。 |
| Linux | /etc/hosts |
同样需要使用 sudo 权限,sudo vim /etc/hosts 或 sudo gedit /etc/hosts。 |
文件格式非常简单,每一行一个映射,格式为:IP地址 + 空格或制表符 + 域名,以 开头的行为注释行,用于说明或禁用某条记录。
# 这是一条注释,用于屏蔽一个广告域名
127.0.0.1 ad.example.com
# 将本地开发域名指向本机
127.0.0.1 myproject.dev
# 强制访问GitHub的某个服务器
140.82.112.4 github.com
注意事项与潜在风险
尽管hosts文件功能强大,但使用不当也可能带来问题。
- 安全风险:恶意软件可能会篡改您的hosts文件,将银行、电商等网站的域名指向钓鱼网站的IP地址,从而窃取您的个人信息,定期检查hosts文件的内容是一个良好的安全习惯。
- 网络故障:错误的或过时的记录(一个网站更换了IP,但您的hosts文件中仍是旧地址)会导致您无法正常访问该网站,当遇到某个网站无法访问而其他网站正常时,检查hosts文件是一个重要的排错步骤。
- 维护成本:手动维护大量记录会非常繁琐且容易出错,通常只针对少数特定需求进行修改。
在修改前,最好备份原始的hosts文件,以便在出现问题时可以快速恢复。
相关问答 (FAQs)
问题1:修改了 hosts 文件后,为什么在浏览器中访问域名没有立即生效?
解答: 这是因为操作系统为了提高网络访问效率,会将DNS查询结果缓存起来,即使您修改了hosts文件,系统可能仍在使用缓存中旧的IP地址,为了确保修改立即生效,您需要手动刷新系统的DNS缓存,在Windows系统中,可以打开命令提示符(管理员模式)并输入 ipconfig /flushdns 命令;在macOS或Linux系统中,可以使用 sudo dscacheutil -flushcache 或 sudo systemctl restart nscd 等命令(具体命令因系统版本而异),刷新缓存后,系统会重新读取hosts文件,您的修改便会生效。

问题2:hosts 文件和公共DNS服务(如 8.8.8.8)是替代关系吗?
解答: 它们不是替代关系,而是一种协同工作的分层关系,hosts文件是本地第一层解析,具有最高优先级;公共DNS服务是远程第二层解析,是默认的查询方式,您可以将hosts文件视为一个“手动覆盖”工具,用于处理特殊情况;而将DNS服务视为“自动查询”工具,用于处理绝大多数日常的互联网访问需求,两者结合,既保证了互联网访问的便捷性,又提供了对特定域名进行精细控制的可能性。