it-swarm.cn

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

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

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

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

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

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

39
wows

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

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

25
Mark Henderson

根据Farseeker的回答,是的,这是CNAME记录的目的(某种)。

但是,虽然您可以使用它将www.example.net指向www.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.netwww.example.com的另一个名称。

27
Alnitak

是的,有可能。

这就是我做的实验Web服务器也具有动态IP(尽管很少更改)的方式。

3
Oskar Duveborn

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

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

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

0
bortzmeyer