Linux與DNS的學習筆記

roc_guo發表於2022-08-19

最近由於對公司裡同事搭建的智慧 DNS 很感興趣,我開始學習它的搭建方法,首先我帶大家重新複習一下關於 DNS 的基礎知識。

大家可能總會在公眾號上看到 DNS 相關的文章,比如《為什麼 DNS 根伺服器只有 13 臺?給中國一臺真的很難嗎?》等等。它是網際網路構建的核心協議之一,在我們平時上網時起到重要作用。所以我們需要了解一些它的知識,作為網路行業從業者,就更應該對它更加深入的掌握了。在網路世界中如果想訪問一個網站,首先需要知道這個網站的公網 IP 地址,但由於我們對一長串沒有規律的數字不夠敏感,使得 IP 地址很難記住。最開始因為網路世界上的計算機數量少,只有幾百臺,所以只需要維護 HOSTS.TXT 檔案就可以了,此檔案記錄著 IP 和域名的對應關係,由單獨的主機 STI-NIC 負責分發。但由於網路的發展,此方法就不能持續支援了,原因如下:第一, HOSTS.TXT 中不允許出現檔案衝突,但主機的增多,很難避免不衝突;第二,分對此檔案的分發容易引起網路和處理器負載增高;第三,是此檔案的一致性無法保障。因此產生了 DNS 這項服務。

DNS INTERNET 的一項核心服務,用於實現域名與 IP 地址相互對映的一個分散式資料庫,其結構和 的檔案系統類似,都是樹狀結構,最頂端是根伺服器,用“ . ”來表示。第二層就是我們熟知的 .net .com 等頂級域。網上註冊的如 linuxprobe.com 等是二級域名,它們歸企業運維管理。域名的樹最深可達 127 層,每個節點文字標籤限制最長為 63 個字元。接下來講一下 DNS 解析流程。首先客戶端透過瀏覽器訪問一個域名,如 瀏覽器會向本地域名伺服器發起一個 DNS 解析請求,當本地域名伺服器收到請求後,會在本地尋找此解析,如沒找到,則會往根伺服器傳送請求。根伺服器全球共有 13 套,它不直接用於域名解析,但他能向你指向 .com 的位置。這樣做體現了層次化的思想,分擔了工作。最後再向 .com 傳送請求,由此域名伺服器解析出 IP 地址並告訴本地 DNS 伺服器,本地 DNS 在本地快取並返還給客戶端,客戶端與目標建立連線,至此 DNS 解析完成。

DNS 的資源記錄有如下資料:

先著重介紹一下 type 。其中有幾種常用的資源記錄型別:第一是 A 記錄,是指 IPv4 AAAA 是指 IPv6 。第二是 NS 記錄,是 Name Server 域名伺服器。第三是 CNAME 記錄。第四是 MX 記錄。第五是 PTR 記錄。 DNS 也有負載均衡的功能,首先是內部負載均衡。一個應用要訪問資料庫,應該配置這個資料庫的域名,因為如果遇到資料庫遷移等,換了 IP 就要將應用配置同時修改,但如果配置了域名,只要在 DNS 伺服器中將域名對映為新 IP 就可以了。然後在 DNS 中配置策略可以實現負載。其次 DNS 還能做全域性負載均衡。如為了應用的高可用性,部署在多個機房,每個機房有獨立的 IP ,當使用者訪問其域名時,這個 IP 可以輪詢訪問多個資料中心實現負載,如一個資料中心掛掉,只要在 DNS 伺服器中將其對應的 IP 刪除就可實現一定的高可用。

說了這麼久的 DNS ,但 DNS 如何搭建呢?業界普遍是在 Linux 伺服器中搭建 BIND 軟體。現階段大概有九成的 DNS 伺服器是使用 BIND 作為伺服器軟體的。 BIND 軟體現階段是由網際網路系統協會進行維護與開發。安裝 BIND 時安裝軟體名為 bind ,但是程式名和使用者名稱為 named 。搭建 BIND 需要一定的 Linux 基礎,如果需要學習 Linux 知識,可以搜尋 這本書來學習,這本書上也有專門介紹 DNS 的章節可以學習。它也有官方網站 ,上面也有很多 Linux 資訊和技術文章。 DNS 相關的命令中有個命令叫 dig ,它和 nslookup 類似,能在 Linux 中實現域名解析查詢功能。 dig 能夠執行 DNS 搜尋,並顯示從受請求的域名伺服器返回的答覆,請求的域名伺服器可以手工指定也可以用系統預設的。由於 dig 命令靈活性好、易用、輸出比較清楚,所以 DNS 伺服器管理員通常利用它來診斷 DNS 故障。

DNS 作為我們現有網路的重要組成部分,需要我們進行系統的瞭解與學習。當基礎知識理解透徹後可以進一步學習其他的相關知識,比如智慧 DNS HttpDNS CDN 等等。當然在學習這些知識之前, Linux 也是必不可少的。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2911123/,如需轉載,請註明出處,否則將追究法律責任。

相關文章