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

127.0.0.1 localhost
127.0.1.1 myhostname


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

127.0.0.1 localhost myhostname
从实际意义上说,这两个文件之间有区别吗?

评论

我想知道我是否可以删除第二行,或者debian / ubuntu中的某些过程会重新生成该行并将其添加回去?

#1 楼

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

其原因已在Ch。Debian手册中进行了说明。 5网络设置-5.1.1。主机名解析。

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

评论


实际的原因:“将系统主机名与后者关联会产生有害的影响,使'localhost.localdomain'成为与系统主机名关联的规范主机名。也就是说,'hostname --fqdn'返回了'localhost.localdomain'。”

– cmroanirgo
15年5月29日在20:58

我实际上将其追溯到该文档列表。debian.org/ debian-boot / 2005/06 / msg00938.html,看来这是因为Thomas觉得有必要使用1.1而不是0.1,它们等效,请纠正我。如果我错了,但这意味着这个答案真的只是一个面包屑?

–布赖恩·托马斯(Brian Thomas)
16年8月2日在4:56

@BrianThomas该消息表明了为什么它们不相等。他们希望localhost和myhostname是不同的-否则,一个将是另一个的别名。请注意,这在只有一个环回地址的IPv6中不起作用。可以通过使用线程中提到的NSS模块来避免这种情况,因为它可以比/ etc / hosts更加灵活,并且可以返回不同的规范名称,尽管它们具有相同的IP地址。我知道这是因为我的系统是使用这样的NSS模块配置的。

– sourcejedi
17年7月21日在17:09

如果我输入127.0.0.1 my_host_name会发生什么?

– Davide
19-10-30在11:49

它导致dnsmasq返回127.0.1.1客户端,因此我不得不将其删除。

–深度停止
7月2日14:55

#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中。 br />

评论


.. 所以... ?我必须为我的fqdn使用127.0.0.1吗?还是127.0.1.1?还是静态lan ip?

– realtebo
18年8月27日在21:46

@realtebo:1.它很有用,因此由安装程序添加。 2.这里没有“必须”;并且仅在您的FQDN没有永久地址时才有意义。

– einpoklum
18年8月27日在22:29

#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 


如果您的主机名是本地主机,则表示不将全球互联网DNS条目映射到实际的互联网ip,那么在这种情况下,托马斯说您需要第二条条目行,像这样将其专用于此(规范)。

127.0.0.1 localhost localhost.localdomain
127.0.1.1 myfakednsname


评论


公平地说,在我最终以一种对我来说有意义的方式编写了此文件之后,我看到了einpoklum试图解释的内容几乎是事后看来。

–布赖恩·托马斯(Brian Thomas)
16年8月2日,下午5:15

好的否决票,不确定为什么。我仍然相信这是最好的答案,或者在登陆这里之后我不会说出来。最初的答案有所帮助,但并未捕获所有细节。我会选择这个。

–布赖恩·托马斯(Brian Thomas)
16年8月10日在20:05

#4 楼

我读了一些答案,坦率地说,我有些困惑。

我首先尝试了解这里的规范主机名。

我能说的是@cmroanirgo正确地说,在我的Ubuntu笔记本电脑上,调用

hostname --fqdn 


,将/etc/hosts配置为这样

127.0.0.1   localhost 
127.0.1.1   laptop


返回laptop,而像下面那样更改文件

127.0.0.1   localhost laptop


返回localhost

这会产生什么影响,我不知道,除了事实上,如果您具有绑定到主机名的软件,并且需要在内部与计算机进行对话,则不要指望能够使用“ localhost”主机名来完成此工作,因为它们最终会解析两个不同的单独地址。

评论


暗示一个例子:无人值守升级将socket.getfqdn()(在python中)用作邮件主题。我希望那里的UNIX主机名能够区分不同的机器(而不是localhost),因此127.0.1.1的变体对我来说似乎正确或至少更好。

–达里奥·塞德尔(Dario Seidl)
3月26日11:49