CodeGym /課程 /Docker SELF /檢查 DNS: 指令 `nslookup`,`dig`

檢查 DNS: 指令 `nslookup`,`dig`

Docker SELF
等級 4 , 課堂 2
開放

1. DNS 簡介

想像一下這種情況:你想訪問你最喜歡的網站,例如 google.com。但你的瀏覽器其實不懂 "google" 這個詞,它需要 IP 地址(例如 142.250.74.206)。通過 DNS(Domain Name System)域名系統,網域名稱才會被轉換成 IP 地址。如果這項程序出錯了,瀏覽器會顯示:“無法找到伺服器”的訊息。作為未來的 Linux 網絡專家,懂得診斷和解決 DNS 相關問題是你必須學習的內容之一。

DNS 就像互聯網的電話簿。與其記住那些複雜的 IP 地址,我們可以使用容易記住的名稱,這些名稱會自動通過 DNS 系統轉換。以下是一些重要的概念:

  1. DNS 紀錄

    • A 紀錄(Address Record):將域名與 IPv4 地址關聯。
    • AAAA 紀錄:將域名與 IPv6 地址關聯。
    • CNAME 紀錄(Canonical Name):指向域名的別名。
    • MX 紀錄(Mail Exchange):指向處理郵件的伺服器。
  2. DNS 伺服器

    • 普通用戶通常使用他們網絡服務供應商的 DNS 伺服器。
    • 替代選擇:Google 公共 DNS 伺服器(8.8.8.8)、Cloudflare(1.1.1.1)。
  3. 名稱解析(Resolv)

    • 當你在瀏覽器中輸入域名時,它會向 DNS 伺服器發送請求以獲取 IP 地址。

有了這些知識,你已經可以開始實踐使用 nslookupdig 指令來探索 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

現在你可以比較兩個指令的結果:

  1. 執行以下指令:

        nslookup linux.org
    
  2. 接著執行:

        dig linux.org
    

注意,dig 提供更多的細節。例如,你可以看到查詢的執行時間,以及回應該查詢的伺服器資訊。


6. 檢查 Google 的 DNS 伺服器

任務:

  1. 使用 nslookup 確認 Google 的公開 DNS 伺服器是否正常運行:

    nslookup github.com 8.8.8.8
    
  2. 現在用 dig 做同樣的事情:

    dig @8.8.8.8 github.com
    
  3. 檢查該網站是否存在 IPv6 地址:

    dig github.com AAAA
    

7. 常見錯誤和特點

處理 DNS 幾乎總是會遇到以下問題:

  1. DNS 伺服器的錯誤設定:如果你的 DNS 伺服器無法運作或設定錯誤,你可能無法收到回應。檢查伺服器的可用性,並在使用 nslookupdig 時手動指定其 IP。
  2. DNS 快取:由於快取,有時 DNS 的更改可能需要一些時間。例如,如果最近更改了 DNS 記錄,你可能會看到過時的資訊。

  3. DNS 伺服器無法連線:如果你看到類似 connection timed out; no servers could be reached 的錯誤,這可能意味著伺服器無法訪問或被阻止。

  4. 替代命令nslookup 並非總是在 Linux 的最小安裝中提供,而 dig 通常是標準工具的一部分。

實際應用知識:為什麼要學這個?

  • 診斷 DNS 問題。你能快速理解為什麼瀏覽器「看不到」網站。
  • 伺服器配置。當你在雲端中配置伺服器時,你需要檢查 DNS 記錄是否正確設置。
  • 網路安全。熟悉處理 DNS 記錄的技能可以幫助你分析釣魚網站。
  • 面試中。了解 dignslookup 命令是 Linux/DevOps 專家中標準的面試問題之一。

現在你擁有了深入理解和診斷 DNS 所需的一切工具。打開終端機,試試這些命令,讓任何「DNS 故障」都無法打敗你。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION