具有多个CNAME


11

由于历史原因,我们拥有包含5个级别CNAME的DNS域。为了高可用性等原因,有些事情已经外包了,但这不是重点。我的问题是让5个CNAME成为DNS解析器的大材小用吗?我找不到任何著名的网站,其中包含超过2-3个级别的嵌套CNAME指向不同的DNS域。

我们的CNAME跃点如下所示:(我以xyz为例)

www.xyz.com-> xyz.akadns.net-> xyz.worldwide.akadns.net-> xyz.cedexis.net-> xyz.msedge.net-> host1.msedge.net(最终A \ AAAA记录)

我看到许多客户抱怨其他网站对他们的DNS解析问题对我们的网站正常,尽管当我使用http://check-host.net/check-dns?host=www.xyz.com测试我们的DNS时解析度。

似乎在世界范围内都能正常工作。我的结论是,主要是当上述跃点之一无法解析时,本地ISP提供商DNS解析器搞砸了。nslookup仅在我们网站的这些客户端计算机上失败,并且偶尔也会失败。

通常,这种多级CNAME设计不好吗?


1
几年前,我在Akamai工作,我们的一位客户报告说某台路由器的5级嵌套存在问题。我认为路由器固件最终得以修复。
Barmar

Answers:


15

通常,这种多级CNAME设计不好吗?

禁止从 CNAME到CNAME的链,但是正如您已经体验到的那样,这不是一个非常可靠的解决方案。

每个附加的CNAME都会增加解析器的递归深度,并且该深度并不总是无限的。此外,您还存在创建循环或触发循环检测算法的风险。

要了解您的用户名称服务器需要执行多少个查询和哪个查询,请运行DNS跟踪:

dig +trace www.example.com 

或在Windows上

nslookup -debug www.example.com

11

HBrujin是正确的,但实际上递归深度比任何dig +trace要显示的要差得多。递归深度是经常被嘲笑和过分琐碎的事情,但是那些人忘记了您不仅仅是在解决约5 CNAME条记录。这是因为解析CNAME记录的目标会导致需要查找路径中的每个名称服务器,这通常比乍一看要多得多。

CNAME目标是否居住在另一个域中?您需要递归到其名称服务器,这不仅需要NS记录查询,而且还需要A(AAA)不存在胶水的查询。这些名称服务器的名称服务器是否位于不同的顶级域中?如果这些顶级域名(TLD)不共享名称服务器,则很可能不会包含粘合记录,并且您还必须通过其他顶级域名(TLD)的域名服务器进行递归。等等。

CNAME添加到链中的每个记录都可以成倍增加所需的查找数量,具体取决于需要递归通过的名称服务器的数量。这些CNAME+ NS+ A(AAA)记录查找链反过来会令人费解地盘旋,在空缓存中的深度超过150级。这是递归深度限制极度令人讨厌的地方,导致暂时无法在空的缓存上查找域,并且原因往往不那么明显。

简而言之,您可以执行此操作,但要谨慎行事,并认真对待此类反馈。您无法控制Internet上递归DNS服务器重新启动或清除的频率。


我的客户端软件位于一堆进行远程http调用的计算机上。那么从客户端重试所有CNAME会减少递归深度\解析器的负担,这样公平吗?这听起来是个好方法还是我缺少什么?我知道CNAME不会在各个地区之间变化。
Vishal Naidu

这不是一个好方法。通常,无法查询数据的服务器将临时缓存故障。该查询将来可能会再次成功(例如,从现在开始5分钟),但是立即重试不太可能成功。如果您提供DNS记录的名称,我可以让您知道这是否确实是递归深度问题或不太明显的问题。我不希望我们走错了兔子洞。
安德鲁B

0

CNAME在实践中,多级s通常很方便。重定向的每个级别在潜在的不同管理区域或完全不同的组织中提供控制级别。尽管这在技术上几乎不是每一项必要,但它可以解决组织问题。

正如其他人所指出的那样,这可能会引起困难,但是可以解决以下问题:

  • 监视所有DNS服务器。也许是一个故障。监视外部服务器以及您自己的服务器。您可能需要将问题报告给Akamai或其他供应商。

  • TTLs的设置应足够高以允许缓存,但又应设置得足够低,以便可以为应用程序足够快地转移流量


2
我不确定我是否了解监视建议。递归深度限制不仅因产品而异,您还建议如何监视它们?您不能轻易确定其他人的递归基础的根本原因。
Andrew B
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.