对于子域的DNS传播行为,我们有一个问题。
下面是我们正在努力实现的场景:
User1在我们的网站"company.com“注册。子域"user1.company.com“自动创建,不是作为"company.com”的附加域创建,而是作为WHM中的独立帐户创建。
因此,正在创建一个自己的区域&一个记录正在被设置(与company.com相同的IP ),NS记录也被设置为"ns1.domain2.com + ns2.domain2.com",我们自己的名称服务器(没有集群,两个不同的IP,绑定方法,它们目前由company.com&子域相同的WHM安装提供) Domain2.com由我们的注册程序GoDaddy处理,名称服务器ns1 + ns2也是在那里定义的。
我们的问题是,在创建域"user1.company.com“之后,就无法立即访问它(与附加域不同)。
例如,当我们与ISP的名称服务器一起查找新域"user1.company.com“时,在它创建之后,我们就得到了”不存在的域“。然后,在1-15分钟后,根据我们尝试的DNS,nslookup使用正确的IP地址进行应答。例如,来自Google的DNS (8.8.8.8)立即!有正确IP地址的答案。
当用户试图访问他的子域"user1.company.com“时,会发生什么?我们的名称服务器是为了解析子域而联系的,还是子域以某种方式传播到全世界的DNS服务器上?但是为什么谷歌的DNS立刻回答,传播不能这么快!
有什么想法可能是问题所在,以及如何使子域帐户在创建后立即访问,而不管用户使用的是什么DNS?
非常感谢
Marc
发布于 2014-07-11 14:36:28
我对DNS的理解是,要解析一个url,这个过程如下:
通常,当我们联系DNS服务器时,这不是它第一次收到对某个特定网站的请求,它会将以前请求的记录保存到过期为止。直到到期的时间(TTL -a值以秒为单位)取决于您的设置。如果您更改您的记录,很可能有大量的DNS服务器与这些缓存的记录。一旦这些记录过期,或者当服务器第一次收到它不知道的url请求时,DNS服务器就会执行“递归查找”,以获得新的数据。
下面是a.contoso.com.的递归查找(注意通常隐藏在末尾的点)
该过程从反向工作开始,从URL末尾的隐藏点开始:
1-联系根名服务器(点服务器),它们的IP地址被预加载到DNS服务器上,这些IP对每台服务器都是相同的,并且不改变,它们给出了.COM DNS服务器的IP地址(或您使用的TLD (如.net) )。
2-然后查询.COM DNS在contoso.com中的“contoso”。(如果您更改了名称服务器,这可能就是您的问题所在)
3-然后在a.contoso.com中查询conto-.com的DNS (您的名称服务器)中的“a”
无限( b.a.contoso.com,2.ww.c.b.a.contoso.com.)
这些递归查找替换陈旧记录的过程称为传播。
我假设您没有收到发送到您的名称服务器的请求,因为在切换过程中传播,您的服务器没有正确地将A记录复制到名称服务器
域传播只是传输域时的问题,而不是创建新域时的问题,因为您不必处理过期记录,因为这些记录根本不存在。请求将直接发送到源。
发布于 2022-02-21 13:01:43
这很可能是负缓存造成的。也就是说,DNS服务器记住子域不存在,并使用NXDOMAIN进行答复,而不检查它是否仍然为真。您可以在顶级域中的SOA记录中找到用于负缓存的TTL。在你的例子中:dig company.com。
另一个不太可能的原因可能是,并非所有权威的DNS服务器都同步。由于它们是独立运行的,所以所有权威的DNS服务器都有相同的记录可能需要一段时间。这称为区域传输,并通过AXFR和IXFR伪记录类型进行。
若要调试此问题,请访问DNS查找工具,并检查以下内容:
至于为什么某些递归DNS服务器会立即回复正确的响应,它们可能在缓存记录的力度上做出了不同的权衡。TTL之后并不总是有DNS解析器。或者某些解析器的缓存可能还没有此记录,导致它们立即请求权威的DNS服务器。
https://stackoverflow.com/questions/24684421
复制相似问题