本地配置 hosts 文件和 DNS 解析密切相关,它们都涉及到将域名解析为 IP 地址的过程,但它们的作用机制和优先级有所不同。下面详细讲解 hosts 文件的作用、DNS 解析的流程,以及它们之间的关系。
1. 什么是 hosts 文件?
hosts 文件是一个本地配置文件,它用于手动指定域名与 IP 地址的对应关系,类似于一个本地 DNS 解析表。
hosts 文件的特点
- 是操作系统本地的静态域名解析文件。
- 具有 最高优先级,比 DNS 服务器解析优先执行。
- 仅对本机生效,无法影响网络中的其他设备。
hosts 文件的默认路径
不同操作系统 hosts 文件的路径如下:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux / macOS:
/etc/hosts
示例 hosts 文件
127.0.0.1 localhost
192.168.1.100 test.local
8.8.8.8 google.com
作用
- 访问
localhost直接解析到127.0.0.1(本机)。 - 访问
test.local时,解析到192.168.1.100。 - 访问
google.com时,解析到8.8.8.8,即强制指定 IP,而不是让系统查询外部 DNS。
2. 什么是 DNS 解析?
DNS(Domain Name System,域名系统)是用于将域名解析为 IP 地址的网络服务。它是一个层级分布式系统,包含多个解析步骤。
DNS 解析流程
当你在浏览器或终端访问一个域名(如 example.com)时,操作系统会按照以下步骤进行解析:
浏览器缓存(Browser DNS Cache) 浏览器会缓存最近解析的 域名-IP 对应关系,减少重复的 DNS 查询,加快访问速度。
优先级:如果浏览器缓存中有该域名的解析记录,则不会继续查询 hosts 或 DNS 服务器。 有效期(TTL,Time To Live):浏览器的缓存时间通常较短,如 Chrome 可能在几分钟后自动过期。👉 如何清除浏览器缓存? Chrome:访问 chrome://net-internals/#dns,点击 Clear host cache。 Firefox:访问 about:networking#dns,点击 Clear DNS Cache。
检查
hosts文件(本地解析,优先级高于 DNS 服务器查询)。- 如果
hosts文件中已有该域名的映射,则直接返回对应的 IP 地址,结束解析过程。
- 如果
查询本地 DNS 缓存(避免重复查询,提高解析速度)。
- 系统会检查本机 DNS 缓存(Windows 可用
ipconfig /displaydns查看)。 - 如果缓存命中,则直接使用缓存的 IP。
- 系统会检查本机 DNS 缓存(Windows 可用
请求本地 DNS 服务器(通常是 ISP 提供的)。
- 若
hosts文件和本地缓存中都没有找到,操作系统会向配置的 DNS 服务器(如8.8.8.8、114.114.114.114)发起查询。
- 若
DNS 服务器递归查询:
- 若本地 DNS 服务器无该域名的解析记录,则逐级向上级 DNS 服务器查询,直到获取 IP 地址。
- 例如:
- 先查根 DNS 服务器 (
.) - 根 DNS 服务器返回
.com顶级域名服务器(TLD) .com服务器返回example.com的权威 DNS 服务器example.com服务器返回最终 IP 地址
- 先查根 DNS 服务器 (
DNS 解析结果返回客户端:
- 解析完成后,系统将 IP 地址返回给应用程序,并缓存该解析结果。
3. hosts 文件与 DNS 解析的关系
hosts 文件 vs. DNS 解析
hosts 文件 | DNS 服务器解析 | |
|---|---|---|
| 优先级 | 优先级高于 DNS,先查本地 hosts | hosts 解析失败后才会请求 DNS |
| 生效范围 | 仅作用于本机,不影响其他设备 | 适用于整个网络或互联网 |
| 维护成本 | 需手动维护,适合临时解析 | 自动更新,适合长期使用 |
| 适用场景 | 开发调试、屏蔽特定网站、内网解析 | 互联网访问、动态解析 |
解析过程示例
假设 hosts 文件中有以下记录:
192.168.1.100 example.com
当访问 example.com 时:
- 系统先查
hosts文件,发现匹配的192.168.1.100,直接返回该 IP。 - 不会进行 DNS 查询,即使
example.com的真实 IP 不是192.168.1.100,也不会去 DNS 服务器获取正确的 IP。
如果 hosts 文件中没有 example.com:
- 系统会查询 本地 DNS 缓存,若缓存命中,则返回缓存的 IP。
- 否则,系统会向 配置的 DNS 服务器 发送查询请求,获取最终的 IP 地址。
4. hosts 文件的应用场景
1. 本地开发和测试
将测试域名指向本机:
127.0.0.1 myproject.local在浏览器输入
myproject.local,相当于访问127.0.0.1,方便调试。将测试环境域名指向特定服务器:
192.168.1.50 test.example.com让
test.example.com解析到内网服务器,而不是公网服务器。
2. 跳过 DNS 解析
- 加速访问某些网站(如果知道 IP,可以直接指定):
这样访问203.208.39.99 www.google.comwww.google.com时,不再查询 DNS,而是直接访问203.208.39.99。
3. 屏蔽特定网站
- 通过
hosts屏蔽广告、恶意网站:
这样127.0.0.1 ads.example.com 127.0.0.1 tracking.example.comads.example.com和tracking.example.com都会解析到127.0.0.1,阻止访问。
4. 解决 DNS 解析错误
- 如果 ISP 提供的 DNS 解析错误,可以手动配置:
8.8.8.8 example.com
5. 修改 hosts 文件的注意事项
Windows
- 以管理员权限打开
hosts文件:- 在搜索栏输入
cmd,右键“以管理员身份运行”。 - 使用
notepad编辑hosts:notepad C:\Windows\System32\drivers\etc\hosts - 修改后保存,可能需要重启网络或清除 DNS 缓存:
ipconfig /flushdns
- 在搜索栏输入
Linux / macOS
- 使用
sudo编辑hosts文件:sudo nano /etc/hosts - 保存后刷新 DNS 缓存:
sudo dscacheutil -flushcache # macOS sudo systemctl restart nscd # Linux(如果使用 nscd)
总结
hosts文件是本地的静态 DNS 解析表,优先级高于 DNS 服务器。- DNS 解析是一个层级查询过程,如果
hosts解析失败,系统才会查询 DNS。 hosts适用于本地开发、临时调试、屏蔽网站,但不适合长期维护大量域名。- 修改
hosts后,可能需要清除 DNS 缓存才能生效。


400 186 1886






