一般 DNS 總覽

這個頁面提供網域名稱系統 (DNS) 的總覽。

如需 Cloud DNS 總覽,請參閱「Cloud DNS 總覽」一文;如需 Cloud DNS 相關重要詞彙,請參閱「重要詞彙」一文。

DNS 是一種階層型分散式資料庫,能夠儲存 IP 位址和其他資料,並可讓使用者按名稱查詢這些資料。

換句話說,DNS 是可讀取的網域名稱目錄,會轉譯為電腦用來彼此通訊的數字 IP 位址。舉例來說,當您在瀏覽器中輸入網址時,DNS 會將網址轉換為與該名稱相關聯的網路伺服器 IP 位址。DNS 目錄會儲存在定期更新的網域名稱伺服器上,並發布至全球各地。

瞭解下列概念對於使用 DNS 很有幫助。

DNS 伺服器類型

DNS 伺服器會儲存網域名稱資料庫,然後根據網路用戶端傳來的 DNS 查詢處理網域名稱。

授權伺服器

「授權伺服器」是保存 DNS 名稱記錄的伺服器,包括 A、AAAA 和 CNAME。

「非授權伺服器」會根據先前對網域的查詢建構快取檔案,且不會保留原始名稱記錄。

遞迴解析器

「遞迴解析器」是將查詢傳送至授權或非授權伺服器,以進行解析的伺服器。遞迴解析器會針對指定名稱執行每項查詢,並傳回最終結果,因此稱為遞迴解析器。

這與「疊代解析器」不同,疊代解析器只會將參照連結網址傳回給可能擁有答案的下一個 DNS 伺服器。

舉例來說,解析 google.com. 名稱時,遞迴解析器必須判斷 . (DNS 的根區域) 的授權伺服器為何,然後詢問這些名稱伺服器,.com. 的授權伺服器為何。最後,它會詢問這些名稱伺服器,誰是 google.com. 的授權伺服器為何,並將 A 記錄的 rdata 傳回給用戶端。

以下是運作中遞迴解析器的範例。如果您執行 dig +trace google.com,遞迴解析器會執行下列動作 (8.8.8.8/Google 公用 DNS 是其中一個解析器):

 dig +trace google.com
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> +trace google.com
;; global options: +cmd
.           168383  IN  NS  a.root-servers.net.
.           168383  IN  NS  b.root-servers.net.
.           168383  IN  NS  c.root-servers.net.
.           168383  IN  NS  d.root-servers.net.
.           168383  IN  NS  e.root-servers.net.
.           168383  IN  NS  f.root-servers.net.
.           168383  IN  NS  g.root-servers.net.
.           168383  IN  NS  h.root-servers.net.
.           168383  IN  NS  i.root-servers.net.
.           168383  IN  NS  j.root-servers.net.
.           168383  IN  NS  k.root-servers.net.
.           168383  IN  NS  l.root-servers.net.
.           168383  IN  NS  m.root-servers.net.
.           168383  IN  RRSIG   NS 8 0 518400 20190810170000 20190728160000 59944 .
    ITqCp5bSKwoG1P76GpNfDanh4fXxOtHuld5SJzEm9ez0U/K7kpmBm4TE
    cw82zuqtZlqiGOuq+90KHJEhD1fdX3FujgDqe3kaY/41LgFIo76RBeMP
    CorYg29lKQOBf7pLPiJWewFmnLsRXsvENzxNXl9mynX80EQSS2YlCWpr
    47i2j5SFpGDzmxls7LinB4VvwVLhy0FPwBaVc5NVqQoFS5ZkfKXCUz8x
    urExPT2OtPJeDiGzrQGmT6vDbYZtJRWWGK5tPIKZQyF/08YSJlrjebNa
    1nKZVN8SsO8s7elz6JGmdoM6D/1ByLNFQmKvU55ikaVSnXylqixLbJQI 7LyQoA==
;; Received 525 bytes from 127.0.0.1#53(127.0.0.1) in 22 ms

