解析為 CNAME 而非 A 記錄

解析為 CNAME 而非 A 記錄

在我工作的大學的資料中心,我們有一個 DNS 系統,用於註冊伺服器名稱和僅供內部使用的服務地址。

通常,我們會使用以下模式:

server     A        xxx.xxx.xxx.xxx
service    CNAME    server

現在我們有一個服務,當透過 HTTP 存取時,我們只想解析 CNAME 記錄,而不是 A 記錄。

僅使用 DNS 配置可以嗎?

答案1

對於某些協定(例如http),您可以將服務配置為僅在客戶端指定正確的名稱時才回應;在這種情況下,您可以將 Web 伺服器設定為僅回應包含 CNAME 的 http 要求。根據評論,您已經知道如何執行此操作。

還有一些協議,伺服器仍然不知道客戶端正在使用的名稱,在這種情況下,無法阻止使用者使用 A 記錄中的名稱。

我不相信你可以在 DNS 層做到這一點。 也就是說,如果沒有相應的 A 記錄(對您的用戶端也可見),則沒有可靠的方法可以使 CNAME 對您的用戶端可見並解析為所需的 IP 位址。

你什麼要做的(我猜這取決於你使用的 DNS 軟體)是有兩個 A 記錄,都指向同一個 IP 位址,即

server     A        xxx.xxx.xxx.xxx
service    A        xxx.xxx.xxx.xxx

然後使server記錄僅對需要存取該記錄的管理人員可見。你不使用 CNAME 作為服務名稱。唯一的問題是,您有責任確保這兩個名稱的 IP 位址始終相符。

答案2

是的,這是可能的。事實上,無論如何,這是解決問題的第一步。

不過,要實際執行此操作,您(通常)需要繞過作業系統的本機 DNS 解析方法,因為它們(通常)無法停止在 CNAME 記錄處並且不再進行任何進一步解析。我不知道有任何 DNS 解析器庫允許您執行此操作,但我確實知道有一個標準工具可以執行此操作,如果您明確要求查詢類型(或查詢類型,但BIND 的dig命令將不會遵循 CNAME 記錄)那CNAMEANY可能也傳回 A 或 AAAA 記錄,取決於 DNS 伺服器)。

相關內容