LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

hosts文件与DNS的关系

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

本地配置 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)时,操作系统会按照以下步骤进行解析:

  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.8、114.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-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号