1. DNS 簡介
想像一下這種情況:你想訪問你最喜歡的網站,例如 google.com。但你的瀏覽器其實不懂 "google" 這個詞,它需要 IP 地址(例如 142.250.74.206)。通過 DNS(Domain Name System)域名系統,網域名稱才會被轉換成 IP 地址。如果這項程序出錯了,瀏覽器會顯示:“無法找到伺服器”的訊息。作為未來的 Linux 網絡專家,懂得診斷和解決 DNS 相關問題是你必須學習的內容之一。
DNS 就像互聯網的電話簿。與其記住那些複雜的 IP 地址,我們可以使用容易記住的名稱,這些名稱會自動通過 DNS 系統轉換。以下是一些重要的概念:
DNS 紀錄:
- A 紀錄(Address Record):將域名與 IPv4 地址關聯。
- AAAA 紀錄:將域名與 IPv6 地址關聯。
- CNAME 紀錄(Canonical Name):指向域名的別名。
- MX 紀錄(Mail Exchange):指向處理郵件的伺服器。
DNS 伺服器:
- 普通用戶通常使用他們網絡服務供應商的 DNS 伺服器。
- 替代選擇:Google 公共 DNS 伺服器(8.8.8.8)、Cloudflare(1.1.1.1)。
名稱解析(Resolv):
- 當你在瀏覽器中輸入域名時,它會向 DNS 伺服器發送請求以獲取 IP 地址。
有了這些知識,你已經可以開始實踐使用 nslookup 與 dig 指令來探索 DNS 的魔法了。
2. 指令 nslookup
nslookup 是一個工具,可以幫助我們檢查 DNS 的運作。它在大多數 Linux 發行版以及其他操作系統中都可用。
基礎語法:
nslookup [選項] [域名或 IP 地址]
簡單範例:
我們來檢查 google.com 網站的 IP 地址:
nslookup google.com
輸出結果:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: 142.250.74.206
對於結果的備註:
Server: 處理請求的 DNS 伺服器。Non-authoritative answer: 意思是資訊並不是從根 DNS 伺服器直接獲得,而是通過其他伺服器的快取。
檢查 DNS 伺服器
如果你想使用特定的 DNS 伺服器,可以在執行指令時指定它:
nslookup google.com 8.8.8.8
這裡我們顯式指定了 Google 的 DNS 伺服器 (8.8.8.8)。
實作練習: 找尋學習網站的 IP
嘗試執行以下指令:
nslookup linux.org
查看結果 —— 這些是與網站伺服器關聯的 IP 地址。
3. 命令 dig
dig (Domain Information Groper) 是一個更進階的工具,用於處理 DNS。它提供有關 DNS 查詢和回應的詳細資訊。
主要語法:
dig [域名] [選項]
查詢範例:
dig google.com
輸出結果(主要部分):
;; Question section:
;google.com. IN A
;; ANSWER SECTION:
google.com. 300 IN A 142.250.74.206
;; Query time: 35 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 19 10:00:00 UTC 2023
;; MSG SIZE rcvd: 68
輸出段落:
ANSWER SECTION: 與域名相關的 IP 地址。Query time: 查詢處理時間。SERVER: 處理查詢的 DNS 伺服器。
4. 基本的 DNS 紀錄以及如何檢查它們
A 紀錄 (IPv4)
dig linux.org A
結果會顯示這個域名的 IPv4 地址。
AAAA 紀錄 (IPv6)
dig linux.org AAAA
輸出會包含 IPv6 地址。如果你正在處理現代網路,這個非常有用。
MX 紀錄 (郵件伺服器)
dig linux.org MX
用於檢查哪個伺服器處理該域名的郵件通信。
5. 深入練習:dig vs nslookup
現在你可以比較兩個指令的結果:
執行以下指令:
nslookup linux.org接著執行:
dig linux.org
注意,dig 提供更多的細節。例如,你可以看到查詢的執行時間,以及回應該查詢的伺服器資訊。
6. 檢查 Google 的 DNS 伺服器
任務:
使用
nslookup確認 Google 的公開 DNS 伺服器是否正常運行:nslookup github.com 8.8.8.8現在用
dig做同樣的事情:dig @8.8.8.8 github.com檢查該網站是否存在 IPv6 地址:
dig github.com AAAA
7. 常見錯誤和特點
處理 DNS 幾乎總是會遇到以下問題:
- DNS 伺服器的錯誤設定:如果你的 DNS 伺服器無法運作或設定錯誤,你可能無法收到回應。檢查伺服器的可用性,並在使用
nslookup或dig時手動指定其 IP。 DNS 快取:由於快取,有時 DNS 的更改可能需要一些時間。例如,如果最近更改了 DNS 記錄,你可能會看到過時的資訊。
DNS 伺服器無法連線:如果你看到類似
connection timed out; no servers could be reached的錯誤,這可能意味著伺服器無法訪問或被阻止。替代命令:
nslookup並非總是在 Linux 的最小安裝中提供,而dig通常是標準工具的一部分。
實際應用知識:為什麼要學這個?
- 診斷 DNS 問題。你能快速理解為什麼瀏覽器「看不到」網站。
- 伺服器配置。當你在雲端中配置伺服器時,你需要檢查 DNS 記錄是否正確設置。
- 網路安全。熟悉處理 DNS 記錄的技能可以幫助你分析釣魚網站。
- 面試中。了解
dig和nslookup命令是 Linux/DevOps 專家中標準的面試問題之一。
現在你擁有了深入理解和診斷 DNS 所需的一切工具。打開終端機,試試這些命令,讓任何「DNS 故障」都無法打敗你。
GO TO FULL VERSION