我有多个域名需要指向同一台服务器。我更愿意对根域名使用 CNAME 设置。
现在我读到这不是一个好主意,因为MX 记录无法通过 CNAME 处理,提供商管理员不接受。但是,如果我删除 CNAME 域的所有其他记录,是否意味着所有请求都得到正确处理?
假设这是 abcdomain 的原始记录:
# NON ROOT RECORDS
*.abc-domain.test AAAA 1c00:1234:17:0:4::16
admin.abc-domain.test CNAME admin.testserver.test
*.abc-domain.test A 12.34.56.78
localhost.abc-domain.test A 127.0.0.1
# ROOT RECORDS
abc-domain.test A 12.34.56.78
abc-domain.test AAAA 1c00:1234:17:0:4::16
abc-domain.test NS ns1.hostingxyz.test
abc-domain.test NS ns2.hostingxyz2.test
abc-domain.test NS ns3.hostingxyz3.test
abc-domain.test MX 100 mx15.testhoster.test
abc-domain.test MX 100 mx14.testhoster.test
abc-domain.test MX 200 fallback1.testserver.test
abc-domain.test MX 300 fallback2.testserver.test
abc-domain.test MX 100 mx1.testhoster.test
如果我想使用 CNAME 作为根记录,则意味着我必须删除完整的根记录列表(A,AAA,NS,MX)并将其替换为单个 CNAME:
# NON ROOT RECORDS
*.abc-domain.test AAAA 1c00:1234:17:0:4::16
admin.abc-domain.test CNAME admin.testserver.test
*.abc-domain.test CNAME abc-domain.test
localhost.abc-domain.test A 127.0.0.1
# ROOT CNAME RECORD
abc-domain.test CNAME xyz-domain.test
这是使用 CNAME 根记录的方式吗?
这有什么不好吗?
答案1
不可以,这是不允许的。您不能将 CNAME 与其他记录一起使用,它必须是该名称的唯一记录(或如您所显示的通配符名称)。
这里的问题是,对于您“购买”的任何顶级根,都有其他记录,而这些记录可能对您来说是隐藏的,例如,对于google.com
,顶级根有 SOA 和 NS 记录,表示从“.com”DNS 服务器移交给 Google 的 DNS 服务器。对于您的真实域名,几乎肯定有同样的东西,NS 记录和 SOA 记录,表示管理移交给托管公司的 DNS 服务器。这就是为什么您不能将 CNAME 放在顶级根上,那里的 SOA 和 NS 记录禁止这样做。
尝试以下命令之一来了解我的意思(不是每个人都有挖):
挖掘 abc-domain.test
或者
nslookup -q=ns abc-domain.test
就 MX 记录而言,当您拥有多个具有不同优先级的 MX 记录时,您不应该引用 CNAME 名称。这可能会缩短投递过程并导致邮件被投递到“更远”的地方,从而导致循环(当 MTA 剔除优先级较低的 MX 记录时,名称匹配会失败)。如果您只有一条 MX 记录,您可以这样做,但仍不建议这样做。