将所有经常使用和公司的重要主机都包含在内,这通常被认为是好做法还是坏做法/etc/hosts
?
现在我可以看到以下优点和缺点:
- 优点:提高速度、流量、可靠性和安全性
- 缺点:可管理性降低
答案1
在我看来,你越少依赖 hosts 文件条目越好。使用 DNS 之类的自动化系统要好得多。你的缺点很正确 - 它降低了可管理性。当事情发生变化时,它也容易出错。我曾多次听说人们花费大量时间尝试调试他们认为是 DNS 问题的东西,结果却发现是 hosts 条目导致了这一切。
至于你的优点,我认为除非你有其他更严重的网络问题,否则不应该注意到微小的速度差异。DNS 查找产生的流量非常小,如果将其考虑在内,你又会遇到严重的网络问题。没有真正的安全优势。恰恰相反,如果机器丢失或被盗,你可能会提供原本无法获得的信息。
答案2
John Gardeniers 是对的,使用 hosts 文件带来的速度提升非常小。只有在 DNS 服务器本身严重超载的情况下,速度才会显著提升。即使 DNSSEC 带来的开销也非常小,尽管它可能会毁掉 DNS 服务器 ;)。
我知道 hosts 文件中必须包含的一件事是即使在 DNS 中断期间也必须可解析的地址。我能想到的一种情况是 LDAP 服务器(如果您使用 pam-ldap 进行身份验证)。即使那也不是一个好的用例,因为 LDAP 服务本身可以使用 IP 地址而不是主机名进行配置。
如果你正在对本地主机子网(127.0.0.0/8)进行一些奇怪的操作,并且你正在使用这些地址,并且由于某种原因需要通过名称访问它们,然后hosts 文件是合理的。
我们认为,除极特殊情况外,使用 hosts 文件是一种不好的做法。
答案3
如果你更换网络,安全性就会受到质疑。需要同侪鉴定(例如 ssh 和指纹检查,或 GPG 私钥/公钥,或证书)以确保您正在与正确的机器对话。
我注意到的问题是,例如,一个天真的用户有一台依赖 /etc/hosts 的笔记本电脑,它进入了另一个网络(例如网吧、图书馆……有恶意实体),它希望连接(手动或自动、cronjobs……)到其常用的“安全服务器”或“数据服务器”,发送一些凭证或导出一些机密信息(日志、rrd、登录名/密码……),然后接收机器可以嗅探所有这些数据。可能性可能很小,但这是可能的。
答案4
就速度改进而言,存在更好的方法。几乎任何 Linux/Solaris(我不确定其他 *nix 版本)都会nscd
运行,只要主机缓存未被禁用,它就会提供与 /etc/hosts 文件等效的内存驻留。并且,如果环境需要缓存其他 DNS RR 类型,可以为此配置本地安装的 bind。许多 Linux 发行版都会有一个 bind 包设置,无需用户干预即可完成此操作。
至于这个问题,在完全与互联网断开连接的环境之外,我建议保持机器 /etc/hosts 文件尽可能简单。试图保持一定数量的名称/ip 对准确所涉及的额外管理很快就会被证明无法很好地扩展。