![主机名应该解析到哪个 IP?](https://linux22.com/image/546810/%E4%B8%BB%E6%9C%BA%E5%90%8D%E5%BA%94%E8%AF%A5%E8%A7%A3%E6%9E%90%E5%88%B0%E5%93%AA%E4%B8%AA%20IP%EF%BC%9F.png)
machine.example.com
主机名应解析为哪个 IP /etc/hosts
?
- 到本地主机(127.0.0.X),
- 到本地网络(10.XXX 或 192.168.XX),
- 还是从外部可见的外部服务器IP(XXXX)?
答案1
这一切都取决于您的需求!
在正常情况下,我建议使用最省力的 IP。例如:
127.0.0.1 将导致流量仅在 TCP 堆栈内移动。
如果您输入您的 LAN 地址,则潜在的流量可能会从您的网卡发送出去,然后由您的路由器/交换机返回。
如果您输入公共 IP 地址,流量可能会离开您的网卡,通过您的路由器,然后从您的 ISP 返回到您的路由器,然后再返回到您的网卡。
实际上,各种设备应该足够智能,不会让事情变得如此糟糕,但它们有可能会发生这种情况。
另一方面,如果一台机器能够像公共服务器一样与自己联系,那么它就会变得非常有利,但根据我的经验,这仅适用于开发目的,例如,用于 Web 开发的基本 LAMP 堆栈将数据库与 Web 服务器放在同一台机器上,但在生产情况下,数据库和 Web 服务器是分开的。通过让其通过非本地主机 IP 进行通信,可以确保所有内容都更像生产情况,这是一件好事……
答案2
由于您的机器具有公共 IP,因此最好将主机名指向它。
答案3
总的来说,我同意@BParker 的观点,即在某些情况下,每种方法都更有用,并且通常将其设为本地主机别名是除某种测试环境之外最有效的资源利用方式。
但是,我还想建议,最易于管理的解决方案是根本不要有此条目,而要依靠 DNS。除非您将 DNS 配置为对本地回复执行特殊技巧,否则这通常会为您提供机器的全球可路由地址,但它为您提供了管理网络服务的灵活性,而无需在每台机器上查找零散条目。如果您的服务连接到最佳machine.domain.com
或service.domain.com
名称,您可以更改服务的托管位置并移动机器,而无需重新编程软件或更改分散的/etc/hosts
文件。
答案4
常识:
如果您有一个外部域,那么 localhost 或本地网络有什么用处? 没有。
即使在内部,如果我输入 machine.example.com,我对 localhost 也不感兴趣。