Cloudflare:什么是次要DNS?

來源: Cloudflare
作者:Cloudflare
時間:2021-04-14
19031
在傳統(tǒng)意義上,次要 DNS 服務器充當主要權威性 DNS 服務器的備份。主要服務器上的記錄發(fā)生更改時,將進行區(qū)域傳送使次要 DNS 服務器與主服務器保持同步。然后,次要服務器可以像主要服務器一樣提供記錄,但是只能由主要服務器進行更改,次要服務器則不行。這可以在許多不同的服務器之間創(chuàng)造冗余,服務器也可根據需要分散于各處。

什么是次要DNS?

在傳統(tǒng)意義上,次要 DNS 服務器充當主要權威性 DNS 服務器的備份。主要服務器上的記錄發(fā)生更改時,將進行區(qū)域傳送使次要 DNS 服務器與主服務器保持同步。然后,次要服務器可以像主要服務器一樣提供記錄,但是只能由主要服務器進行更改,次要服務器則不行。這可以在許多不同的服務器之間創(chuàng)造冗余,服務器也可根據需要分散于各處。

有許多利用次要 DNS 的常用方法,其中一些有:

  1. 次要 DNS 充當被動備份 - 次要 DNS 服務器處于閑置狀態(tài),直到主服務器停機,這時可能發(fā)生可故障轉移,并且次要服務器可以開始提供記錄。

  2. 次要 DNS 充當主動備份 - 次要 DNS 服務器與主服務器一起工作以提供記錄。

  3. 次要 DNS 使用隱藏主模型 - 注冊商處的域名服務器記錄僅指向次要服務器,實質上將它們視為主要域名服務器。

什么是 Secondary DNS Override?

Secondary DNS Override 基于使用隱藏主模型的次要 DNS 而構建,讓我們的客戶不僅能夠按他們告訴我們的方式提供記錄,還可以通過 Cloudflare 的網絡代理任何 A/AAAA/CNAME 記錄。這與 Cloudflare 當前作為主要 DNS 提供商的工作方式類似。

請思考以下示例:

example.com Cloudflare IP - 192.0.2.0

example.com 原始 IP - 203.0.113.0

為了利用 Cloudflare 的安全和性能服務,我們需要確保原始 IP 對互聯(lián)網保持隱藏。

圖 1:沒有隱藏主要域名服務器的次要 DNS

圖 1 顯示,在沒有隱藏主要域名服務器時,解析器可以選擇查詢其中任何一個。這將產生兩個問題:

  1. 違反 RFC 1034 和 RFC 2182,因為 Cloudflare 服務器的響應將與主要域名服務器不同。

  2. 原始 IP 將暴露給互聯(lián)網。

圖 2:有隱藏主要域名服務器的次要 DNS

圖 2 顯示,解析器始終會查詢 Cloudflare 次要 DNS 服務器。

Secondary DNS Override 的工作方式

Secondary DNS Override UI 看起來與主 UI 相似,唯一的區(qū)別是無法編輯記錄。

圖 3:Secondary DNS Override 儀表板

在圖 3 中,所有記錄均已從主 DNS 服務器傳送過來。test-orange 和 test-aaaa-orange 已重寫為通過 Cloudflare 網絡進行代理,而 test-grey 和 test-mx 則被視為常規(guī) DNS 記錄。

我們在幕后存儲重寫記錄,這些記錄基于名稱與傳送來的記錄配對。對于次要重寫,我們在重寫記錄時不關心其類型,原因有兩點:

  1. 根據 RFC 1912,您無法擁有與任何其他記錄同名的 CNAME 記錄。(這不適用于某些 DNSSEC 記錄,具體參見 RFC 2181)

  2. A 和 AAAA 記錄都是地址類型記錄,應在同一名稱下全部代理或全部不代理。

這意味著,如果您有幾個名稱均為“example.com”的 A 和 AAAA 記錄,倘若其中之一被代理,則所有記錄都將被代理。UI 通過“橙色云”按鈕幫助抽象我們要存儲其他重寫記錄的念頭,點擊這個按鈕將創(chuàng)建一個重寫記錄,并應用到具有該名稱的所有 A/AAAA 或 CNAME 記錄。

頂端處的 CNAME

通常,不允許將 CNAME 放在區(qū)域的頂端。示例:

example.com CNAME other-domain.com

這是不被允許的,因為這意味著將存在至少一個其他 SOA 記錄和另一個同名的 NS 記錄,而這與上文提到的 RFC 1912 相悖。Cloudflare 可以通過使用 CNAME 拉平來解決這一問題,這是當今主要 DNS 產品中常用的技術。當查詢進入我們的權威服務器時,CNAME 拉平允許我們返回地址記錄而不是 CNAME 記錄。

與上文中有關禁止 Secondary DNS Override UI 編輯記錄的說法相反,頂端處的 CNAME 是此規(guī)則的一個例外。除了常規(guī)的次要 DNS 記錄,用戶還可以在頂端處創(chuàng)建 CNAME,但這里也適用 RFC 1912 中定義的相同規(guī)則。這意味著,頂端處的 CNAME 記錄可以視為常規(guī) DNS 記錄或代理記錄,具體取決于用戶的決定。不管頂端記錄中 CNAME 的代理狀態(tài)如何,它都將重寫從主要 DNS 服務器傳送來的所有其他 A/AAAA 記錄。

合并頂端處的次要、重寫和 CNAME 記錄

在編輯記錄時,我們會在頂端處進行次要、重寫和 CNAME 記錄的所有合并。這意味著,當 DNS 請求進入邊緣的權威服務器時,我們仍然可以在極快的時間內返回記錄。具體工作流程如圖 4 所示。

圖 4:記錄合并過程

在區(qū)域構建器中執(zhí)行如下步驟:

  1. 檢查頂端處是否有任何 CNAME,如果存在,則重寫頂端處的所有其他 A/AAAA 次要記錄。

  2. 對于每個次要記錄,檢查是否存在匹配的重寫記錄,如果存在,則將重寫記錄的代理狀態(tài)應用到具有該名稱的所有次要記錄。

  3. 所有其他次要記錄保持不變。

立即登錄,閱讀全文
版權說明:
本文內容來自于Cloudflare,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家