LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

hosts文件与DNS的关系

freeflydom
2025年3月17日 16:16 本文热度 424

本地配置 hosts 文件和 DNS 解析密切相关,它们都涉及到将域名解析为 IP 地址的过程,但它们的作用机制和优先级有所不同。下面详细讲解 hosts 文件的作用、DNS 解析的流程,以及它们之间的关系。


1. 什么是 hosts 文件?

hosts 文件是一个本地配置文件,它用于手动指定域名与 IP 地址的对应关系,类似于一个本地 DNS 解析表。

hosts 文件的特点

  • 是操作系统本地的静态域名解析文件。
  • 具有 最高优先级,比 DNS 服务器解析优先执行。
  • 仅对本机生效,无法影响网络中的其他设备。

hosts 文件的默认路径

不同操作系统 hosts 文件的路径如下:

  • WindowsC:\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)时,操作系统会按照以下步骤进行解析:

  1. 浏览器缓存(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。

  2. 检查 hosts 文件(本地解析,优先级高于 DNS 服务器查询)。

    • 如果 hosts 文件中已有该域名的映射,则直接返回对应的 IP 地址,结束解析过程。
  3. 查询本地 DNS 缓存(避免重复查询,提高解析速度)。

    • 系统会检查本机 DNS 缓存(Windows 可用 ipconfig /displaydns 查看)。
    • 如果缓存命中,则直接使用缓存的 IP。
  4. 请求本地 DNS 服务器(通常是 ISP 提供的)

    • 若 hosts 文件和本地缓存中都没有找到,操作系统会向配置的 DNS 服务器(如 8.8.8.8114.114.114.114)发起查询。
  5. DNS 服务器递归查询

    • 若本地 DNS 服务器无该域名的解析记录,则逐级向上级 DNS 服务器查询,直到获取 IP 地址。
    • 例如:
      • 先查根 DNS 服务器 (.)
      • 根 DNS 服务器返回 .com 顶级域名服务器(TLD)
      • .com 服务器返回 example.com 的权威 DNS 服务器
      • example.com 服务器返回最终 IP 地址
  6. DNS 解析结果返回客户端

    • 解析完成后,系统将 IP 地址返回给应用程序,并缓存该解析结果。

3. hosts 文件与 DNS 解析的关系

hosts 文件 vs. DNS 解析

hosts 文件DNS 服务器解析
优先级优先级高于 DNS,先查本地 hostshosts 解析失败后才会请求 DNS
生效范围仅作用于本机,不影响其他设备适用于整个网络或互联网
维护成本需手动维护,适合临时解析自动更新,适合长期使用
适用场景开发调试、屏蔽特定网站、内网解析互联网访问、动态解析

解析过程示例

假设 hosts 文件中有以下记录:

192.168.1.100   example.com

当访问 example.com 时:

  1. 系统先查 hosts 文件,发现匹配的 192.168.1.100,直接返回该 IP。
  2. 不会进行 DNS 查询,即使 example.com 的真实 IP 不是 192.168.1.100,也不会去 DNS 服务器获取正确的 IP。

如果 hosts 文件中没有 example.com

  1. 系统会查询 本地 DNS 缓存,若缓存命中,则返回缓存的 IP。
  2. 否则,系统会向 配置的 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.com
    
    这样访问 www.google.com 时,不再查询 DNS,而是直接访问 203.208.39.99

3. 屏蔽特定网站

  • 通过 hosts 屏蔽广告、恶意网站:
    127.0.0.1   ads.example.com
    127.0.0.1   tracking.example.com
    
    这样 ads.example.com 和 tracking.example.com 都会解析到 127.0.0.1,阻止访问。

4. 解决 DNS 解析错误

  • 如果 ISP 提供的 DNS 解析错误,可以手动配置:
    8.8.8.8   example.com
    

5. 修改 hosts 文件的注意事项

Windows

  1. 以管理员权限打开 hosts 文件
    • 在搜索栏输入 cmd,右键“以管理员身份运行”。
    • 使用 notepad 编辑 hosts
      notepad C:\Windows\System32\drivers\etc\hosts
      
    • 修改后保存,可能需要重启网络或清除 DNS 缓存:
      ipconfig /flushdns
      

Linux / macOS

  1. 使用 sudo 编辑 hosts 文件
    sudo nano /etc/hosts
    
  2. 保存后刷新 DNS 缓存
    sudo dscacheutil -flushcache   # macOS
    sudo systemctl restart nscd     # Linux(如果使用 nscd)
    

总结

  • hosts 文件是本地的静态 DNS 解析表,优先级高于 DNS 服务器
  • DNS 解析是一个层级查询过程,如果 hosts 解析失败,系统才会查询 DNS。
  • hosts 适用于本地开发、临时调试、屏蔽网站,但不适合长期维护大量域名。
  • 修改 hosts 后,可能需要清除 DNS 缓存才能生效

如果你遇到 DNS 解析问题,优先检查 hosts 文件,再检查本地 DNS 配置! 🚀

转自https://juejin.cn/post/7482297501594976292


该文章在 2025/3/17 16:16:59 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved