我們公司期待部署和維護自己的公共 DNS。我概述了部署活動,但有點困惑在哪裡註冊我的公司網域名稱以及如何繪製我的公共 DNS。請任何人解釋一下交通流量。
答案1
我曾經在網域註冊機構工作,並且是 IETF DNS 工作小組的成員,所以我將為您提供入門知識。
網域名稱系統是依層次結構設計的。當您尋找網域的資料時,通常會先從最頂端開始,然後再向下尋找。
最頂部是根。根名稱伺服器是分佈在世界各地的許多伺服器,任何問題都會從這些伺服器開始 - 除非資料被緩存,我們稍後會討論這個問題。作為普通用戶,您不會在網域中看到它們,但它們確實存在。
接下來是頂級域名。它們分為通用頂級域名(例如 .com、.net 或 .movie)和國家代碼頂級域名(例如美國的 .us、挪威的 .no 或中國的 .cn)。
之後是二級域。這些是您通常作為最終客戶購買的產品。例如,如果您想擁有 example.com,您可以前往註冊商處,檢查 example.com 是否可用,如果可用,則將其新增至購物車並點擊結帳。然後,您可以讓註冊商或其他託管公司為您執行 DNS,或者您可以設定自己的 DNS 伺服器並讓註冊商將網域委託給您。委派意味著他們將註冊數據,表明您的 DNS 伺服器負責該網域。
擁有網域後,您還可以設定第三級網域或子網域。這為 DNS 伺服器新增了另一個層次結構。您也可以設定主機名,對於一般使用者來說,主機名稱看起來完全相同。
那麼,讓我們來看看平均 DNS 查找。
假設您想去www.example.com。您的 DNS 伺服器要做的第一件事就是前往根伺服器尋找誰負責 .com。您的 DNS 伺服器已經內建了根伺服器的位址,因此通常無需查找它們。相反,我們會找出 .com 的資訊。
我將在這裡使用程式“dig”,但我會欣賞輸出的可讀性。
首先,我們請求 com 的名稱伺服器 (ns)。我們直接從伺服器 a.root-servers.net 詢問此信息,該伺服器是 DNS 系統的根伺服器之一。
$ dig ns com. @a.root-servers.net.
輸出如下(再次,縮寫)
;; QUESTION SECTION:
;com. IN NS
;; AUTHORITY SECTION:
com. 172800 IN NS a.gtld-servers.net.
;; ADDITIONAL SECTION:
a.gtld-servers.net. 172800 IN A 192.5.6.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
問題部分向我們展示了我們所要求的內容,在本例中是 com.
權威部分向我們表明根伺服器不負責 .com,但它告訴我們誰負責。在這種情況下,它告訴我們 a.gtld-servers.net 是負責的。
它還為我們提供了一個附加部分,其中包含 a.gtld-servers.net 的位址記錄(A 表示 IPv4,AAAA 表示 IPv6)。這個地址被稱為膠水,不被認為是權威答案,但它是一個提示,告訴我們這是系統中列出的地址。當您需要伺服器的 IP 位址(否則只能透過 DNS 查找才能到達)時,就需要黏合記錄,而您需要名稱伺服器的 IP 位址。這一切都有點遞歸。
不管怎樣,讓我們繼續尋找 example.com 的名稱伺服器。現在,這與現實世界的 DNS 告訴您的內容略有不同,但這是一個範例,因此我們將使用範例資料。
$ dig ns example.com. @192.5.6.30
我們正在詢問上面獲得的 a.gtld-servers.net 的 IP 位址。他們對 .com 網域具有權威性,因此應該能夠告訴我們 example.com 有哪些網域伺服器。
;; QUESTION SECTION:
;example.com. IN NS
;; AUTHORITY SECTION:
example.com. 172800 IN NS ns2.example.com.
example.com. 172800 IN NS ns1.example.com.
;; ADDITIONAL SECTION:
ns2.example.com. 172800 IN A 192.0.2.4
ns1.example.com. 172800 IN A 192.0.2.5
現在,這就是為什麼膠水很重要。由於 example.com 的網域伺服器駐留在 example.com 下,因此它們由 example.com 下的網域伺服器管理。本質上,您被告知要打電話給鮑勃以獲取鮑勃的電話號碼,因為只有鮑勃知道鮑勃的電話號碼是什麼。膠水是一個提示。 Bob 可能已經更改了號碼,但這就是 .com 的名稱伺服器所知道的。
現在我們知道了 example.com 名稱伺服器的位址,我們終於可以詢問主機名稱了。
$ dig a www.example.com. @192.0.2.4
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 300 IN A 192.0.2.10
我們終於得到了地址記錄www.example.com主機名。請注意這裡沒有附加部分,因為此查詢不需要這樣的部分。我們提出一個簡單的問題,並從該網域的權威伺服器獲得準確的答案。
現在,一直進行所有這些查找有點浪費時間和資源,因此通常所做的就是讓本機 DNS 伺服器充當快取。您是否注意到所有 DNS 記錄的外觀? DNS 記錄中的欄位如下:網域、生存時間 (TTL)、類別(在我們的範例中,IN 表示網際網路)、類型(A 表示位址、NS 表示名稱伺服器等)和資料(例如,某個 IP 位址一個記錄)。
DNS 記錄中的 TTL 是允許快取儲存資料的時間長度。預計不會更改或很少更改的記錄具有較長的 TTL。例如,我們查看的前幾筆記錄中的 172800 秒 TTL。可能會在短時間內更新的記錄的 TTL 較低,例如 300 秒的 TTLwww.example.com。
每當我們進行 DNS 查找時,如果我們已經查找的資料已被緩存,那麼我們就不需要一直到根伺服器。我們通常會一直造訪 .com 網域,因此資料幾乎總是快取在我們的本機 DNS 伺服器中。然而,這確實意味著每當您更改 DNS 資料時,傳播變更可能需要一些時間。實際上,這意味著您需要提前更改 TTL,或告訴您的老闆任何更改都需要一段時間才能完全生效。
要註冊您的域名,您通常需要前往您想要註冊的頂級域名的註冊商處。大多數託管公司和域名註冊商都能夠在許多不同的頂級域名下註冊域名,因此您幾乎可以選擇其中任何一個。
註冊商是註冊管理機構的經銷商。註冊管理機構是實際經營相關頂級網域的公司或組織,但作為最終用戶,您需要處理的只是註冊商,甚至只是您的主機公司。
大多數註冊商都有 Web 介面來處理委派和 DNS 記錄的大量技術細節,但即便如此,即使您依賴註冊商的 Web 介面,了解 DNS 的基礎知識也會讓您的生活變得更加輕鬆。
如果您想了解有關DNS 的更多信息,並且您從事IT 工作,那麼您確實應該了解DNS 的工作原理,因為它是許多潛在問題的根源,我會推薦O'Reilly 的《DNS 和Bind》一書。它非常全面,將使您成為 DNS 專家。如果您想運行自己的 DNS 伺服器,我強烈建議您閱讀本書。它確實涵蓋了 Bind DNS 伺服器軟體,但同樣的原則也適用於任何 DNS 伺服器軟體。