网络配置:resolv.conf 和 hosts

网络配置:resolv.conf 和 hosts

我读手册,我有点困惑。这是我不明白的:

When your system tries to resolve a hostname to an IP address or determine the
ostname for an IP address, it refers to the /etc/hosts file before using the
name servers

所以:

1)系统何时尝试解析主机名?据我了解,当数据报的标头指定主机名时,对吗?

2)为什么提到hosts之前resolv.conf

3)主机名解析完成后,系统转向路由表?

答案1

1) 通常情况下,您的系统会使用“resolv.conf”上的 DNS 服务器。如果您访问 www.yahoo.com,您的系统将联系 DNS,DNS 返回该地址的 IP 地址,然后您的系统就知道哪个 IP 地址与 www.yahoo.com 地址相对应。

2)它hosts在尝试解析地址之前使用,因为hosts文件用于覆盖您尝试解析的任何地址。即:您可能已经有一个条目,127.0.0.1 localhost告诉系统如果您尝试联系名为“localhost”的主机,它将使用地址 127.0.0.1 来进行联系,在这种情况下,它是您的 eth0 上的 lopback 接口。

3) 系统通过直接查找hosts或联系“resolv.conf”中的 DNS 服务器知道主机地址后,它会查看路由表以查看哪些规则解释了如何处理以所获得的 IP 地址为目的地的流量。

例如:假设您的网络上有两台计算机,主机名分别为“Ubuntu-One”和“Ubuntu-Two”,每台计算机可能都会在文件中分配此名称host

127.0.0.1 localhost Ubuntu-One用于计算机的 Ubuntu-One 127.0.0.1 localhost Ubuntu-Two用于计算机的 Ubuntu-Two

这是自动完成的,这就是您可以在各个终端上解析“localhost”、“Ubuntu-One”和“Ubuntu-Two”的原因。

尝试从 Ubuntu-One ping Ubuntu-Two,Ubuntu-One 将联系您resolv.conf文件中的 DNS 服务器,服务器会说“我不知道与该地址相关的任何 IP”,您的 PC 将回复“未知主机名”。将此行添加<IPADDRESSFROMUBUNTU-TWO Ubuntu-TwohostsUbuntu-One 文件中,当您再次尝试 ping 时,系统将在主机文件上看到 Ubuntu-Two 的 IP 地址是 xxxx,然后会检查您的路由表以查看哪条规则适用于该 IP 或 IP 范围,并使用指定的网关(或无网关)联系主机。这就是为什么hosts以前总是这样resolv.conf

答案2

每当您想要连接任何内容时,它至少需要将主机名解析为 IP。它首先使用 /etc/hosts 中的设置,因为它是系统本地的。如果您没有提供它,那么它将从您的 DNS 服务器(在 resolv.conf 中定义)中查找它。

相关内容