据我了解,该hosts
文件是帮助寻址计算机网络中的网络节点的几个系统设施之一。但里面应该有什么?当我默认安装Ubuntu时
127.0.0.1 localhost
将在那里。为什么?
/etc/hosts
Cassandra 等 JVM 系统如何工作?- DNS什么时候可以替代,我猜不是在一台计算机上?
答案1
该文件/etc/hosts
始于 DARPA 的旧时代,作为所有连接到互联网的主机的解析文件(在 DNS 存在之前)。它具有最高优先级,这意味着该文件优先于任何其他名称系统。1
然而,作为单个文件,它不能很好地扩展:文件的大小很快就会变得太大。这就是开发 DNS 系统的原因,这是一个分层的分布式名称系统。它允许任何主机有效地找到其他主机的数字地址。
这非常旧的文件概念/etc/hosts
非常简单,只是一个地址和一个主机名:
127.0.0.1 localhost
对于每一行。这是地址-主机对的简单列表。2
它目前的主要用途是绕过 DNS 解析。在文件中找到的匹配项/etc/hosts
将在任何 DNS 条目之前使用。事实上,如果localhost
在文件中找到搜索的名称(如 ),则根本不会执行 DNS 解析。
1嗯,名称解析的顺序实际上是在 中定义的/etc/nsswitch.conf
,通常有这样的条目:
hosts: files dns
意思是“尝试文件(/etc/hosts
);如果失败,则尝试 DNS”。
但该命令可能会改变或扩大。
2(目前)hosts 文件包含多行文本,其中第一个文本字段中包含 IP 地址,后跟一个或多个主机名。每个字段都由空格分隔 - 由于历史原因,制表符通常是首选,但也使用空格。可以包含注释行;它们在这些行的第一个位置由八字 (#) 表示。文件中的完全空白行将被忽略。例如,典型的主机文件可能包含以下内容:
127.0.0.1 localhost loopback
::1 localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27 mycomputer.lan
此示例包含系统环回地址及其主机名的条目,第一行是主机文件的典型默认内容。第二行有几个附加的(可能仅在本地系统中有效)名称。该示例说明 IP 地址可以有多个主机名(localhost 和回送),并且主机名可以映射到 IPv4 和 IPv6 IP 地址,分别如第一行和第二行所示。一个名称 ( mycomputer.lan
) 可以解析为多个地址 ( 192.168.0.8 10.0.0.27
)。但是,在这种情况下,使用哪一个取决于为计算机设置的路由(及其优先级)。
答案2
使用 /etc/hosts 文件为桌面环境中的本地系统提供人类可读的名称是完全合理的。主机文件非常适合在家庭网络甚至小型企业环境中使用。这不能是像互联网寻址这样的公共方面——那么你需要 DNS。如果本地网络足够大,或者只是划分不同的子网,或者任何其他有用的原因,则首选 DNS。
本地主机文件和 DNS 以不同的优先级进行管理,因此永远不会发生任何冲突。
答案3
127.0.0.1 localhost
在linux中,我敢说文件中至少应该有
/etc/hosts
相应的IPv6地址本地主机。
它只是将主机名解析为数字 IPv4 或 IPv6 地址。当您尝试连接到 (a) 时unix.stackexchange.com地球上某个可能不靠近您的地方,或者 (b)肌醇在您家中的局域网上,有一个/etc/hosts
或某个域名服务器 (DNS) 正在执行主机解析,因此当您键入unix.stackexchage.com作为一个人,这是你所关心的,你不必记住185.53.179.7这才是计算机真正需要知道的。
正如所指出的,在 Linux 中通常/etc/nsswitch
定义主机名解析顺序,这意味着在检查 NIS 之前首先检查 DNS,然后最后检查文件,/etc/hosts
否则主机未找到
如何管理订单检查以及管理 DNS 或 NIS 服务的内容/地点/人员取决于您,或者您可以通过修改来覆盖所有内容/etc/nsswitch仅检查/etc/hosts
而不检查 DNS 或 NIS 或...
对于由几台计算机(例如 2 到 N 台)组成的简单家庭网络,管理员只需/etc/hosts
在每台计算机上进行编辑即可正确,这比设置域名服务器或其他服务来拥有一个主位置或更容易、更快、更便宜。将主机名解析为 IP 地址的权限。
Linux 网络搜索的历史和背后的原因localhost
。 Linux 中的许多东西都依赖于名称 localhost 解析为 127.0.0.1,如果不发生这种情况将会导致问题,并且此 localhost 定义将/应该发生在本地系统文件中,例如 /etc/hosts。
/etc/hosts
默认情况下,Linux 操作系统通常对主机名解析有最终决定权和最后决定权。在Windows XP和7中,相应的文件是C:\Windows\System32\drivers\etc\lmhosts
我不知道Windows 8或10。