GCP - Cloud DNS 概述
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 資訊。