使用CNAME指向另一个域以保存IP地址


39

我有一台服务器,上面托管着一些站点。

当前,每个站点都有一个由独立提供商托管的域,每个站点都有一个指向服务器IP地址的A记录。

但是,如果将来要更改服务器,则必须回退更新每个DNS记录中的每个IP地址。

是否可以在每个域上使用CNAME记录来指向我直接控制的另一个域?

这样一来,我可以自己在1个地方更新IP地址,而不必让所有这些其他DNS提供商单独更新其记录?

Answers:


25

这正是CNAME的意义所在。CNAME无需指向同一区域中的DNS,它可以指向在任何名称服务器中注册的任何DNS名称。

对于您的客户而言,这意味着在NS上为另一台主机进行一次额外的DNS查找,但这对于支付Internet上大多数网站来说是很小的代价。


通常,将由递归服务器执行该附加查询,而不是客户端中的存根解析器。
Alnitak

27

根据Farseeker的回答,是的,这是(什么)CNAME记录的用途。

但是同时,你可以用它来点www.example.netwww.example.com,你不能用它来指向example.net其自身(即不带www前缀)到别的东西。

这是因为example.net还必须有一个SOA记录和NS记录,并且在DNS中与CNAME其他任何记录存在于树的同一部分是不合法的(DNSSEC密钥除外)。

上面的“排序”限定词是因为严格来讲,CNAME记录引入了“左手边”作为记录目标的别名CNAME,而该目标实际上是“规范名称”。

因此,如果您看到例如:

www.example.net IN CNAME www.example.com.

这是不是说,www.example.net应该是“重定向”对www.example.com,它说的www.example.net另一个名字 www.example.com


2
“ example.net还必须具有SOA记录”。有人作弊:请访问lrnskls.com。
bortzmeyer

这是一个令人讨厌的骇客,如果他们想通过DNSSEC对其进行签名,他们将面临一个巨大的问题。
Alnitak

5
+1是一个好点,也是更大的缺陷之一(也是为什么我的网站都不能使用www-less的原因,因为这些域也需要MX记录,禁止这样做)。
Oskar Duveborn


0

我将不得不返回更新每个DNS记录中的每个IP地址。

好吧,CNAMEs确实是一个可能的解决方案(请参阅Alnitak的答复以获取对CNAMEs的限制),但还有另一种解决方案:不用手工管理区域文件,而是创建一个十行程序(Perl / Python / Ruby / cpp / m4) /等等),这将从主数据库生成区域文件(文本文件,XML文件,DBMS等)

这样,您的IP地址只能在一个地方。更改后,只需重新运行该程序即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.