假设我有一台 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。