在/ etc / hosts中包含所有经常使用和重要的地址是好还是不好?

/etc/hosts包含所有常用的和公司的重要主机通常被认为是好的还是不好的做法?

现在我可以看到以下优点和缺点:

  • 优点:提高速度,stream量,可靠性,安全
  • 缺点:可pipe理性降低

在我看来,越less依靠主机文件条目越好。 使用像DNS这样的自动化系统是远远优选的。 你的骗局是现货 – 它减less了可pipe理性。 当事情发生变化时,它也变得容易出错。 我不止一次地认识到,人们花费了相当多的时间试图debugging他们认为是DNS的问题,只是发现有一个主机条目导致了这一切。

至于你的专业人士,我会争辩说,除非你有其他更重要的networking问题,否则不应该注意到微小的速度差异。 DNS查询产生的stream量是如此微不足道,以至于如果再考虑因素,您又一次遇到严重的networking问题。 没有真正的安全利益。 恰恰相反,如果机器丢失或被盗,您可能会提供其他方式无法获得的信息。

John Gardeniers是正确的,从使用hosts文件的速度增加是相当沉重的。 可能很重要的一种情况是DNS服务器本身显着过载。 即使DNSSEC的开销也很小,尽pipe它可以杀死DNS服务器;)。

我所知道的东西需要在主机文件中的东西是即使在DNS中断期间也必须parsing的地址。 我能想到的一种情况是LDAP服务器,如果您使用pam-ldap进行身份validation。 即使这样也不是一个好的用例,因为LDAP服务本身可以用IP地址而不是主机名来configuration。

如果你在使用这些地址的本地主机子网(127.0.0.0/8)上做了一些奇怪的事情,并且由于某种原因需要通过名称来访问它们, 那么 hosts文件是合理的。

除非是非常特殊的情况,否则我们认为主机文件使用不当。

如果你改变networking,安全是有争议的。 对等标识是必要的 (例如ssh和指纹检查,或GPG私钥/公钥或证书),以确保您正在与正确的机器交谈。

我注意到的问题是,例如,一个天真的用户有一个依赖于/ etc / hosts的笔记本电脑,并进入另一个networking(例如网吧,图书馆…与恶意实体),它期望连接(手动或自动, cronjobs …)到其通常的“安全服务器”或“数据服务器”,发送一些凭证或导出一些机密信息(日志,rrd,login/密码…),然后接收机可以嗅探所有这些数据。 机会可能很低,但这是合理的。

至于速度的改善有更好的方式存在。 几乎任何Linux / Solaris(我不知道其他* nix的风味)都将运行nscd ,只要主机caching没有被禁用,将提供一个与/ etc / hosts文件相同的内存驻留。 而且,如果环境需要额外的DNS RRtypescaching,则可以为此configuration本地安装绑定。 许多Linux发行版都将有一个绑定包安装程序,无需用户干预即可完成此操作。

至于这个问题,除了与互联网完全断开连接的环境外,我还是build议尽可能保持机器/ etc / hosts文件的简单。 试图保持一定数量的名称/ IP对准确的增加的pipe理将很快certificate不能很好地扩展。