Cloud DNS 支援不同類型的公開和 私人區域。本文將詳細說明不同區域類型,以及各類區域的使用時機。
轉送區域
透過 Cloud DNS 轉送區域,您可以為特定私人區域設定目標名稱伺服器。使用轉送區域是從虛擬私有雲 (VPC) 網路實作傳出 DNS 轉送的方法之一。
Cloud DNS 轉送區域是特殊類型的 Cloud DNS 私人區域。您不必在區域內建立記錄,只要指定一組轉送目標即可。每個轉送目標都是 DNS 伺服器的完整網域名稱 (FQDN) 或 IP 位址,位於 VPC 網路,或是透過 Cloud VPN/Cloud Interconnect 連線至 VPC 網路的地端部署網路。
轉送目標和路由方式
Cloud DNS 支援四個目標類型,並提供標準路由和私人路由連線方法。
| 轉送目標 | 說明 | 標準路由支援 | 私人路由支援 | 要求來源 |
|---|---|---|---|---|
| 類型 1 | 有權使用轉送區域的「相同」VPC 網路中, Google Cloud VM 的內部 IP 位址或內部直通式網路負載平衡器。 | 僅限 RFC 1918 IP 位址;流量一律透過已授權的 VPC 網路轉送。 | 任何內部 IP 位址,例如 RFC 1918 私人位址、非 RFC 1918 私人 IP 位址,或私人重複使用的外部 IP 位址,但禁止使用的轉送目標 IP 位址除外。流量一律透過已授權的 VPC 網路轉送。 | 35.199.192.0/19 |
| 類型 2 | 地端部署系統的 IP 位址,使用 Cloud VPN 或 Cloud Interconnect 連線至有權查詢轉送區域的 VPC 網路。 | 僅限 RFC 1918 IP 位址;流量一律透過已授權的 VPC 網路轉送。 | 任何內部 IP 位址,例如 RFC 1918 私人位址、非 RFC 1918 私人 IP 位址,或私人重複使用的外部 IP 位址,但禁止使用的轉送目標 IP 位址除外。流量一律透過已授權的 VPC 網路轉送。 | 35.199.192.0/19 |
| 類型 3 | 可透過網際網路存取的 DNS 名稱伺服器外部 IP 位址,「或是」 Google Cloud 資源的外部 IP 位址;例如其他 VPC 網路中 VM 的外部 IP 位址。 | 僅限可透過網際網路轉送的外部 IP 位址;流量一律會轉送至網際網路或 Google Cloud 資源的外部 IP 位址。 | 不支援私人路由,請確認未選取私人路由。 | Google 公用 DNS 來源範圍 |
| 類型 4 | 目標名稱伺服器的完整網域名稱,可透過 VPC 網路解析順序解析為 IPv4 和 IPv6 位址。 | 視已解析轉送目標的網路而定,流量會透過下列其中一種方式轉送:
|
視已解析轉送目標的網路而定,流量會透過任何內部 IP 位址轉送,例如 RFC 1918 私人位址、非 RFC 1918 私人 IP 位址,或私人重複使用的外部 IP 位址,但禁止使用的轉送目標 IP 位址除外。流量一律透過已授權的 VPC 網路轉送。 如果 DNS 名稱伺服器解析為可透過網際網路存取的外部 IP 位址,或解析為外部 IP 位址本身,則不支援私人路由。 |
|
將轉送目標新增至轉送區域時,可選擇下列其中一種路由方法:
標準路由:根據轉送目標是否為 RFC 1918 IP 位址,透過已授權的 VPC 網路或網際網路轉送流量。如果轉送目標是 RFC 1918 IP 位址,Cloud DNS 會將目標歸類為類型 1 或類型 2,並透過已授權的 VPC 網路轉送要求。如果目標不是 RFC 1918 IP 位址,Cloud DNS 會將目標歸類為類型 3,並預期目標可透過網際網路存取。
私人路由:一律透過已授權的 VPC 網路轉送流量,無論目標的 IP 位址是否為 RFC 1918,因此僅支援類型 1 和類型 2 目標。
如果使用 FQDN 做為轉送目標,路由方法必須與網路類型相符。網域名稱伺服器解析為公開 IP 位址時,必須使用標準路由。
如要存取類型 1 或類型 2 轉送目標,Cloud DNS 會使用已授權 VPC 網路中的路由,前者也是 DNS 用戶端的所在。這些路由會定義轉送目標的安全路徑:
如要將流量傳送至類型 1 目標,Cloud DNS 會使用自動建立的子網路路由。如要回應,類型 1 目標會使用 Cloud DNS 回應的特殊路由路徑。
如要將流量傳送至類型 2 目標,Cloud DNS 可使用自訂動態路由或自訂靜態路由,但含有網路標記的自訂靜態路由不行。如要回應,類型 2 轉送目標會使用地端部署網路中的路由。
如需類型 1 和類型 2 目標的網路需求相關指引,請參閱「轉送目標網路需求」。
如要存取類型 4 轉送目標,Cloud DNS 會先解析網域名稱,然後使用來源網路的路由方法。舉例來說,如果 subdomain.example.com 解析為地端部署系統的 IP 位址,且該系統透過 Cloud VPN 連線至有權查詢轉送區域的 VPC 網路,則會使用與類型 2 轉送目標相同的路由規則。
使用 FQDN 做為轉送目標時,只能指定一個 FQDN。轉送目標最多可解析為 50 個 IP 位址。
禁止使用的轉送目標 IP 位址
下列 IP 位址無法做為 Cloud DNS 轉送目標:
169.254.0.0/16192.0.0.0/24192.0.2.0/24192.88.99.0/24198.51.100.0/24203.0.113.0/24224.0.0.0/4240.0.0.0/4::1/128::/1282001:db8::/32fe80::/10fec0::/10ff00::/8
轉送目標選擇順序
Cloud DNS 可用來為轉送區域設定轉送目標清單。
設定兩個以上的轉送目標時,Cloud DNS 會使用內部演算法選取轉送目標。這項演算法會為各轉送目標排名。
如果使用 FQDN 做為轉送目標,Cloud DNS 會將網域名稱解析為一組最多包含 50 個位址的 IP 位址,然後對這些 IP 位址套用相同演算法。
如要處理要求,Cloud DNS 會先與排名最高的轉送目標聯絡,嘗試執行 DNS 查詢。如果伺服器沒有回應,Cloud DNS 會對排名次高的轉送目標重複提出要求。如果沒有任何轉送目標提供回應,Cloud DNS 會合成 SERVFAIL 回應。
排名演算法會自動運作,下列因素可提高轉送目標的排名:
- 轉送目標處理的成功 DNS 回應數量,數量越多排名越高。成功的 DNS 回應包括 NXDOMAIN 回應。
- 與轉送目標通訊的延遲時間 (封包往返時間),時間越短排名越好。
使用轉送區域
在下列情況中,VPC 網路的 VM 可使用 Cloud DNS 轉送區域:
VPC 網路已獲得授權,可使用 Cloud DNS 轉送區域。如要使用轉送區域,您可以授權相同專案或跨專案的多個 VPC 網路,前提是 VPC 網路位於同一組織內。
VPC 網路中每個 VM 的訪客作業系統,都會使用 VM 的中繼資料伺服器
169.254.169.254做為名稱伺服器。
如果您使用 FQDN 做為目標名稱伺服器,請檢查下列項目:
- 只能設定一個轉寄目標。
- 不支援透過其他轉送區域解析 FQDN 目標。
- 伺服器政策中,FQDN 無法用做替代名稱伺服器。
- FQDN 目標最多可解析為 50 個相關聯的 IP 位址。若超過 50 個解析地址,會遭到截斷。
重疊轉送區域
Cloud DNS 轉送區域是一種 Cloud DNS 代管私人區域,因此可建立多個重疊的區域。依上文設定的 VM 會根據名稱解析順序解析記錄,並使用尾碼最長的區域。詳情請參閱「重疊區域」。
快取和轉送區域
Cloud DNS 會快取傳送至 Cloud DNS 轉送區域的查詢回應。Cloud DNS 會根據下列時間範圍「較短」者,保留來自可連線轉送目標的回應快取:
- 60 秒
- 記錄的存留時間 (TTL) 長度
如果轉送區域的「所有」轉送目標都變成無法連線,Cloud DNS 會在該區域為先前要求的記錄保留快取,保留時間為各記錄的 TTL 長度。
改用對接的時機
Cloud DNS 無法使用遞移路由連線至轉送目標。為說明無效設定,請參考以下情境:
您已使用 Cloud VPN 或 Cloud Interconnect,將地端部署網路連線至名為
vpc-net-a的 VPC 網路。您已使用 VPC 網路對接,將 VPC 網路
vpc-net-a連線至vpc-net-b。您已設定vpc-net-a,用來匯出自訂路徑,並使用vpc-net-b匯入這些路徑。您已建立轉送區域,其轉送目標位於
vpc-net-a所連線的地端部署網路。此外,您還授權vpc-net-b使用該轉送區域。
在這個情境中,即使 vpc-net-b 與地端部署網路之間有連線,轉送目標所服務區域的記錄仍無法解析。為說明這項失敗情形,我們要從 vpc-net-b VM 執行下列測試:
查詢 VM 的中繼資料伺服器
169.254.169.254,取得在轉送區域中定義的記錄。這項查詢會如預期失敗,因為 Cloud DNS 不支援轉送目標的遞移路由。如要使用轉送區域,VM 必須設為使用中繼資料伺服器。直接查詢該記錄的轉送目標。雖然 Cloud DNS 不使用這個路徑,但這項查詢會顯示遞移連線成功。
您可以使用 Cloud DNS 對接區域,修正這個無效情境:
- 建立授權給
vpc-net-b的 Cloud DNS 對接區域,且目標指向vpc-net-a。 - 建立授權給
vpc-net-a的轉送區域,轉送目標為地端部署名稱伺服器。
這些步驟的執行順序不拘。完成這些步驟後,vpc-net-a 和 vpc-net-b 中的 Compute Engine 執行個體就能查詢地端部署轉送目標。
如要瞭解如何建立轉送區域,請參閱「建立轉送區域」。
對接區域
「對接區域」是 Cloud DNS 私人區域,可在不同 VPC 網路的 Cloud DNS 區域間傳送 DNS 要求。舉例來說,軟體即服務 (SaaS) 供應商可讓客戶存取 Cloud DNS 中的代管 DNS 記錄。
如要提供 DNS 對接,您必須建立 Cloud DNS「私人對接區域」,並設為可在提供該區域命名空間記錄的 VPC 網路中,執行 DNS 查詢。DNS 對接區域執行查詢時所在的 VPC 網路,稱為「DNS 供應商網路」。
只有在區域設定期間選取的 VPC 網路,才能存取對接區域。有權使用對接區域的 VPC 網路,稱為「DNS 用戶網路」。
DNS 用戶網路中的 Google Cloud 資源獲得授權後,就能在對接區域的命名空間執行記錄查詢,如同在 DNS 供應商網路中一樣。在對接區域的命名空間查詢記錄時,會遵循 DNS 供應商網路的名稱解析順序。
所以,DNS 用戶網路中的 Google Cloud 資源可在區域的命名空間,從 DNS 供應商網路可用的下列來源查詢記錄:
- DNS 供應商網路授權使用的 Cloud DNS 代管私人區域。
- DNS 供應商網路授權使用的 Cloud DNS 代管轉送區域。
- DNS 供應商網路中的 Compute Engine 內部 DNS 名稱。
- 替代名稱伺服器 (如果 DNS 供應商網路中已設定傳出伺服器政策)。
使用 DNS 對接,即可要求一個網路 (「DNS 用戶網路」) 轉送 DNS 要求給其他網路 (「DNS 供應商網路」),然後執行 DNS 查詢。
DNS 對接限制和重點
設定 DNS 對接時,務必注意以下事項:
- DNS 對接是單向關係,允許 DNS 用戶網路中的 Google Cloud 資源,在對接區域的命名空間查詢記錄,如同 Google Cloud 資源在 DNS 供應商網路中一樣。
- DNS 供應商網路和用戶網路必須是 VPC 網路。
- 雖然 DNS 供應商網路和用戶網路通常屬於同一組織,但系統也支援跨組織 DNS 對接。
- DNS 對接和 VPC 網路對接是不同的服務。VPC 網路對接不會自動分享 DNS 資訊。DNS 對接可搭配使用 VPC 網路對接,但「不」需要 VPC 網路對接即可執行。
- 可支援遞移 DNS 對接,但只能透過單一遞移躍點,也就是最多只能使用三個 VPC 網路 (中間的網路是遞移躍點)。舉例來說,您可以在
vpc-net-a建立以vpc-net-b為目標的對接區域,然後在vpc-net-b建立以vpc-net-c為目標的對接區域。 - 如果您使用 DNS 對接並以轉送區域為目標,但供應商 VPC 網路已停用全域動態路由,則在來源 VM 使用 DNS 對接區域的同一個區域中,具有轉送區域的目標 VPC 網路必須包含 VM、VLAN 連結或 Cloud VPN 通道。如要進一步瞭解這項限制,請參閱「無法將用戶 VPC 網路中的 VM 查詢轉送至供應商 VPC 網路」。
如需建立對接區域的操作說明,請參閱「建立對接區域」。
代管反向查詢區
代管反向查詢區是一種具有特殊屬性的私人區域,可指示 Cloud DNS 對 Compute Engine 的 DNS 資料執行 PTR 查詢。
私人區域中 RFC 1918 位址的 PTR 記錄
如要使用 RFC 1918 位址的自訂 PTR 記錄執行反向查詢,您必須建立至少與下列其中一個範例區域一樣明確的 Cloud DNS 私人區域。這是按照「名稱解析順序」所述最長尾碼比對方法的結果。
範例區域包括以下項目:
10.in-addr.arpa.168.192.in-addr.arpa.16.172.in-addr.arpa.、17.172.in-addr.arpa.、... 至31.172.in-addr.arpa.
如果您為 RFC 1918 位址建立了 Cloud DNS 私人區域,則內部 DNS 自動建立的 PTR 記錄,會覆寫您在該區域建立的 VM 自訂 PTR 記錄。這是因為內部 DNS PTR 記錄是建立在前述清單中較明確的區域。
例如,假設您為 in-addr.arpa. 建立代管私人區域,並為 IP 位址是 10.1.1.1 的 VM 加入下列 PTR 記錄:
1.1.1.10.in-addr.arpa. -> test.example.domain
在本範例中,系統會忽略您 Cloud DNS 私人區域中 in-addr.arpa. 的 PTR 記錄。1.1.1.10.in-addr.arpa. 任何 PTR 查詢的回應,都是來自更明確的 10.in-addr.arpa. 內部 DNS 區域。
如要覆寫為 VM 自動建立的內部 DNS PTR 記錄,請確保在私人區域建立自訂 PTR 記錄,且該區域至少與本節介紹的其中一個區域一樣明確。舉例來說,如果您在 10.in-addr.arpa. 的私人區域建立下列 PTR 記錄,您的記錄會覆寫自動產生的記錄:1.1.1.10.in-addr.arpa. -> test.example.domain。
如果只需覆寫部分網路模塊,可以建立更明確的反向 Cloud DNS 私人區域。舉例來說,5.10.in-addr.arpa. 的私人區域可用來保留 PTR 記錄,並為 IP 位址在 10.5.0.0/16 位址範圍內的 VM,覆寫任何自動建立的內部 DNS PTR 記錄。
如要瞭解如何建立代管反向查詢區,請參閱「建立代管反向查詢區」。
重疊區域
如果某區域的來源網域是另一區域來源的子網域,或兩個來源的網域名稱相同,則表示兩個區域「重疊」。例如:
gcp.example.com和gcp.example.com的區域重疊,因為網域名稱相同。dev.gcp.example.com和gcp.example.com的區域重疊,因為dev.gcp.example.com是gcp.example.com的子網域。
重疊區域的規則
Cloud DNS 會對重疊區域強制執行下列規則:。* 相同 Cloud DNS 名稱伺服器上不得有重疊的公開區域。建立重疊區域時,Cloud DNS 會嘗試將區域放在不同的名稱伺服器。如果無法這樣做,Cloud DNS 就無法建立重疊區域。
- 私人區域可以與任何公開區域重疊。
用於不同 VPC 網路範圍的私人區域可以重疊。例如,兩個 VPC 網路在
gcp.example.com區域中,可以各有一個名為database.gcp.example.com的資料庫 VM。database.gcp.example.com的查詢會依據各 VPC 網路已授權區域中定義的區域記錄,收到不同的回應。已獲授權可從同一個 VPC 網路存取的兩個私人區域不能有相同的來源,除非一個區域是另一個區域的子網域。中繼資料伺服器會使用最長尾碼比對方法,判斷應向哪個來源查詢特定區域中的記錄。
查詢解析範例
Google Cloud 會按照「名稱解析順序」所述,解析 Cloud DNS 區域。判斷應向哪個區域查詢特定記錄時,Cloud DNS 會嘗試尋找與所要求記錄盡可能相符 (最長尾碼相符) 的區域。
除非您已在傳出伺服器政策中指定替代名稱伺服器,否則 Google Cloud 「首先」會嘗試在已授權 VPC 網路 的私人區域 (或轉送區域/對接區域) 中尋找記錄,再於公開區域中尋找記錄。下列範例說明中繼資料伺服器在查詢 DNS 記錄時使用的順序。每個範例中,都假設您已建立兩個私人區域,即 gcp.example.com 和 dev.gcp.example.com,並已授權從同一個 VPC 網路存取這些區域。 Google Cloud會透過下列方式,處理來自 VPC 網路 VM 的 DNS 查詢:
中繼資料伺服器會使用公開名稱伺服器解析
myapp.example.com.的記錄 (請注意結尾的點),因為沒有已授權 VPC 網路的example.com私人區域。使用 Compute Engine VM 的dig,查詢 VM 的預設名稱伺服器:dig myapp.example.com.
詳情請參閱「使用中繼資料伺服器查詢 DNS 名稱」。
中繼資料伺服器會使用已授權的私人區域
gcp.example.com解析記錄myapp.gcp.example.com,因為gcp.example.com是所要求的記錄名稱和可用的已授權私人區域之間最長的共同尾碼。如果在gcp.example.com私人區域中,未定義myapp.gcp.example.com的任何記錄,會傳回NXDOMAIN,即使公開區域已定義myapp.gcp.example.com的記錄也一樣。同樣地,系統會根據已授權私人區域
dev.gcp.example.com中的記錄,解析對myapp.dev.gcp.example.com的查詢。如果dev.gcp.example.com區域中沒有任何myapp.dev.gcp.example.com的記錄,會傳回NXDOMAIN,即使其他私人或公開區域有myapp.dev.gcp.example.com的記錄也一樣。系統會根據私人區域
gcp.example.com中的記錄,解析對myapp.prod.gcp.example.com的查詢,因為gcp.example.com是所要求的 DNS 記錄和可用的私人區域之間最長的共同尾碼。
水平分割 DNS 範例
您可以在水平分割 DNS 設定中,使用公開區域和私人區域的組合。若查詢來自已授權 VPC 網路內的 VM,您可以透過私人區域,為同一記錄的查詢定義不同回應。每當您需要根據來源 VPC 網路,為相同的 DNS 查詢提供不同的記錄,水平分割 DNS 就非常實用。
請參考以下水平分割範例:
- 您已建立公開區域
gcp.example.com,並將註冊商設為使用 Cloud DNS 名稱伺服器。 - 您已建立私人區域
gcp.example.com,並授權 VPC 網路存取這個區域。
您已在私人區域建立單一記錄,如下表所示。
| 記錄 | 類型 | TTL (秒) | 資料 |
|---|---|---|---|
| myrecord1.gcp.example.com | A | 5 | 10.128.1.35 |
您在公開區域建立了兩筆記錄。
| 記錄 | 類型 | TTL (秒) | 資料 |
|---|---|---|---|
| myrecord1.gcp.example.com | A | 5 | 104.198.6.142 |
| myrecord2.gcp.example.com | A | 50 | 104.198.7.145 |
下列查詢會按照說明解析:
- 您 VPC 網路中 VM 發出的
myrecord1.gcp.example.com查詢,會傳回10.128.1.35。 - 網際網路發出的
myrecord1.gcp.example.com查詢,會傳回104.198.6.142。 - 您 VPC 網路中 VM 發出的
myrecord2.gcp.example.com查詢,會傳回NXDOMAIN錯誤,因為私人區域gcp.example.com中沒有myrecord2.gcp.example.com的記錄。 - 網際網路發出的
myrecord2.gcp.example.com查詢,會傳回104.198.7.145。
跨專案繫結
透過跨專案繫結,服務專案的 DNS 命名空間擁有權,可獨立於整個 VPC 網路的 DNS 命名空間擁有權。
在一般的 Shared VPC 設定中,服務專案會擁有虛擬機器 (VM) 應用程式或服務,主專案則擁有 VPC 網路和網路基礎架構。為符合服務專案的資源,通常會從 VPC 網路的命名空間建立 DNS 命名空間。有了這種設定,可以更輕鬆將各服務專案的 DNS 命名空間管理權,「委派」給各服務專案的管理員 (通常是不同的部門或企業)。透過跨專案繫結,可以從整個 VPC 網路的 DNS 命名空間擁有權,區分出服務專案的 DNS 命名空間擁有權。
下圖顯示採用 DNS 對接的一般 Shared VPC 設定。
下圖顯示使用跨專案繫結的設定。Cloud DNS 可讓各服務專案建立及擁有專屬的 DNS 區域,但仍會將其繫結至主專案擁有的共用網路。這樣一來,DNS 區域管理就能獲得更高的自主權,權限界線也更精確。
跨專案繫結提供下列功能:
- 服務專案管理員和使用者可建立及管理專屬的 DNS 區域。
- 您不需要建立預留位置 VPC 網路。
- 主專案管理員不必管理服務專案。
- IAM 角色仍在專案層級套用。
- 所有 DNS 區域都直接與 Shared VPC 網路建立關聯。
- 隨時可執行 any-to-any DNS 解析。Shared VPC 網路中的任何 VM 都能解析相關聯的區域。
- 沒有遞移躍點限制。您可以在中樞和輪輻設計中管理這項功能。
如要瞭解如何建立已啟用跨專案繫結的區域,請參閱「建立跨專案繫結區域」。
可用區 Cloud DNS 區域
透過可用區 Cloud DNS,可以建立範圍僅限於 Google Cloud 可用區的私人 DNS 區域。當您選擇叢集範圍時,系統就會為 GKE 建立可用區 Cloud DNS 區域。
預設的 Cloud DNS 服務本質上是全域性服務,DNS 名稱在您 VPC 網路內全域可見。這項設定可能會導致全域性服務中斷。可用區 Cloud DNS 則是新的私人 Cloud DNS 服務,存在於每個 Google Cloud 可用區。故障域包含在該 Google Cloud 可用區內。若發生全域性服務中斷,可用區 Cloud DNS 私人區域不會受到影響。任何 Google Cloud 可用區服務中斷,只會影響該特定 Google Cloud 可用區,以及該 Google Cloud 可用區內的 Cloud DNS 區域。請注意,在可用區服務中建立的任何資源,只會在該 Google Cloud可用區可見。
如要瞭解如何設定可用區 Cloud DNS 叢集範圍區域,請參閱「設定可用區 GKE 叢集範圍區域」。
可用區 Cloud DNS 支援
下表列出可用區 Cloud DNS 服務支援的 Cloud DNS 資源和功能。
| 資源或功能 | 適用於全域 Cloud DNS | 適用於可用區 Cloud DNS |
|---|---|---|
| 代管公開區域 | ||
| 代管私人區域 (網路或 VPC 範圍) | ||
| 代管私人區域 (GKE 範圍) | ||
| 轉送區域1 | ||
| 對接區域 | ||
| 代管反向查詢區 | ||
| 建立變更或管理記錄2 | ||
| Service Directory 區域 | ||
| 政策 | ||
| 回應政策 (網路範圍) | ||
| 回應政策 (GKE 叢集範圍) | ||
| 回應政策規則 |
1可用區 Cloud DNS 僅支援 GKE 叢集範圍內的轉送區域。
2GKE 控制器會在重新啟動時,覆寫所有記錄變更。
可用區 Cloud DNS 區域的計費方式
可用區 Cloud DNS 區域和回應政策的計費方式,與相對應的全域項目相同。
後續步驟
- 如要使用代管區域,請參閱「建立、修改及刪除區域」一文。
- 如要瞭解使用 Cloud DNS 時可能遇到的常見問題解決方案,請參閱這篇文章。
- 如要查看 Cloud DNS 總覽,請參閱這篇文章。