尝试了解 Linux /etc/hosts 文件如何处理本地和外部 IP 地址

尝试了解 Linux /etc/hosts 文件如何处理本地和外部 IP 地址

假设我有一台 Linux 服务器,其外部 IP 为 123.456.789.012,本地 IP 为 192.168.0.1。例如,如果 /etc/hosts 文件如下所示:

123.456.789.012 host2.mydomain.com
192.168.0.1 host2.mydomain.com

当服务器上的应用程序生成使用 host2.mydomain.com 发送的流量时,服务器如何知道应该使用本地 IP 地址还是外部 IP 地址(因为同一个主机名会显示两个 IP 地址)?

或者,是否需要我在这里所介绍的内容以外的其他内容来决定这一点?

或者,它只是将其作为 host2.mydomain.com 发送出去并让接收端处理它(如果是这样,如何确保用于本地网络的流量确实流向本地网络)?

答案1

来自主机(5):

For each host a single line should be present

因此,对不同的 IP 重复相同的主机名是不允许的;如果这样做,则无法保证行为。

然而,当我把

1.2.3.4 testhost 
5.6.7.8 testhost 

在 /etc/hosts 中,getent hosts testhost返回两行。

请注意,这当然与所使用的操作系统和 libc 版本高度相关。

答案2

您的机器 computer1 有一个更新的 hosts 文件:

123.456.789.012 host2.mydomain.com
192.168.0.1 host2.mydomain.com

从 computer1 发送到 host2.domain.com 的任何流量都需要解析为 IP 地址,并且优先于所有其他来源(例如 DNS)的位置是您的 /etc/hosts 文件。将使用 /etc/hosts 中主机名的第一个匹配项。因此,在您的示例中,host2.mydomain.com 将始终解析为 123.456.789.012。

答案3

但事实并非如此。

您应该使用单独的内部/外部域名,或者使用 DNS 根据网络位置提供不同的响应。

答案4

您将拥有一个本地 DNS 服务器和一个远程 DNS 服务器。因此,在主机中的机器上,您只需要拥有要使用的 IP。

相关内容