![自动辅助 DNS 服务器如何找出正确的记录?](https://linux22.com/image/552249/%E8%87%AA%E5%8A%A8%E8%BE%85%E5%8A%A9%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E6%AD%A3%E7%A1%AE%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%9F.png)
对于我们在 OVH 托管的服务器,他们建议我们使用 sdns1.ovh.net 或 sdns2.ovh.net 作为辅助 DNS 服务器,这很棒,而且运行良好。我想知道的是服务器如何确定要发送哪些记录?
sdns 服务的理念是,如果我们的主 DNS 服务器出现故障,无论我们使用哪个 sdns 服务器,都会继续发送正确的 DNS 记录。我已经测试过了,它有效,我可以让它nslookup mydomain.com sdns1.ovh.net
返回正确的记录。如果我更新主 DNS 服务器上的 BIND 配置,等到 TTL 过期后再试一次,它会显示来自 SDNS 服务器的更新记录,但就我而言,我无法弄清楚他们如何知道哪些记录是正确的。
我当时非常沮丧,不知道这是怎么发生的,我设置了一个虚拟机,开启了 BIND,并通过 OVH 管理器将其注册到 SDNS 服务器上。我设置了一个基本的 DNS 配置进行测试,它与主 DNS 服务器和 SDNS 正常工作,正如预期的那样。然后我为该域创建了一个随机子域,没有人会猜到或意外访问这个子域,这样我就可以确保它不会被以某种方式查找。我等了大约 12 个小时(OVH 说记录到 SDNS 服务器可能需要长达 12 个小时才能被获取,根据我的经验,它通常是域上的 TTL,但我想确定一下),然后关闭虚拟机,然后我查询了 SDNS 服务器,它有正确的子域记录!
我没有对 BIND 进行特殊配置,只是遵循了在 RedHat 上安装的标准说明,我知道 DNS 区域传输允许他们读取我的整个区域,但我没有进行配置。
他们如何读取我的整个 DNS 区域并将其缓存在他们的服务器上?
从功能上来说,这非常棒,因为这意味着即使我们的服务器宕机,我们的 DNS 也几乎可以 100% 正常运行。我就是搞不懂他们是怎么做到的 =S
编辑:
Cloudflare 做同样的事情,从远程服务器扫描整个 DNS 区域。我以为如果不设置传输就无法做到这一点,我错了吗?
答案1
如果您没有明确限制区域传输,那么 Bind9 默认允许它。
http://www.zytrax.com/books/dns/ch7/xfer.html
限制区域传输后再尝试执行此操作。其次,如果您将它们用作辅助 DNS,请检查它们是否接受来自主 DNS 的通知,以便更新不必等到刷新超时到期。