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

所以我明白主机名应该(至less在Debian系统中)设置在/etc/hostname 。 要获取FQDN(通过hostname -f ),系统通过/etc/hosts从主机名中findIP,然后返回该行中的第一个条目。

所以如果主机名是server1并且在/etc/hosts

 192.0.2.1 server1.example.com server1 

它将返回server1.example.com 。 所以这是如何在许多网站desribed。 但我在想:为什么不把主机名分配给回送地址? 就像你用localhost做的那样:

 127.0.0.1 server1.example.com server1 localhost 

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

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

可能是一个坏主意,有几个原因

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

    • 有些协议可以说“告诉另一个人你的主机名和它的IP地址”“好吧,其他人,我是foo.localnetwork(127.0.0.1)”。 另外一个人会收到这个包,在IP级别是外部IP,但是在协议级别上是127.0.0.1 IP,所以如果协议需要使用广告信息而不是IP级别的(例如,SIP可能会造成这个问题…)

    • 另外一些服务只绑定在与主机名关联的ip接口上,因此这些服务只能通过回送设备与主机进行通信,而不需要其他人。

至less在新的Ubuntu发行版上,这是默认的。

这是我的

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

这在任何情况下都没有问题,实际上有一些操作不需要工作DNS的好处。

我个人倾向于添加更多的条目,如本地apt回购,一些build设者等。