我知道有很多关于主机名的问题。但即使读完这些内容,我还是没有完全理解主机名的概念。所以我的问题如下:
我一直在关注这个指导使用 Linode 设置 VPS。
第一步是设置主机名。据我所知,主机名只是一个任意名称,您可以设置它来在网络中标识您的机器。此外,FQDN 是主机名加上域名(可以或不可以与服务器上托管的 Web 域相关)。如果我错了,请纠正我。
然后它指示我修改 /etc/hosts 并添加类似内容:
12.34.56.78 plato.example.com plato
所以我的问题是,这一行到底起到了什么作用?我以前做过,但从来没有真正理解它的作用。此外,如果 FQDN 中使用的主机名和域名是任意的,那么它们可以在哪里使用?实际用例将非常有帮助,详细的解释会很棒。谢谢!
答案1
某些应用程序会将主机名用于某些参数,除非明确设置。例如,Postfix 将使用机器的主机名来标识自己,除非您在配置文件中另行指定。
hosts 文件用于名称解析。解析域名时,您的服务器将在发出 DNS 请求之前检查其 hosts 文件。
您发布的那行代码实际上会让您的服务器将“plato.example.com”和“plato”解析为该 IP 地址。这就是为什么您通常会看到第一行,127.0.0.1 localhost localhost.localdomain ....
因此服务器会始终将其主机名解析为自身。
答案2
这使得系统即使 DNS 处于离线状态也能解析自己的名称。很久以前没有 DNS,每个人都共享主机文件,其中包含他们需要连接的每台机器的名称/IP 对。
如果你查看 /etc/nsswitch.conf,你会看到对于主机,它(默认情况下)有一行显示主机:文件 dns
这意味着它首先会检查 hosts 文件,如果找不到该名称,则会转到 DNS。如果您有一个应用程序经常查找本地主机的名称或 IP(当然,您不会缓存名称查找,而现在您通常会这样做),这可以为您节省大量网络流量。