Linux 上 /etc/hosts 的格式(与 Windows 不同?)

Linux 上 /etc/hosts 的格式(与 Windows 不同?)

/etc/hosts此问题下面粘贴的是来自 Linux (CentOS) 和 Windows 计算机的文件示例。 Linux 文件在 IP 地址(即 localhost.localdomain localhost)后有两个选项卡式条目,而 Windows 只有一个。如果我想在 Windows 中编辑主机文件以使用计算机名称 (etest) 而不是 localhost,只需将 localhost 一词替换为我想要的计算机名称即可。该机器不必是域的一部分。

在 Linux 计算机中,这两个条目localhost.localdomainlocalhost似乎表明我需要该计算机成为域的一部分。这是真的?

我可以简单地编辑这两个条目,etest使其显示为:

127.0.0.1       etest etest

或者是否需要我用域名替换一个条目?

另外,请告诉我/etc/hostsLinux 机器上文件的第二行的用途。

::1     localhost6.localdomain6 localhost6

hostsLinux 机器上的文件:

# 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

hostsWindows 机器上的文件:

# 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.comstackexchange.com),而不是 Windows 域或类似域。

以开头的行::1IPv6::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% 工作

相关内容