所以我现在正在设置这个服务器,它将托管多个网站/域。关于 DNS 记录,当前的最佳做法是什么?我承认到目前为止“只是做了一些事情”,这很糟糕。我很抱歉。虽然它过去对我有用,但我想知道最好的做事方式是什么,所以这里有几个问题:
我认为像这样设置主主机名可能是最有意义的
192.168.0.1 A example.com 192.168.0.1 A host.example.com www CNAME example.com
然后,将 192.168.0.1 的单个 PTR 记录返回到 example.com。www CNAME 应该指向 example.com 还是指向 host.example.com A 记录?哪个更有意义,为什么?
那么,为此服务器上的每个虚拟主机创建一个 CNAME 到 example.com A 记录(或 host.example.com A 记录),还是为每个虚拟主机创建单独的 A 记录到主 IP 地址,是否最有意义?
该主机上的 SMTP 服务器将自身标识为主机.example.com。SPF 的使用范围是否已经足够广泛,以便我可以为每个托管域创建一个 SPF 记录,并让其处理可能拒绝来自该主机的邮件的其他域?
答案1
解决 1 和 2:在大多数情况下,我建议为与盒子相关的实际 IP 创建一个“A”记录,并将您需要的所有内容 CNAME 化。如果您要有很多 somethings.example.com,我会使用通配符条目
example.com A 192.168.0.1
*.example.com CNAME example.com
好处是您不必进行大量的 DNS 维护,因为您使用的任何 .example.com 都已经匹配。您只需让 apache 根据给定的名称确定如何处理它。这将导致 2 次查找,而且我只会对一个 A 执行许多 CNAME,而不会尝试执行 CNAME->CNAME。此外,MX 记录必须仅指向 A 记录名称。
如果您需要将虚拟主机分离到其自己的 IP 地址,那么您只需为该主机添加一个“A”记录,最具体的答案就会获胜。
example.com A 192.168.0.1
*.example.com CNAME example.com
new.example.com A 192.168.0.2
答案2
任何给定的 IP 地址都可以有任意数量的 A RR 指向它。然后您可以拥有:
server.example.com. IN A 192.168.0.1
www.example1.com. IN A 192.168.0.1
:
www.exampleN.com. IN A 192.168.0.1
192.168.0.1 只需要一个 PTR。在这个特定情况下,最合适的似乎是:
1.0.168.192.in-addr.arpa. IN PTR server.example.com.
但是,其他任何选择都同样正确,只要它是一个。
发生这种情况的原因是,当一台机器 (A) 连接到一台服务器 (B) 时,它不知道 A 的名称,只知道它的 IP 地址。通过在 DNS 上发起 PTR 查询,它会得到一个名称作为响应。所以现在 B 知道连接到它的人(可能)名叫 A。为了验证这一点,它会再次询问 DNS“A 的 IP 地址是什么?”并期望答案包含它从连接数据中已经知道的关于 A 的 IP 地址。当响应与预期不符时会发生什么,这取决于服务器管理策略。
如果您愿意,您可以创建 CNAME 而不是多个记录。这意味着当有人想要找出 B 的 IP 地址(以便连接到它)时,它会询问 DNS 两次:首先,“B 的真实名称是什么?”然后“该名称的 IP 地址是什么?”。
但请注意,您不能将 CNAME 与 MX 记录合并,因此,如果您出于某些特殊原因需要接受定向到[电子邮件保护],那么 www.example3.com 必须是 A 记录。
答案3
- 您应该将 PTR 指向 host.example.com,以避免邮件传递错误,正如 adamo 所解释的那样。您可以将 CNAME 指向任何主机,我更喜欢 host.example.com。
- 您可以对虚拟主机使用 CNAME 或 A 记录,但 A 记录解析可能会更有效。
- 您应该设置 SPF 记录以避免某些服务器的邮件传递错误,“v=spf1 mx -all”是一个很好的起点,并且只允许您的 MX 为您的域名进行传递。
这里有一个非常好且免费的工具来检查您的配置:
http://clez.net/net.dns?ip=示例.com#图形
答案4
从理论上讲,将记录设置为 A 应该更快,因为在 CNAME 场景中需要两个 DNS 请求。