AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 27371
Accepted
Hanno Fietz
Hanno Fietz
Asked: 2009-06-18 07:39:36 +0800 CST2009-06-18 07:39:36 +0800 CST 2009-06-18 07:39:36 +0800 CST

名称服务器究竟如何处理未知子域?

  • 772

我拥有一个域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 关闭,这实际上可能有助于回退到“主服务器”,但是如何让客户端在启动时使用我的名称服务器?
  • 这会弄乱客户端上的缓存吗?(大概。)

(注意:这与我的其他两个 问题有关)

domain-name-system
  • 3 3 个回答
  • 3992 Views

3 个回答

  • Voted
  1. Evan Anderson
    2009-06-18T07:50:17+08:002009-06-18T07:50:17+08:00

    这是“我不认为这个词意味着你认为它意味着什么”的情况之一。您正在调用给定域“子域”中的主机记录。他们不是。

    要一起回答您的要点问题:

    对给定名称服务器的请求将返回它认为适当的答案。听起来您建议您可以添加另一个 DNS 服务器作为您的“econemon.com”域的权威服务器,其中包含一些“A”记录而其他人不会。这不是 DNS 的常见或推荐配置。您通常希望对给定域具有权威性的所有 DNS 服务器都具有相同的记录(除非您知道为什么要这样做……也就是“水平分割”DNS。)

    做你描述的事情没有普遍有用的理由。您不能影响客户端计算机解析器对 DNS 服务器的选择。它不会“搞砸”缓存——缓存会像它应该的那样工作。根据客户端与哪个 DNS 服务器通信,它会产生不一致的结果,这通常很糟糕。

    子域类似于“subdomain.example.com”域,其中包含“www.subdomain.example.com”等主机记录。您所说的只是域中的主机。

    • 4
  2. Best Answer
    tomjedrz
    2009-06-18T08:24:54+08:002009-06-18T08:24:54+08:00

    DNS 查找是顺序的,从末尾开始。假设空缓存,对 MISSING.DOMAIN.COM 的查找将是这样的......

    • DNS 客户端将从 DNS 服务器请求 MISSING.DOMAIN.COM。
    • DNS 服务器向“根”DNS 询问 MISSING.DOMAIN.COM 域,并取回 COM 域的名称服务器。
    • DNS 服务器向 COM 名称服务器询问 MISSING.DOMAIN.COM,并取回 DOMAIN.COM 域的名称服务器。
    • DNS 服务器向 DOMAIN.COM 名称服务器询问 MISSING.DOMAIN.COM。DOMAIN.COM 名称服务器没有答案,因此它会报告 DOMAIN.COM 的地址,具体取决于它的配置。
    • 如果有 MISSING.DOMAIN.COM 的 NS 记录,它会被返回,然后原始 DNS 服务器会查询它。如果有 A 记录为 MISSING,则将其上的 IP 报告回来。

    这就是它的要点。实际上,由于缓存、负载平衡以及名称服务器可以按名称指定,因此也必须查找这一事实,它要复杂得多。

    总结您的问题..您可以为域指定多个名称服务器,并使用不同的信息设置它们。答案是肯定的,但你必须小心并知道你在做什么。您可以使用 DNS 来支持负载平衡,也可以使用它来支持failover lite。但是你需要小心!

    编辑:在评论中,bortzmeyer 指出了一些在他看来越界到错误的简化。我做了一些调整,希望能解决这些问题。

    • 4
  3. TomOnTime
    2009-06-18T09:40:49+08:002009-06-18T09:40:49+08:00

    您的域似乎有一条 DNS 通配符记录。

    *.econemon.com.  IN A 81.169.163.40
    

    这意味着如果查询没有记录,您将获得 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 个查询。

    这就是为什么您应该在每个域的名称服务器中为域具有相同的确切区域数据。(除非你有一些有趣的负载平衡方案。)

    • 根据您询问的名称服务器,对 subdomain.econemon.com 的请求会产生不同的地址吗?(我想会的。)

    是的

    • 如果是这样,如果我的 DNS 关闭,这实际上可能有助于回退到“主服务器”,但是如何让客户端在启动时使用我的名称服务器?

    名称服务器以随机顺序进行尝试。如果第一个没有响应,DNS 客户端将尝试下一个。全部尝试后,客户端会收到 DNS 错误。由于每个 DNS 服务器都发送了 1 个查询,但通常我们等待 30 秒(我认为)等待回复,如果您有 100 个名称服务器,您将等待 50 分钟,然后客户端出错。这就是为什么我通常不会为一个域拥有超过 3 个名称服务器。越多越好。

    • 这会弄乱客户端上的缓存吗?(大概。)

    并不真地。该软件非常强大。Postel 的稳健性原则(“发送的内容要保守,接受的内容要自由”)在这里发挥了作用。它有好处。查询 www.yahoo.com、www.microsoft.com 和 www.google.com。您会看到每个名称服务器根据您在世界的位置(和其他因素)提供不同的 IP 地址。如果这会让客户感到困惑,那么这些网站将无法生存!

    • 3

相关问题

  • 可以任意注册名字到同一个公网IP吗?

  • Linux 绑定服务器为 DHCP Windows 客户端提供地址,但不为 DHCP Linux 客户端提供地址

  • 如何使用 Windows Server 解析 http 域名

  • 动态更新 /etc/resolv.conf 中列出的解析器

  • 内部名称解析

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve