5

我们有一个关于子域的 DNS 传播行为的问题。

这是我们试图实现的场景:

User1 在我们的网站“company.com”上注册。自动创建子域“user1.company.com”,不是作为“company.com”的附加域,而是作为 WHM 中的独立帐户。

因此,正在创建自己的区域并设置 A 记录(与 company.com 相同的 IP)NS 记录也设置为“ns1.domain2.com + ns2.domain2.com”,我们自己的名称服务器(无集群, 2 个不同的 IP,BIND 方法,它们目前由与 company.com 和子域相同的 WHM 安装提供)Domain2.com 由我们的注册商 GoDaddy 处理,名称服务器 ns1 + ns2 也在那里定义。

我们的问题是,域“user1.company.com”在创建后不能立即访问(与附加域不同)。

例如,当我们使用 ISP 提供的名称服务器 nslookup 新域“user1.company.com”时,在它创建之后,我们得到“不存在的域”。然后,在 1-15 分钟后,根据我们尝试的 DNS,nslookup 会以正确的 IP 地址回答。立即以 Google (8.8.8.8) 的 DNS 为例!用正确的 IP 地址回答。

当用户尝试访问他的子域“user1.company.com”时究竟会发生什么?是否联系了我们的域名服务器来解析子域,或者子域是否以某种方式在全球的 DNS 服务器中传播?但是为什么谷歌的 DNS 会立即响应,传播不能这么快!

任何想法可能是问题所在,以及如何使子域帐户在创建后立即可访问,而不管用户使用的 DNS 是什么?

非常感谢

马克

4

2 回答 2

2

我对DNS的理解是解析一个url,流程如下:

通常,当我们联系 DNS 服务器时,它并不是第一次收到对特定网站的请求,它们会保留以前请求的记录,直到它们过期。到期前的时间量(TTL - 以秒为单位的值)取决于您的设置。如果您更改记录,则可能有大量 DNS 服务器带有这些缓存记录。一旦这些记录过期或服务器第一次收到对它不知道的 url 的请求,DNS 服务器就会执行“递归查找”以获取新数据。

以下是a.contoso.com. (注意通常隐藏的末尾的点)的递归查找

该过程从反向开始,从 URL 末尾的隐藏点开始:

1 - 联系根名称服务器(点服务器),它们的 IP 地址预加载到 DNS 服务器上,这些 IP 对于每台服务器都是相同的并且不会更改,它们为 .COM DNS 服务器(或您使用的任何 TLD,例如 .net)

2 - 然后在 contoso.com 中查询 .COM DNS 以获取“contoso”。(如果您更改了名称服务器,这可能是您的问题所在)

3 - 然后您在 contoso.com 的 DNS(您的名称服务器)中查询 a.contoso.com 中的“a”

无限(bacontoso.com,2.ww.cbacontoso.com...)

这些递归查找替换陈旧记录的过程称为传播。

我认为由于切换期间的传播,您没有收到发送到您的名称服务器的请求,您的服务器没有将 A 记录正确复制到名称服务器

域传播只是转移域时的问题,而不是创建新域时的问题,因为您不必处理过时的记录,因为这些记录从未存在过。该请求将直接发送到源。

于 2014-07-11T14:36:28.643 回答
0

这很可能是由于负缓存。也就是说,DNS 服务器记住了子域不存在,并在NXDOMAIN不检查它是否仍然存在的情况下回复。您可以在顶级域的 SOA 记录中找到负缓存的 TTL。在你的情况下:dig company.com

另一个不太可能的原因可能是并非所有权威 DNS 服务器都同步。由于它们独立运行,所有权威 DNS 服务器可能需要一些时间才能拥有相同的记录。这称为区域传输,通过 AXFR 和 IXFR 伪记录类型发生。

要调试此问题,请访问DNS 查找工具,并检查以下内容:

  • 权威服务器是否回复了正确的记录?
  • SOA 记录中的负缓存 TTL 是多少?

至于为什么一些递归 DNS 服务器会立即回复正确的响应,它们可能在缓存记录的积极程度上做出了不同的权衡。DNS 解析器并不总是遵循 TTL。或者某些解析器的缓存可能恰好还没有此记录,导致它们立即询问权威 DNS 服务器。

于 2022-02-21T13:01:43.683 回答