com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  d.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  m.gtld-servers.net.
com.            86400   IN  DS  30909 8 2
    E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400   IN  RRSIG   DS 8 1 86400 20190811170000 20190729160000 59944 .
    KXPRdZspxd6hZYRFx3cj7Yp3d6HDzOG5CmoK46ZrrlKnZkCYMPKzyFQ2
    15pA+jZ37MbQbhe6+S+C4AHWqv95DDsue85ha3ZmWGhnJxcLnDaL5Twp
    Z/W/a+1cTHhhbMZua1riw74mqvzRAF1kVerj7jrvWnOAOZCh69Dr4AFJ
    gRN4MAn+wCZDmPQCtkcGVJ9vyNV7Xra45B4ISqEo0xi8CXewp9cc+aW5
    TSjFRhj1RM9d3k+3Mrq6AAV8dVgWofYTg6Ihph/SfoIx4TrTrEbgfdsv
    MvuLPXvK6Y7oSh5WknbFduw7HQdo1jH3/QR54FORswBJT8VmYD7Zii88 tAjbRQ==
;; Received 1170 bytes from 192.58.128.30#53(j.root-servers.net) in 2 ms

google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  ns1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 -
    CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2
    86400 20190803044434 20190727033434 17708 com.
    rMmiNL7bYvJpB3Bc+WnqS2iiczm2PwxBvJcl7SL/vcTj88GsxM1ycTSV
    PsHZHxfrv1dv2C5BCSZ+mzeVBu8upLoeraQy+UVf3VXyt3i3rNGzcXYV
    8HSrHcXrRoAJopFim3Ge1xdZ+uERg3cTIcN2tJxxkCeqt/EcUTqtQl8t EAc=
    S84BDVKNH5AGDSI7F5J0O3NPRHU0G7JQ.com. 86400 IN NSEC3 1 1 0 -
    S84CFH3A62N0FJPC5D9IJ2VJR71OGLV5 NS DS RRSIG
    S84BDVKNH5AGDSI7F5J0O3NPRHU0G7JQ.com. 86400 IN RRSIG NSEC3
    8 2 86400 20190804045723 20190728034723 17708 com.
    jypPsaWVop9rzuf70CFYyiK0hliiJ+YYtkjgb3HVj9ICc57kLmv9DkvG
    DddF5GBQpqNEakzyJtya179MAdDT7RhJB4XfmY6fu5I5QTeIjchfP5wt
    7gU1AL7cqTmBAo2RWu62vtUytV09+O3KGFq5O+Cwr11dSTfq1yYyw6YW cMI=
;; Received 772 bytes from 192.41.162.30#53(l.gtld-servers.net) in 2 ms

google.com.     300 IN  A   172.217.7.14
;; Received 55 bytes from 216.239.32.10#53(ns1.google.com) in 13 ms

每個 DNS 用戶端都會查詢名稱伺服器。如有需要,遞迴解析器會查詢其他名稱伺服器,一路向上查詢至頂層名稱伺服器。上層名稱伺服器所在區域的 NS 記錄,會將解析器「向下」導向另一個名稱伺服器,最終抵達快取區域的名稱伺服器,或是區域的授權伺服器。

區域

公開區域

公開區域可以在網際網路上顯示。您可在公開區域中建立 DNS 記錄,以便在網際網路上發布服務。舉例來說,您可以在名為 example.com. 的公開區域中建立 A 記錄 (請注意結尾的點),用於公開網站 www.example.com.

私人區域

私人區域是指無法透過公開網際網路查詢的任何區域。

委派的子區域

DNS 可讓區域擁有者透過 NS 記錄,將子網域委派給不同的名稱伺服器。解析器會依據這些記錄,將對於子網域的查詢傳送至委派作業所指定的目標名稱伺服器。

舉例來說,您可以為 example.comsubdomain.example.com 分別建立區域,每個區域都有自己的授權名稱伺服器。由於 subdomain.example.comexample.com 的子網域,因此從上層網域的區域尋找子網域的授權名稱伺服器的方法稱為「委派」。委派作業基本上是指向子網域授權名稱伺服器的指標。如要在 Cloud DNS 中啟用委派功能,請在上層網域的區域中新增子網域的 NS 記錄。

水平分割 DNS

「水平分割」一詞是用來描述為同一網域建立兩個區域的情況,一個區域供內部網路使用,另一個區域供外部網路 (通常是網際網路) 使用。水平分割 DNS 可讓您根據查詢者身分,為相同名稱提供不同的答案 (不同的資源記錄集)。

