我拥有一个域econemon.com
。以下是 DNS 条目的摘录(为简洁起见,省略了一些记录):
econemon.com. 1800 IN NS ns.stratoserver.net.
econemon.com. 1800 IN NS ns2.stratoserver.net.
econemon.com. 1800 IN A 85.214.92.48
这些名称服务器来自我的提供商,据我所知,它们是我域的权威服务器。
现在,当我去向其中一个询问不存在的子域的地址记录时,它会以我的服务器地址作为响应,如下所示:
$ host -t A nosuchdomain.econemon.com ns.stratoserver.net
Using domain server:
Name: ns.stratoserver.net
Address: 81.169.163.40#53
Aliases:
nosuchdomain.econemon.com has address 85.214.92.48
当然,这正是我想要拥有虚拟主机等的。现在,假设我添加了一个条目
econemon.com. IN NS ns.econemon.com
以及列表中正确的 A 记录ns.econemon.com
,并且该名称服务器实际上对某些子域具有不同的 A 记录,会发生什么?
- 根据您询问的名称服务器,请求会
subdomain.econemon.com
产生不同的地址吗?(我想会的。) - 如果是这样,如果我的 DNS 关闭,这实际上可能有助于回退到“主服务器”,但是如何让客户端在启动时使用我的名称服务器?
- 这会弄乱客户端上的缓存吗?(大概。)
这是“我不认为这个词意味着你认为它意味着什么”的情况之一。您正在调用给定域“子域”中的主机记录。他们不是。
要一起回答您的要点问题:
对给定名称服务器的请求将返回它认为适当的答案。听起来您建议您可以添加另一个 DNS 服务器作为您的“econemon.com”域的权威服务器,其中包含一些“A”记录而其他人不会。这不是 DNS 的常见或推荐配置。您通常希望对给定域具有权威性的所有 DNS 服务器都具有相同的记录(除非您知道为什么要这样做……也就是“水平分割”DNS。)
做你描述的事情没有普遍有用的理由。您不能影响客户端计算机解析器对 DNS 服务器的选择。它不会“搞砸”缓存——缓存会像它应该的那样工作。根据客户端与哪个 DNS 服务器通信,它会产生不一致的结果,这通常很糟糕。
子域类似于“subdomain.example.com”域,其中包含“www.subdomain.example.com”等主机记录。您所说的只是域中的主机。
DNS 查找是顺序的,从末尾开始。假设空缓存,对 MISSING.DOMAIN.COM 的查找将是这样的......
这就是它的要点。实际上,由于缓存、负载平衡以及名称服务器可以按名称指定,因此也必须查找这一事实,它要复杂得多。
总结您的问题..您可以为域指定多个名称服务器,并使用不同的信息设置它们。答案是肯定的,但你必须小心并知道你在做什么。您可以使用 DNS 来支持负载平衡,也可以使用它来支持failover lite。但是你需要小心!
编辑:在评论中,bortzmeyer 指出了一些在他看来越界到错误的简化。我做了一些调整,希望能解决这些问题。
您的域似乎有一条 DNS 通配符记录。
这意味着如果查询没有记录,您将获得 81.169.163.40 的 A 记录。实际上它比这更复杂。如果“标签”(完全限定的域名或 FQDN)有任何记录,则禁用该标签的通配符记录。因此,如果您有 foo.econemon.com. 的 MX 记录,则对 foo.econemon.com 的 A 记录的查询将一无所获。
通配符记录比较少见,可能会混淆某些软件系统。我不建议使用它们。但是,您的 ISP 正在使用它们,因此您不必在每次添加子域时都打扰他们更新 DNS 记录。那讲得通。
现在回答你的问题...
您似乎在问,“如果我有一个名称服务器的数据与其他名称服务器不同,会发生什么?”
好吧,如果您有 2 个您的 ISP 使用某些数据运行,而 1 个您使用不同的数据运行,那么从您的 ISP 服务器获取数据的可能性为 2:1。如果 DNS 系统在第一个域名服务器中没有找到它想要的数据,它就不会继续寻找其他域名服务器。换句话说,你不能问爸爸妈妈是否说“不”。
这是 DNS 中的一个重要概念。DNS 需要快速。因此,当 1 可以做时,永远不要做 2 个查询。
这就是为什么您应该在每个域的名称服务器中为域具有相同的确切区域数据。(除非你有一些有趣的负载平衡方案。)
是的
名称服务器以随机顺序进行尝试。如果第一个没有响应,DNS 客户端将尝试下一个。全部尝试后,客户端会收到 DNS 错误。由于每个 DNS 服务器都发送了 1 个查询,但通常我们等待 30 秒(我认为)等待回复,如果您有 100 个名称服务器,您将等待 50 分钟,然后客户端出错。这就是为什么我通常不会为一个域拥有超过 3 个名称服务器。越多越好。
并不真地。该软件非常强大。Postel 的稳健性原则(“发送的内容要保守,接受的内容要自由”)在这里发挥了作用。它有好处。查询 www.yahoo.com、www.microsoft.com 和 www.google.com。您会看到每个名称服务器根据您在世界的位置(和其他因素)提供不同的 IP 地址。如果这会让客户感到困惑,那么这些网站将无法生存!