Diagon Asked: 2022-12-29 08:02:22 +0800 CST2022-12-29 08:02:22 +0800 CST 2022-12-29 08:02:22 +0800 CST 作为 IP 抽象的域名与作为服务器名称的域名 - /etc/host{s,name} - 为什么? 772 域名是 IP 地址的抽象。无论该 IP 是哪台计算机,域名都应该指向那里。那么,为什么我们要使用 /etc/{hosts,hostname} 和/或 systemd 的 hostnamectl 将域名与计算机相关联?我绝对一无所知,但这对我来说似乎是错误的。 我正在家中设置我的第一台可公开访问的服务器,使用域名的动态 DNS,因此遇到了这个主机/主机名问题。我不是唯一一个问它的人,但那个人没有得到答案。 ip 2 个回答 Voted Best Answer Erich 2022-12-29T10:52:00+08:002022-12-29T10:52:00+08:00 在/etc/hostname(参见 参考资料man 5 hostname)中,您可以而且应该设置服务器的本地主机名。此名称可用于此服务器上运行的软件。这只是一个字符串,在服务器外部是不可见的。 相反,该文件/etc/hosts用于将计算机名称解析为 IP 地址。您可以将其视为一个穷人的 DNS 服务器。在过去,在没有开发域名系统之前,实际上是将大型主机文件发送到互联网上的计算机上,以映射一个具有名称的统一网络。如果您有一个正在运行的 DNS 服务器并且本地网络没有超过一台服务器,通常不需要在此处添加条目。 为了不依赖名称服务器,您可以在/etc/hosts. 但是,您应该注意,随着更多的服务器和不断变化的地址范围,维护这个文件变得单调乏味。 ilkkachu 2022-12-29T10:39:08+08:002022-12-29T10:39:08+08:00 DNS 名称与 IP 地址不是一对一的,例如域名可能仅用于电子邮件,因此它只有 MX 记录而没有 IP 地址。或者多个名称可以指向一个 IP 地址,这对于为多个具有不同域名的站点提供服务的 Web 服务器来说很常见。此外,单个域名可能指向多个 IP 地址,这可能对负载平衡很有用。 在许多情况下,区分 DNS 中的公共“服务名称”和标识系统并出现在日志和命令提示符中的内部名称可能很有用。 /etc/hosts并/etc/hostname没有那么相关。前者是 DNS 的替代品,而后者用于存储系统的“内部”主机名。
在
/etc/hostname
(参见 参考资料man 5 hostname
)中,您可以而且应该设置服务器的本地主机名。此名称可用于此服务器上运行的软件。这只是一个字符串,在服务器外部是不可见的。相反,该文件
/etc/hosts
用于将计算机名称解析为 IP 地址。您可以将其视为一个穷人的 DNS 服务器。在过去,在没有开发域名系统之前,实际上是将大型主机文件发送到互联网上的计算机上,以映射一个具有名称的统一网络。如果您有一个正在运行的 DNS 服务器并且本地网络没有超过一台服务器,通常不需要在此处添加条目。为了不依赖名称服务器,您可以在
/etc/hosts
. 但是,您应该注意,随着更多的服务器和不断变化的地址范围,维护这个文件变得单调乏味。DNS 名称与 IP 地址不是一对一的,例如域名可能仅用于电子邮件,因此它只有 MX 记录而没有 IP 地址。或者多个名称可以指向一个 IP 地址,这对于为多个具有不同域名的站点提供服务的 Web 服务器来说很常见。此外,单个域名可能指向多个 IP 地址,这可能对负载平衡很有用。
在许多情况下,区分 DNS 中的公共“服务名称”和标识系统并出现在日志和命令提示符中的内部名称可能很有用。
/etc/hosts
并/etc/hostname
没有那么相关。前者是 DNS 的替代品,而后者用于存储系统的“内部”主机名。