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

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

一段时间以来,我一直像这样格式化我的主机文件。注意两行有相同的 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

到目前为止,这一切都运行良好;这有问题吗?

答案1

我发现这个帖子讨论了按照这些思路做一些事情。该线程非常坚持不要在/etc/hosts文件中包含多行。

摘录-回复:/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 并且它们不重叠,那么您可能可以安全地执行您正在执行的操作。请记住,如果存在任何重叠(例如上面线程中提到的内容),那么您可能会遇到解决问题。

答案2

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

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

答案3

Apache 2.4 拒绝在我的 Unix 系统上启动。根本原因是 /etc/hosts 中的重复行。删除重复行后,我就可以启动网络服务器了。

相关内容