Domain-Name-System

帶綁定的高級區域委託,將委託區域的一部分委託到別處

  • February 7, 2021

我在使用 bind9 配置以下 dns 設置時遇到問題:

我想將一個區域委託給遠端 dns 伺服器。但我想將該區域的一個子區域委託給不同的 dns 伺服器。

例子:

  • project.example.com-> 到 DNS 伺服器dns1
  • prd.project.example.com-> 到 DNS 伺服器dns2

出於顯而易見的原因,我不想將所有內容dns1委託prd.project.example.comdns2. 我可以更深入地了解細節(需要動態子域,dns1例如等),但我認為它們現在不會有幫助。dev``hotfix1

我能夠使用 cloudflare 和 aws route53 成功設置此解決方案。但是綁定沒有按預期工作。它不斷將所有內容(例如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.

DNS 委託基礎知識

問題中的委託組合在 DNS 中是不可能的。

您的區域在委派點結束,您不能委派不屬於您自己區域的內容。

prd.project.example.com在您的範例中,必須在區域中進行委託,project.example.com而不能在example.com區域中進行。

AWS Route53 行為

在對 AWS Route53 進行了一些實驗之後,我現在更好地理解了這個問題的基礎:

似乎 AWS Route53 在添加區域外記錄方面完全缺乏一致性檢查。

對於大多數記錄類型,Route53 在查詢時似乎只是忽略了這些區域外記錄的存在(這使得它們在很大程度上是無害的),但NS它實際上為它們服務,即使這使得向世界公開的代表團組合成為不可能的組合。

這顯然是一個錯誤,它暴露了一個不可能的委託組合,我預計這會導致客戶端的行為不一致(基本上基於解析器首先看到的任何委託)並且不是可取的。

我不希望 BIND 或其他任何東西複製這種特殊行為,因為它與 DNS 作為樹形結構的基本性質不一致。(我也不希望它在實踐中真正起作用,因此沒有理由實施它。)

引用自:https://serverfault.com/questions/1052535