![Linux 上 /etc/hosts 的格式(与 Windows 不同?)](https://linux22.com/image/1803/Linux%20%E4%B8%8A%20%2Fetc%2Fhosts%20%E7%9A%84%E6%A0%BC%E5%BC%8F%EF%BC%88%E4%B8%8E%20Windows%20%E4%B8%8D%E5%90%8C%EF%BC%9F%EF%BC%89.png)
/etc/hosts
此问题下面粘贴的是来自 Linux (CentOS) 和 Windows 计算机的文件示例。 Linux 文件在 IP 地址(即 localhost.localdomain localhost)后有两个选项卡式条目,而 Windows 只有一个。如果我想在 Windows 中编辑主机文件以使用计算机名称 (etest) 而不是 localhost,只需将 localhost 一词替换为我想要的计算机名称即可。该机器不必是域的一部分。
在 Linux 计算机中,这两个条目localhost.localdomain
和localhost
似乎表明我需要该计算机成为域的一部分。这是真的?
我可以简单地编辑这两个条目,etest
使其显示为:
127.0.0.1 etest etest
或者是否需要我用域名替换一个条目?
另外,请告诉我/etc/hosts
Linux 机器上文件的第二行的用途。
::1 localhost6.localdomain6 localhost6
hosts
Linux 机器上的文件:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
hosts
Windows 机器上的文件:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost
答案1
Linux 和 Windows 上的格式/etc/hosts
是相同的:
IP address hostname [hostalias]...
其中方括号是指示某些内容是可选的(实际上并不键入它们)的常用方式,而点 ( ...
) 表示可以有多个。
您不必使您的主机成为域的一部分。尝试一下看看。但.localdomain
如果您没有真正的域名,那么使用它是个好主意。由于ndots
选项,它可以使主机名解析更快一些/etc/resolv.conf
。
请注意,从这个意义上说,域是指 DNS 域(如google.com
或stackexchange.com
),而不是 Windows 域或类似域。
以开头的行::1
是IPv6。 ::1
就像127.0.0.1
在新的寻址方案下一样。运行ifconfig lo
,您应该看到它有两个地址。请注意以 开头的条目inet6
。
$ ifconfig lo
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
...
请参阅主机(5) 手册页更多细节。
答案2
您始终希望 127.0.0.1 地址首先解析为 localhost。如果有一个域,您也可以使用它,但请确保 localhost 列在第二位。如果您想为将查找回送地址的计算机添加别名,您可以继续将它们添加为该行上的空格分隔值。此处指定域是可选的,但不要从选项中删除“localhost”。
答案3
我无法说明 Windows 与 Linux 有何不同,但本地计算机定义的格式会影响您从“hostname”命令获得的结果。
我发现效果最一致的格式是:
127.0.0.1 etest.mydomain.com etest localhost
我发现的重要一点是首先要有 FQDN,然后是别名(按任何顺序)。
如果您尝试重新排列 IP 地址后面的名称,然后使用“主机名 -s”(短名称)和“主机名 -f”(完全限定域名或 FQDN)命令,您就会明白我的意思。它应该看起来像这样:
$ hostname -s
etest
$ hostname -f
etest.mydomain.com
“hostname”本身应该返回您在 /etc/conf.d/hostname 或 /etc/hostname 中为主机输入的任何名称(文件的位置因发行版而异,但应该在 /etc 下的某处找到)。
如果更改名称的顺序,您可能会发现“hostname -f”给出的响应如“localhost”或“hostname:系统错误”。我发现唯一有效的安排是将 FQDN 放在第一位。
我总是以相同的方式设置 IPv6 本地地址行 (::1),即:
::1 etest.mydomain.com etest localhost
我知道一些发行版将 IPv6 名称设置为 ip6-localhost 之类的名称。我还没有真正使用 IPv6,因此无法评论该线路的最佳设置是什么。我只能说,在 IPv4 网络中,两条线路具有相同的名称是可行的。
答案4
将 Slaves 主机文件保留为
127.0.0.1 localhost
将主主机文件保留为
<private ip> master
<private ip> slave1
<private ip> slave2
100% 工作