假设我有一个外部IP为123.456.789.012,本地IP为192.168.0.1的Linux服务器。 如果它是/ etc / hosts文件,例如,
123.456.789.012 host2.mydomain.com 192.168.0.1 host2.mydomain.com
当服务器上的应用程序生成使用host2.mydomain.com发送的stream量时,服务器如何知道是使用本地还是外部IP地址(因为同一主机名显示两个IP地址)?
或者,它是否需要比我在这里介绍的更多的东西来决定呢?
或者,它只是作为host2.mydomain.com发送出去,并让接收端处理它(如果是的话,如何确保用于本地networking的stream量确实stream向本地networking)?
来自主人(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版本。
您的计算机computer1具有更新的主机文件:
123.456.789.012 host2.mydomain.com 192.168.0.1 host2.mydomain.com
从计算机1发送到host2.domain.com的任何stream量都需要parsing为IP地址,并且优先于所有其他来源(例如DNS)的位置是您的/ etc / hosts文件。 首先使用/ etc / hosts中的主机名匹配。 因此,在您的示例中,host2.mydomain.com将始终parsing为123.456.789.012。
它不。
您应该使用单独的内部/外部域名,或使用DNS根据networking位置提供不同的响应。
Linux手册页清楚地说“每个IP地址一行”,所以你在做什么是未定义的。 你可以得到文件中的第一个,最后一个或随机的。
在这种情况下使用ip更好,也许基于一些标准。
你将有一个本地DNS服务器和一个远程DNS服务器。 因此,在主机上的机器上,您只需要使用IP即可。