为什么不将主机名分配给 /etc/hosts 中的环回地址?

为什么不将主机名分配给 /etc/hosts 中的环回地址?

因此,我理解主机名应该(至少在 Debian 系统中)设置在 中/etc/hostname。要获取 FQDN(通过hostname -f),系统会从主机名中找到 IP /etc/hosts,然后返回行中的第一个条目。

因此,如果主机名是,server1并且位于/etc/hosts

192.0.2.1    server1.example.com    server1

它将返回server1.example.com。所以这就是许多网站上的描述。但我在想:为什么不将主机名分配给环回地址?就像你对所做的那样localhost

127.0.0.1    server1.example.com    server1    localhost

使用这种方法,您无需知道外部 IP 地址。此外,可能使用 FQDN 的应用程序将直接在系统上发出请求,而不是通过网络。

那么,为什么不这样做呢?为什么互联网上大多数示例都使用外部 IP 地址?

答案1

可以出于多种原因,这是一个坏主意

  • 如果您确实有一个 IP(并且与其他主机通信),强烈建议将主机名放在外部已知 IP 的前面。

    • 某些协议可能会说“告诉对方您的主机名及其 IP 地址”,“好的。对方,我是 foo.localnetwork(127.0.0.1)”。对方将收到此数据包,在 IP 级别上是外部 IP,但在协议级别上是 127.0.0.1 IP,因此如果该协议需要使用公布的信息而不是 IP 级别的信息,则交换可能会很困难(例如,SIP 可能会出现问题...)

    • 此外,一些服务仅绑定在持有与主机名关联的 IP 的接口上,因此这些服务只能通过环回设备与主机通信,而不能与其他任何人通信......

答案2

这是默认设置,至少在新的 Ubuntu 版本中是如此。

这是我的/etc/hosts配置:

127.0.0.1   localhost.localdomain localhost
127.0.1.1   sprinkler.internal.lan sprinkler

它不会造成任何问题,事实上,它还有一个额外的好处,就是某些操作不需要有效的 DNS。

我个人倾向于添加更多条目,例如本地 apt repo、一些构建器等。

相关内容