使用 DNS 记录将根域转发到 www 子域

Sha*_*tin 24 domain-name-system forwarding

www.mydomain.com指出了一个 Azure 网站。

www.mydomain.com --- CNAME --- mydomain.azurewebsites.net
Run Code Online (Sandbox Code Playgroud)

当我访问时www.mydomain.com,一切正常。这很好。

问题是,mydomain.com不起作用。Azure 只允许 www 子域。

在某些名称服务器中,我使用 FWD 记录将根转发到 www,这很好用。我当前的名称服务器 (zoneedit.com) 没有此 FWD 记录。

是否有我们可以用来将根域转发到 www 子域的 DNS 记录?

And*_*w B 25

不幸的是,这是 DNS 协议的一个众所周知的缺点。DNS 标准中没有定义允许您为域的顶点设置别名的记录类型。许多人认为CNAME可以使用记录来实现这一点,但由于技术原因,他们不能做到这一点。

许多 DNS 提供商实施自定义(读取:假)DNS 记录类型来尝试解决此缺点。在幕后,这些虚假记录使用合成A记录和网络服务器重定向的组合在该公司的软件中实现自定义行为,以实现您的预​​期目标。FWD是其中之一,很像WebForward迈克尔在评论中指导你的。


DTK*_*DTK 8

总结:简而言之,您无法拥有想要的记录,而您的 DNS 主机正在以正确的方式做事。

说明:在区域顶点(区域前部的空名称)具有 CNAME(别名记录/转发记录)是违反 DNS 标准的。

这样做的原因是 CNAME 记录不能与除 DNSSec 记录之外的任何记录发生名称部分冲突。在典型的区域中,区域顶点的 CNAME 记录至少会与 SOA 和 NS 记录(可能还有其他几个记录)发生冲突。虽然一些 DNS 服务器允许这样做,但这是一件坏事,并且可能导致难以诊断的故障(更不用说如果您将区域的托管移动到符合标准的 DNS 服务器,例如任何基于 BIND 的服务器,将无法工作) .

要么在区域顶点有 A 记录(它们可以是一个简单的 Web 服务器,只是向 www 抛出 HTTP 302)。如果您可以获得 Azure 服务器实例的静态 IP 号码,请在区域的顶点为每个实例放置一个 A 记录,然后创建一个名为“www”的 CNAME 记录,该记录指向顶点记录。

举个例子 :

 

$ORIGIN example.com。

@ 在 SOA 中 ns1.example.com。admin@example.com。(
                                 101;
                                 172800;
                                 900;
                                 1209600 ;
                                 3600;)
@ IN NS ns1.example.com。
@ IN NS ns2.example.com。
@ 在 123.234.1.123
@ 在 123.234.1.124
@ 在 123.234.1.125
ns1 输入 123.234.1.126
ns2 输入 123.234.1.127
www IN CNAME example.com。

  • IMO:无休止地重申为什么 CNAME 顶点不起作用是不值得的。如果用户问他们为什么不工作,我们有一个[规范的答案](http://serverfault.com/questions/613829/why-cant-a-cname-record-be-used-at-the-apex -of-a-domain) 用于 RFC 参考。(完全披露:我写的)如果他们不问,最好坚持按措辞回答问题。 (6认同)