为什么我的主机名在 /etc/hosts 中显示的地址是 127.0.1.1 而不是 127.0.0.1?

为什么我的主机名在 /etc/hosts 中显示的地址是 127.0.1.1 而不是 127.0.0.1?

这可能是一个有点幼稚的问题,但我在新安装的 Xubuntu 上查看了 /etc/hosts 并看到了以下内容:

127.0.0.1 localhost
127.0.1.1 myhostname

在我使用过的大多数 'nixes 中,第二行被省略,如果我想将我的主机名添加到 hosts 文件,我只需执行以下操作:

127.0.0.1 localhost myhostname

从实际意义上讲,这两个文件之间有区别吗?

答案1

两者之间没有太大的区别;127/8(例如:127.0.0.0=> 127.255.255.255)都绑定到环回接口。

原因在 Debian 手册中有记录第 5 章 网络设置 - 5.1.1. 主机名解析

最终,这是一个错误的解决方法;原始报告是316099

答案2

总结链接信息:

  • /etc/hosts在将机器的完全限定域名转换为其永久 IP 地址时,有一个条目是(有争议的)有用的。
  • debian-installer,更具体地说,其netcfg组件当前(至少截至 2013 年 3 月)创建了此条目。
  • 如果不知道该机器是否有永久 IP 地址,debian-installer 仍然希望它具有这种条目。
  • 该地址127.0.1.1使用环回接口,由您自己的机器回答,就像127.0.0.1但是是一个不同的条目,可以在必要时/etc/hosts与其中的单独条目分开考虑。127.0.0.1

Thomas Hood 对添加此条目的解释如下:

[这]将确保如果 UNIX 主机名已解决,则它将始终是其自己的规范主机名

但:

从长远来看,UNIX 主机名根本不应该放在 /etc/hosts 中。

答案3

我自己也很好奇,并且我不喜欢任何其他答案,因为它们似乎至少没有回答我所寻找的内容。

答案: 回顾这一点文档这几乎就像 Thomas 在说“在环回上给它另一个专用 IP 使它成为规范的”。

两个都指向您的环回。使用以下 127.0.1.1 是环回上的实际 IP,而 127.0.0.1 是设备本身或环回上的另一个 IP。两者最终位于同一子网中,代表环回,但由 IP 分隔。它们在 DNS 方面是等效的,但由于具有专用 IP 而分隔开。

重点是,你可以将所有条目放在一行上,就像这样

127.0.0.1 localhost localhost.domain www.myfakednsname.com myakednsname.com 

如果你的主机名是本地的,也就是说没有映射到实际互联网 IP 的全局互联网 DNS 条目,那么在这种情况下,Thomas 是说你需要有第二行,像这样将其专用于那里(规范)。

127.0.0.1 localhost localhost.localdomain
127.0.1.1 myfakednsname

答案4

古老的问题,但添加了不同的答案。如果您使用一行:

127.0.1.1 my_fqdn my_short_name

例如

127.0.1.1 server.domain.com server

Apache (至少在 Ubuntu 上) 将选择正确的主机名,而无需在 apache 配置中明确输入。这可能类似于上面答案中的评论。

相关内容