note network

/etc/hosts 是一个在大多数操作系统中都存在的计算机文件,包括 Unix/Linux 系统、Windows 系统和其他类 Unix 系统。这个文件的主要作用是用于将主机名(或域名)映射到其对应的 IP 地址。当你在浏览器或其他网络服务中访问一个域名时,系统会首先检查 /etc/hosts 文件来解析这个域名。

这个文件的工作原理和作用可以这样解释:

  1. 域名解析: 当你访问一个网站(比如 www.example.com)时,你的电脑需要知道这个网站的 IP 地址。IP 地址是互联网上每台计算机的唯一标识。

  2. 优先级: 在进行 DNS 查询(即询问域名服务器该域名的 IP 地址)之前,操作系统首先会查看 /etc/hosts 文件。如果这个文件中存在相应的条目,系统就会使用这个文件中的信息,而不是去请求 DNS 服务器。

  3. 格式: /etc/hosts 文件中的每一行都包含一个 IP 地址和一个或多个与之关联的主机名,二者之间通常由空格或制表符分隔。例如,一行可以是 192.168.1.10 example.com,这意味着当你尝试访问 example.com 时,你的电脑会直接连接到 IP 地址 192.168.1.10

  4. 用途: 这个文件常用于测试和开发环境,例如,当你在本地开发一个网站时,你可以在 /etc/hosts 文件中为它分配一个虚拟域名。它也用于屏蔽不希望访问的网站,例如,通过将特定网站的域名映射到 127.0.0.1(本机地址),来阻止这些网站的访问。

  5. 手动编辑: /etc/hosts 文件可以手动编辑,但需要管理员权限。编辑时应该小心,因为错误的配置可能导致网络服务出现问题。

总之,/etc/hosts 文件是一个简单但功能强大的工具,用于控制计算机如何解析特定的主机名。它的优先级高于 DNS,因此可以用于覆盖 DNS 解析结果或在没有 DNS 服务的环境中提供名字解析功能。

VS resolv.conf

区别和关系

  • 区别hosts 文件用于本地静态映射主机名到 IP 地址,而 resolv.conf 文件用于配置用于 DNS 查询的服务器。
  • 关系:在解析一个主机名时,系统通常先查看 hosts 文件。如果 hosts 文件中没有相应的条目,它则会使用 resolv.conf 文件中指定的 DNS 服务器进行解析。
  • 为什么同时存在:这两个文件共存提供了灵活性和备选方案。hosts 文件为本地或特定的名字解析提供了简单直接的方法,而 resolv.conf 允许访问更广泛的 DNS 系统。

在实际应用中,hosts 文件通常用于小规模或临时的域名解析需求,而 resolv.conf 文件则用于日常的、基于 DNS 的域名解析。

/etc/hosts

  1. 作用hosts 文件用于将特定的主机名映射到 IP 地址。当系统尝试解析一个主机名时,它会首先查看 hosts 文件,看是否有对应的条目。

  2. 直接映射hosts 文件提供了一种直接将主机名映射到 IP 地址的方法,不需要通过 DNS 查询。

  3. 本地解析:它常用于本地网络环境的主机名解析,或在没有 DNS 服务的环境中提供名字解析服务。它也常被用于测试,或在 DNS 解析出现问题时作为临时解决方案。

  4. 格式:每行包含一个 IP 地址和一个或多个与该 IP 地址关联的主机名。

    127.0.0.1 localhost
    192.168.1.10 myserver.example.com

/etc/resolv.conf

  1. 作用resolv.conf 文件用于配置 DNS 解析器的设置,如 DNS 服务器地址和搜索域。

  2. DNS 解析:与 hosts 文件的直接映射不同,resolv.conf 指定了在域名解析请求时应当联系的 DNS 服务器。

  3. 灵活性resolv.conf 提供了更广泛的域名解析能力,可以解析全球任何公共域名,而不仅限于静态定义的几个条目。

  4. 格式:通常包括一个或多个 nameserver 行和可选的 search 行。

    nameserver 8.8.8.8
    search example.com