Linux 服务器的 /etc/hosts 和 DNS A 记录之间的正确关系是什么?

Linux 服务器的 /etc/hosts 和 DNS A 记录之间的正确关系是什么?

我有一台 Ubuntu 服务器。它将是一个 URI 为 的 Web 服务器。我有一个指向该服务器 IP 地址的www.example.comDNS A 记录。www.example.com

假设我选择“trinity”作为该服务器的主机名。

我想正确设置 DNS 记录。我需要反向 DNS 到www.example.com,因此 CNAMEwww.example.com似乎不合适。这是我的问题:

设置两个 DNS 记录(在我的情况下可能是两个 A 记录)是否被视为最佳做法,一个用于www.example.com,一个用于trinity.example.com,都指向该服务器的 IP 地址?(或者,即使它不被接受为最佳做法,但它是一个好主意吗?)

如果是这样,以下是否是正确的 /etc/hosts 文件?

$ cat /etc/hosts
127.0.1.1       trinity.local          trinity
99.100.101.102  trinity.example.com    trinity        www.example.com

此服务器是 Linode,Linode 的文档似乎暗示上述方法是最好的(如果我没有看错的话)。以下是相关部分。我加粗了似乎适用于此处的行。

更新 /etc/hosts

接下来,编辑 /etc/hosts 文件,使其类似于以下示例,将“plato”替换为您选择的主机名,将“example.com”替换为系统的域名,将“12.34.56.78”替换为系统的 IP 地址。与主机名一样,FQDN 的域名部分不一定需要与服务器上托管的网站或其他服务有任何关系(尽管如果您愿意,也可以)。例如,您可能在服务器上托管“www.something.com”,但系统的 FQDN 可能是“mars.somethingelse.com”。

文件:/etc/hosts

127.0.0.1        localhost.localdomain    localhost
12.34.56.78      plato.example.com        plato

你分配的系统 FQDN 的值应该在 DNS 中有一个指向 Linode IP 地址的“A”记录有关配置 DNS 的更多信息,请参阅使用 Linode Manager 配置 DNS 的指南。

答案1

条目和 DNS之间的正确关系/etc/hosts是,如果您的 DNS 正常工作,则 /etc/hosts 应仅包含条目localhost(指向127.0.0.1::1)。当您的 DNS 正常工作时,乱弄 hosts 文件只会造成奇怪的行为并在以后带来麻烦。1

PTR如果您需要反向 DNS,请联系您的 ISP(Linode),并要求他们为您的 IP 地址设置适当的记录。
没有要求使 PTR 记录与 A 记录匹配(或者实际上使任何具有该名称的主机都存在:69.18.136.215 反转为 cl136-215.invision.net,它没有转发地址),因此您可以将 PTR 名称设置为匹配 A 记录、CNAME 或您想要的任何有效的 DNS 名称。


1所有规则都有例外。您的情况似乎不属于例外之一。

答案2

在您的系统设置中,该/etc/hosts文件可能在进行 DNS 查找之前被读取。因此我可能会提供系统的 IP、完全合格域名 (trinity.example.com)、简称 (trinity) 和网站地址 (www.example.com)。

以下是 hosts 文件格式的指南。请参阅:设置主机名:FQDN 还是短名称?

答案3

如果您将这些条目放入/etc/hosts文件中,您的系统将绕过 DNS 并使用 hosts 文件中的条目。
如果这些配置(DNS 或 hosts 文件)中的某个配置有误,这可能会使调试变得复杂。或者,如果您更改 DNS 记录并忘记该/etc/hosts文件,则会出现奇怪的行为。

您可以使用该/etc/hosts文件进行测试目的,例如在进行 DNS 更改之前测试您的网站。

相关内容