MikiBelavista Asked: 2018-02-03 09:52:50 +0800 CST2018-02-03 09:52:50 +0800 CST 2018-02-03 09:52:50 +0800 CST /etc/hosts 的目的是什么? 772 据我了解,该hosts文件是帮助解决计算机网络中的网络节点的几个系统工具之一。但是里面应该是什么?当我默认安装 Ubuntu 时 127.0.0.1 localhost 将在那里。为什么? /etc/hosts在像 Cassandra 这样的 JVM 系统中如何工作? 什么时候是 DNS 替代方案,我猜不是在一台计算机上? dns hosts 3 个回答 Voted Best Answer user232326 2018-02-03T10:16:59+08:002018-02-03T10:16:59+08:00 该文件/etc/hosts始于 DARPA 的旧时代,作为连接到 Internet 的所有主机的解析文件(在 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 地址和一个或多个主机名组成。每个字段都由空格分隔 - 由于历史原因,通常首选制表符,但也使用空格。可能包括注释行;它们由位于此类行的第一个位置的八字形 (#) 表示。文件中的完全空白行将被忽略。例如,典型的 hosts 文件可能包含以下内容: 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 此示例包含系统环回地址及其主机名的条目,第一行是 hosts 文件的典型默认内容。第二行有几个额外的(可能只在本地系统中有效)名称。该示例说明一个 IP 地址可能有多个主机名(localhost 和 loopback),并且一个主机名可以映射到 IPv4 和 IPv6 IP 地址,分别如第一行和第二行所示。一个名称 ( mycomputer.lan) 可以解析为多个地址 ( 192.168.0.8 10.0.0.27)。但是,在这种情况下,使用哪一个取决于为计算机设置的路由(及其优先级)。 一些较旧的操作系统无法报告给定名称的地址列表。 francois P 2018-02-03T09:58:54+08:002018-02-03T09:58:54+08:00 使用 /etc/hosts 文件为桌面环境中的本地系统提供人类可读的名称是完全合理的。hosts 文件非常适合在家庭网络甚至小型企业环境中使用。这不能像互联网寻址那样是公共方面——那么你需要 DNS。如果本地网络足够大,或者只是切入不同的子网,或者其他任何有用的原因,首选DNS。 本地主机文件和 DNS 以不同的优先级进行管理,因此永远不会有任何冲突。 ron 2018-02-03T10:43:36+08:002018-02-03T10:43:36+08:00 127.0.0.1 localhost在 linux 中,我敢说文件中至少应该有 localhost/etc/hosts 的相应 IPv6 地址。 它只是将主机名解析为数字 IPv4 或 IPv6 地址。当您尝试通过网络连接到 (a) unix.stackexchange.com地球上可能不在您附近的某个地方,或 (b)您家中局域网上的myotherpc时,它要么是/etc/hosts某个域名服务器 (DNS),要么是某个域名服务器 (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。
该文件
/etc/hosts
始于 DARPA 的旧时代,作为连接到 Internet 的所有主机的解析文件(在 DNS 存在之前)。它具有最高优先级,这意味着此文件优先于任何其他名称系统。1但是,作为单个文件,它不能很好地扩展:文件的大小很快就会变得太大。这就是开发 DNS 系统的原因,这是一个分层的分布式名称系统。它允许任何主机有效地找到其他主机的数字地址。
很老的文件概念很
/etc/hosts
简单,就是一个地址和一个主机名:对于每一行。这是地址主机对的简单列表。2
它目前的主要用途是绕过 DNS 解析。在文件中找到的匹配项
/etc/hosts
将在任何 DNS 条目之前使用。事实上,如果localhost
在文件中找到搜索的名称(如 ),则根本不会执行 DNS 解析。1嗯,名字解析的顺序其实是定义在里面的
/etc/nsswitch.conf
,里面一般都有这个入口:这意味着“尝试文件(
/etc/hosts
);如果失败,请尝试 DNS。”但这个顺序可以改变或扩大。
2(现在)hosts 文件包含的文本行由第一个文本字段中的 IP 地址和一个或多个主机名组成。每个字段都由空格分隔 - 由于历史原因,通常首选制表符,但也使用空格。可能包括注释行;它们由位于此类行的第一个位置的八字形 (#) 表示。文件中的完全空白行将被忽略。例如,典型的 hosts 文件可能包含以下内容:
此示例包含系统环回地址及其主机名的条目,第一行是 hosts 文件的典型默认内容。第二行有几个额外的(可能只在本地系统中有效)名称。该示例说明一个 IP 地址可能有多个主机名(localhost 和 loopback),并且一个主机名可以映射到 IPv4 和 IPv6 IP 地址,分别如第一行和第二行所示。一个名称 (
mycomputer.lan
) 可以解析为多个地址 (192.168.0.8 10.0.0.27
)。但是,在这种情况下,使用哪一个取决于为计算机设置的路由(及其优先级)。一些较旧的操作系统无法报告给定名称的地址列表。
使用 /etc/hosts 文件为桌面环境中的本地系统提供人类可读的名称是完全合理的。hosts 文件非常适合在家庭网络甚至小型企业环境中使用。这不能像互联网寻址那样是公共方面——那么你需要 DNS。如果本地网络足够大,或者只是切入不同的子网,或者其他任何有用的原因,首选DNS。
本地主机文件和 DNS 以不同的优先级进行管理,因此永远不会有任何冲突。
127.0.0.1 localhost
在 linux 中,我敢说文件中至少应该有 localhost/etc/hosts
的相应 IPv6 地址。它只是将主机名解析为数字 IPv4 或 IPv6 地址。当您尝试通过网络连接到 (a) unix.stackexchange.com地球上可能不在您附近的某个地方,或 (b)您家中局域网上的myotherpc时,它要么是
/etc/hosts
某个域名服务器 (DNS),要么是某个域名服务器 (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。