舉例來說,如果查詢來自開發網路,您可以提供應用程式的開發或測試版本;如果查詢來自公開網際網路,則可以提供應用程式的正式或公開版本。

記錄

A 記錄是 DNS 資源與網域名稱之間的對應。每個 DNS 記錄都有類型 (名稱和編號)、到期時間 (存留時間) 和類型專屬資料。

以下列舉一些常用的記錄類型:

  • A:位址記錄,用來對應主機名稱及其 IPv4 位址。
  • AAAA:IPv6 位址記錄,用來對應主機名稱及其 IPv6 位址。
  • CNAME:正規名稱記錄,用來指定別名。
  • MX:郵件交換記錄,用於將要求轉送至郵件伺服器。
  • NS:名稱伺服器記錄,用於將 DNS 區域委派給授權伺服器。
  • PTR:指標記錄,用於定義與 IP 位址相關聯的名稱。
  • SOA:起始授權機構,用於指定主要名稱伺服器和區域的管理員。DNS 伺服器上代管的每個區域都必須有 SOA (起始授權機構) 記錄。您可以視需要修改該記錄 (例如,您可以將序號變更為任意號碼,以支援以日期為基準的版本管理)。

記錄集

名稱和類型相同,但資料值不同的記錄稱為記錄集。建立記錄時,如果已有相同名稱和類型的記錄集,系統會將記錄加入相符的記錄集。假如沒有相符的記錄集,系統就會建立新的記錄集,並新增至記錄集清單的末端。

以下是記錄集範例,當中包含多筆名稱及類型相同的記錄:

DNS 名稱 類型 TTL (秒) 資料
db-01.dev.gcp.example.com A 50 10.128.1.35
db-01.dev.gcp.example.com A 50 10.128.1.10

如需 Cloud DNS 支援的記錄類型清單,請參閱「支援的 DNS 記錄類型」一節。

子網域委派

建立記錄時,請確認 NS 和 SOA 記錄彼此相符。如果 NS 和 SOA 記錄相衝突,部分解析器可能會拒絕委派,並拒絕快取查詢的 NO DATA 回應。當解析器對公開代管區域查詢不存在的記錄時,第三方遞迴解析器可能會對公開代管區域發出大量非預期的查詢。

舉例來說,假設 Cloud DNS 中有兩個子網域:example.comsubdomain.example.comsubdomain.example.com 的 NS 和 SOA 記錄不相符,這兩個區域都不含任何 AAAA 記錄。當部分第三方遞迴解析器查詢 subdomain.example.com 的 AAAA 記錄,並收到 NO DATA 回應時,如果解析器偵測到 subdomain.example.com 的委派無效,就會拒絕快取該區域中不存在的 AAAA 記錄,這會導致系統重試查詢。這些伺服器會依序查詢所有 Cloud DNS 名稱伺服器,以取得這項資訊。

註冊商

網域名稱註冊商是管理公開區域網際網路網域名稱保留的組織。註冊商必須經過一般頂層網域 (gTLD) 註冊資料庫或國家/地區代碼頂層網域 (ccTLD) 註冊資料庫的認證。「上層」名稱伺服器會透過這種方式,就 SOA 達成共識,並更新區域的 NS 記錄,將要求導向快取或授權名稱伺服器。

SOA 序號

SOA 序號是 DNS 區域的版本號碼。如要讓所有名稱伺服器與區域版本保持一致,必須使用相同的 SOA 序號。每當對區域的記錄集進行交易變更時,在 DNS 代管區域中建立的 SOA 記錄序號就會單調遞增。

不過,您可以將 SOA 記錄序號變更為任意號碼,包括 RFC 1912 中建議的 ISO 8601 格式日期。

DNSSEC

網域名稱系統安全性擴充功能 (DNSSEC) 可應對 DNS 資料的安全漏洞。DNSSEC 是一套 IETF 規格,可為 DNS 用戶端 (解析器) 提供 DNS 資料驗證、經過驗證的拒絕存在,以及資料完整性。簡而言之,DNSSEC 可讓軟體驗證 DNS 資料的來源,並確認資料在傳輸過程中未遭修改。

如要進一步瞭解 DNSSEC,請參閱 RFC 4033

如需 DNS 常用術語清單,請參閱 RFC 7719

後續步驟