具有绑定功能的高级区域委派,可将部分委派区域委派到其他地方

具有绑定功能的高级区域委派,可将部分委派区域委派到其他地方

我在使用 bind9 配置以下 dns 设置时遇到了问题:

我想将区域委托给远程 DNS 服务器。但我想将该区域的子区域委托给不同的 DNS 服务器。

例子:

  • project.example.com-> 至 DNS 服务器dns1
  • prd.project.example.com-> 至 DNS 服务器dns2

出于显而易见的原因,我不想将所有事情委托给dns1然后再委托prd.project.example.comdns2。我可以更深入地了解细节(需要动态子域,dns1例如等),但我认为它们现在不会有帮助。devhotfix1

我能够使用 cloudflare 和 aws route53 成功设置此解决方案。但 bind 无法按预期工作。它一直将所有内容(例如test.prd.project.example.com)委托给dns1

我错过了什么?

以下是简化的区域文件:

$ORIGIN example.com.
$TTL 300
@       IN  SOA dns.example.com. ( 2021020506 3600 720 1209600 3600 )
        IN  NS  dns.example.com.

dns     IN  A  1.2.3.4

$ORIGIN project.example.com.
$TTL 60
@       IN NS ns-1.awsdns-1.net.
        IN NS ns-1.awsdns-1.co.uk.

$ORIGIN prd.project.example.com.
$TTL 60
@       IN NS ns-2.awsdns-2.net.
        IN NS ns-2.awsdns-2.co.uk.

答案1

DNS 委派基础知识

问题中的委派组合在 DNS 中是无法实现的。
您的区域恰好在委派点处结束,您无法委派不属于您自己区域的内容。

在您的示例中,委托prd.project.example.com必须在project.example.com区域中进行,但无法在example.com区域中完成。

AWS Route53 行为

在对 AWS Route53 进行一些实验之后,我现在更好地理解了这个问题的基础:

看来 AWS Route53 在添加区域外记录方面完全缺乏一致性检查。
对于大多数记录类型,Route53 似乎在查询时会忽略这些区域外记录的存在(这使得它们基本上无害),但NS它实际上为它们提供服务,尽管这会导致向世界公开不可能的委派组合。

这显然是一个错误,它暴露了一个不可能的委托组合,我预计这会导致客户端的行为不一致(本质上取决于解析器首先看到的委托),这不是我们所希望的。
我不希望 BIND 或其他任何东西复制这种特定行为,因为它与 DNS 作为树结构的基本性质相矛盾。(我也不指望它在实践中真的能起作用,所以没有理由实现它。)

相关内容