Cloud DNS 是 Google 提供的高性能、代管式的全球網域名稱系統服務,是一個分布式的分層資料庫,可以創建 DNS Zone 和 record 而無需自己管理 DNS Service ,對應其他的雲端服務是 :

  • Amazon Web Services (AWS) : Amazon Route 53
  • Microsoft Azure : Azure DNS

Cloud DNS 是提供代管功能而不是註冊,而代管的好處是有一個「共同管理維護」的介面 ; 還能「基於地理位置」將流量轉到最接近的服務器從而提高性能與速度 ; 結合「 GCP 雲端安全服務」保護應用程式免於如 DDoS 攻擊。 最後比較特別的是 Google 的 Cloud DNS 服務號稱是 100% SLA ,服務絕對不會中斷,一旦使用上未能達到此標準,客戶都可以申請相關補償。


開頭也特別提到一點, 「Cloud DNS 是代管而不是註冊」, 那「註冊」跟「代管」有什麼不一樣呢?

  • 註冊其實就是買域名或者是租用域名,原本 Google 有一個 「Google Domain」有這種功能,但是已經被 Squarespace 於 2023/09/07 收購了。

  • 雖然說我們只能找別的域名供應商買域名或者是租域名,但我們可以去設定 Cloud DNS 接管服務,這就是代管。

一般來說,在哪裡買或租了域名,則默認的域名解析服務就是該服務商提供的,而 GCP 提供域名代管,例如在 GoDaddy 買了一個域名後,可以去 GCP console 設定 DNS 的資料而不要在 GoDaddy 做管理。

網路域名、網域、域名都是指同一個東西,本文章都以域名來稱呼。

Cloud DNS

域名註冊完後,需要設定 DNS 才能使用,接下來設定 DNS 的 Namespace ,就是 DNS Zone 。而 Cloud DNS Zone 分成兩種類型 :

  • Private zone: 需要設置對應 VPC,其 DNS records 僅供 GCP VPC 內部可見
  • Public zone: 在一般外網可見,故外部可以訪問,一般來說最常使用的是這個

接下來做一些簡單的名詞說明:

  • Zone name

    DNS 分為許多不同的 zone ,而 zone name 用來區分在「 DNS 命名空間」中以不同方式管理。一個 DNS zone 裡面會保存有相同 DNS Name Suffix。

  • DNS name

    在域名商那邊申請到的 「 DNS 名稱,例如:helloworld.com 」就是貼到上圖中的 DNS name 欄位中。

常見錯誤是把 DNS zone 、 DNS Name 、 DNS Server 當成同一個東西,可參考 Cloudflare 講解。

  • DNSSEC (DNS Security Extensions)
    是一套針對 DNS 的網際網路工程任務群組 (IETF) 的擴展,用於驗證對網域名稱尋找的回應。 DNSSEC 不會為這些查找提供隱私保護,但會阻止攻擊者操控對 DNS 請求的回應或對該回應進行 DDOS 攻擊。

DNS Record

設定完 DNS Zone 之後,接下來就會在該 Zone 內添加 Record 紀錄。 Record 是 DNS resource 和 domain name 之間的 Mapping,每個 DNS Record 都有 type、 TTL(time to live),在新增 Record 時, Cloud DNS 除了 standard 標準解析之外,還有 Routing Policy 路由政策可以進階設定。 Routing Policy 是在 DNS 查詢時的演算法,用以確定應如何解析特定的 DNS Record,有提供三種可以選擇: 「Standard」、「Weighted Round Robin」、「Geolocation」,除非有設定 Failover Routing Policy,要不然上面三個路由政策只能選一個無法組合。

TTL 作用是設定每一筆紀錄在 DNS 快取伺服器所保留的時間,所以當變更這筆 DNS 紀錄的時候,要等到你設置的 TTL 時間後才會全球生效。

接下來簡要介紹並列出有用過的 Cloud DNS 支援的 DNS Record 類型:

  • A / AAAA Record

A Record 將域名映射到對應的 IPv4 。常用在想直接將個人網域指向一個固定 IPv4 ,其操作是將 DNS Name 例如 helloworld.com, 指向如 VM 的固定 IP 例如:123.45.67.89。而 AAAA Record 將域名映射到對應的 IPv6

  • CNAME Record(Canonical Name Record)

將一個域名(或子域名)映射到另一個域名。如果想將個人網域指向另一個名稱,而不是直接指向 IP,則會新增一個 CNAME 記錄。其操作將 DNS Name 例如 helloworld.example.com 指向另一個目標 DNS Name 例如: helloworld.main.com。這樣當有人輸入 helloworld.example.com 時,DNS 解析會自動將它轉發到 helloworld.main.com。

  • SOA (start of authority)

SOA 這種Record 用於指向 DNS Zone 的 Authoritative Name Server 權威名稱伺服器,指定該 Zone 的 administrative contact 資訊。


參考資料