Domain-Name-System

在 DNS 中,IN NS 可以指向 CNAME 嗎?

  • November 5, 2021

是否允許將 NS 記錄作為 CNAME?例如:

subdomain.example.com.       IN NS  ns1.example.com.
ns1.example.com.             CNAME  foo.example.com.
foo.example.com.             IN A   10.1.1.1

儘管這(當然)確實如此,但這似乎在 bind 中不起作用:

subdomain.example.com.       IN NS  foo.example.com.
foo.example.com.             IN A   10.1.1.1

任何指向禁止此設置的 RFC 的指針將不勝感激。

RFC 1035僅將 NS 資源記錄 (RR) 定義為域名,而沒有指定目標的 RR 類型(儘管它明確表示它不能是 IP)。

RFC 1912在第 2.4 節中有更多細節:

讓 NS 記錄指向 CNAME 是不好的,並且可能與目前的 BIND 伺服器發生嚴重衝突。事實上,目前的 BIND 實現將忽略這些記錄,可能導致蹩腳的委託。BIND 中進行了一定數量的安全檢查,以防止欺騙 DNS NS 記錄。此外,據報導,較舊的 BIND 伺服器將陷入無限查詢循環,試圖找出別名名稱伺服器的地址,從而導致發送連續的 DNS 請求流。

正如後來在評論中指出的那樣,RFC 2181第 10.3 節明確禁止這樣做:

MX 和 NS 記錄

用作NS資源記錄值的域名,或MX資源記錄值的一部分,不能是別名。不僅規範在這一點上很清楚,而且在這兩個位置中使用別名既不能達到預期的效果,也不能很好地實現可能導致這種方法的雄心。該域名必須具有一個或多個地址記錄作為其值。目前,這些將是 A 記錄,但將來可能會接受其他提供定址資訊的記錄類型。它也可以有其他 RR,但不能有 CNAME RR

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