Domain-Name-System

Windows Server 2012 R2 DNS 管理器中的 Apex ANAME / ALIAS 記錄

  • May 27, 2020

一些 DNS 主機提供了一種 A 記錄的方法,該記錄提供一個 IP 地址,該地址是通過在後台解析一些其他主機名來動態確定的(或經常通過計劃作業確定)。當 example.com(而不是像 www.example.com 這樣的子域)必須指向其 IP 地址不時更改的主機時使用此選項,而無需在每次更改時都需要人工干預。結果是解析 example.com 會生成一條 A 記錄,其中 A 記錄的 IP 地址由名稱伺服器通過查找 another.example.com 的 IP 地址動態確定,該地址本身可能是 CNAME。

DNS Made Easy 和 easyDNS 稱之為“ANAME 記錄”,Route 53 稱之為“別名資源記錄”,CloudFlare 稱之為“CNAME Flattening”,DNSimple 稱之為“ALIAS 記錄”。不管他們怎麼稱呼它,解析主機名時都會返回一個標準的 A 記錄。

儘管這是一個相當明顯的概念,但我還沒有看到關於如何實現這一點的出版物。我打算在我的名稱伺服器(Windows Server 2012 R2 中的 DNS 管理器)中複製此行為。是否存在用於執行此操作的 DNS 管理器外掛?

編輯:為了避免XY 問題,我將提供完整的背景,從症狀方面的問題開始,然後遍歷依賴項,因為它們表明了哪些解決方案已經嘗試過和尚未嘗試過。

症狀

與頂級域 (example.com) 的 SSL/TLS 連接會生成證書不匹配。由於電子郵件客戶端自動檢測主機等原因,這種連接並不經常嘗試,但越來越多。例如,我們只是將 Exchange 作為面向客戶端的郵件伺服器,當在 Android 或 Mac Mail 中添加 user@example.com 作為 Exchange 帳戶時,自動主機發現顯然會派生“典型”主機名,例如 example.com, mail.example.com、exchange.example.com 等,並給使用者一個可怕的警告,即 example.com 證書上的 CN 不是 example.com。我們實際上使用具有匹配證書的 exchange.example.com,但自動檢測必須首先嘗試 example.com。

當 Web 瀏覽器指向https://example.com時也會出現不匹配警告,但大多數人在其地址欄中鍵入 example.com 而不是以 https:// 為前綴的事實緩解了這種情況,因此它們結束必要時通過重定向升級到https://www.example.com 。由於 www.example.com 有一個 CNAME,所以它能夠指向一個沒有 CN 不匹配的主機。

為什麼 www.example.com 上只有匹配的證書而不是 example.com?

具有我們匹配證書的伺服器(順便說一下,它可以輕鬆地擁有 SAN 條目以匹配 example.com 和 *.example.com,那裡沒有問題)位於亞馬遜警告的 AWS ELB(彈性負載均衡器)上IP 地址可能隨時更改。由於動態 IP 地址,ELB 只能通過其主機名來引用,這意味著 CNAME/ANAME/Flatening/等。這就是為什麼我們能夠將 www.example.com 指向 ELB,而不是 example.com。亞馬遜建議使用 Route 53 來克服任何限制。如果這不可能,唯一的解決方案是讓 example.com 的 A 記錄不指向 ELB,而是指向通常 ELB 反向代理的上游伺服器。

為什麼不將匹配的證書放在該上游伺服器上?

只有 ELB 本身是專用於我的,所以只有 ELB 可以安裝我的萬用字元證書。上游伺服器在託管服務提供商的客戶之間共享。我可以讓託管公司將 example.com 添加到他們證書上的 SAN 洗衣清單中,這樣就不會出現不匹配的情況,但是出於各種原因,我有興趣充分利用 ELB。

約束

我們固定在 Win2012R2 上內部執行 DNS,而所有 WWW 主機都必須在 AWS 上以實現彈性。

考慮到問題的確切情況,我想說理想的解決方案是將頂點指向一個將 HTTP 請求重定向到的網路example.com伺服器www.example.comwww.example.com反過來又可以是 AWS 管理的 DNS 記錄的 CNAME。

  • 雖然可以您的伺服器上設置一個自動更新頂點 A 記錄以“追逐”AWS 的解決方案,但這會引入大量不必要的複雜性,並為您的內部基礎設施創建額外的依賴項,以使事情按預期工作。我會盡力避免這種情況。
  • 自己執行這個網路伺服器顯然會引入它自己的一系列挑戰和依賴關係,所以很自然地將注意力轉移到外部。解決您的問題(包括https)的商業服務範例是wwwizer.com。請注意,我沒有連結到他們的免費非 SSL 產品。
  • 簡單性和可用性之間的折衷方案是在您自己執行的雲中設置一個簡單的 Web 伺服器來執行此重定向。您仍然堅持執行網路伺服器,但至少對您公司的本地基礎架構沒有依賴關係,並且您擁有其可用性的 SLA。

歸根結底,您必須問自己,您的頂級記錄始終正常執行有多重要。在您的情況下,它應該只是對手動鍵入該記錄的使用者的一種保護。確保您的伺服器和應用程序在配置時考慮到這一點,並且應該大大降低風險。還應該在您的設計文件(如果適用)中註明,以確保事情保持不變。

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