主机文件:多行具有相同的IP地址是否不正确?


28

一段时间以来,我一直在格式化我的主机文件。注意两行有相同的ip:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

我最近读到,别名应该合并在一行上:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

但是,我不喜欢这种方法,因为您不能轻易地注释掉某些别名或向特定别名添加注释,例如:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

到目前为止,一切正常。这有问题吗?

Answers:


28

我找到了讨论如何按照这些思路进行操作的线程。该线程非常坚决地保证/etc/hosts文件中没有多行。

摘录-Re:/ etc / hosts:两行具有相同的IP地址?

不,不会。解析器在第一个分辨率处停止。有类似的东西:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

不会做你在说什么。但具有:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

会造成各种各样的破坏。包括转发。

我通常不会做您正在尝试的事情。如果您需要更多证据,则手册页甚至说不要这样做:

摘抄 man hosts

本手册页描述了/ etc / hosts文件的格式。该文件是一个简单的文本文件,将IP地址与主机名相关联,每个IP地址一行。对于每个主机,应该在一行中显示以下信息:

         IP_address canonical_hostname [aliases...]

话虽如此,如果您的主机名是FQDN并且它们不重叠,那么您可能可以放心地进行自己的工作。请记住,如果有任何重叠(例如上面的线程中提到的重叠),那么您可能会遇到解决问题的方法。


1
我看不到任何一方在该线程中指出的影响。例如,127.0.0.1的多行不会影响hostname(与OP相反)的输出,并且它们都可以正确解析(与响应者相反)。
goldilocks

1
但是gethostbyaddr()他们提出的事情意义重大。+1
goldilocks

很有意思!我没有意识到双向使用了hosts文件(从ip获取主机名,从host-name获取ip)。这肯定会带来一些问题。也许我应该研究一个主机文件构建过程,该过程将抓取人类可读的版本,然后通过将主机别名连接到一行来“更正”它。应该是一个非常简单的脚本。
AlexMA 2013年

1
@AlexMA-如果您发现/etc/hosts引起您的悲伤,您可以随时设置DNS。出于这个确切的原因,我运行BIND,(1)b / c集中管理更容易,并且(2)从那里获得所需的解决方法而没有很多麻烦。也有更轻便的选项,例如DNSMasq可以做到这一点。这些系统也可以在单个盒子上使用!
slm

@slm听起来对于生产环境来说是一个非常好的选择。可能也是一个有价值的学习项目。
AlexMA 2013年

5

我相信第三种方法效果很好;这有问题吗?

我总是做过一点,但是存在一个潜在的问题,因为根据man gethostbyaddr该系统调用可能/etc/hosts会将IP地址与名称相关联。尽管更常见的情况是相反的(从名称中获取地址),但是请注意这一点,以防发生任何有趣的事情。


正如我所怀疑的,但想确保似乎没有关于它的大量文档。我也不确定某些特别严格的unix发行版是否还会有更多问题。如果没有其他人有不同的立场,我会尽快给您答复。
AlexMA

好吧,重点slm是值得考虑的;也许该系统毕竟不打算以这种方式使用。我将继续这样做(nb,我主要只是将它用于127.0.0.1,因此我可以在本地进行移植和测试,而无需修改虚拟主机配置),但是我在最后一段中添加了警告。
goldilocks

实际上,我对此进行了编辑,以考虑到“潜在的问题” ...
goldilocks

0

Apache 2.4拒绝在我的Unix系统上启动。根本原因是/ etc / hosts中的行重复。删除重复的行后,便能够启动Web服务器。


4
这是有用的信息,但根据该网站的指南,可能应该是注释而不是答案。
AlexMA '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.