Domain-Name-System
在 DNS 中,IN NS 可以指向 CNAME 嗎?
是否允許將 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。