Module 9 - 基礎網路與部署

DNS 基礎與實務

作者: Lynn 最後更新: 2026-09-23

DNS 基礎與實務

DNS 查詢流程圖

DNS(Domain Name System)是網際網路的電話簿。它把人類看得懂的網域名稱(如 google.com)翻譯成電腦看得懂的 IP 位址(如 142.250.185.14)。

為什麼需要 DNS?

電腦之間的通訊靠 IP 位址,但人類記不住一堆數字。DNS 就是中間的翻譯層。

你輸入: google.com
DNS 查詢: google.com → 142.250.185.14
瀏覽器連接: 142.250.185.14:443

就像打電話:你記的是聯絡人名字(網域),手機幫你查出電話號碼(IP),再撥出去。

DNS 查詢流程

當你在瀏覽器輸入 example.com,背後發生了什麼?

你輸入 example.com
       ↓
┌──────────────────┐
│ 1. 瀏覽器快取     │ → 之前查過嗎?有就直接用
└────────┬─────────┘
         ↓ 沒有
┌──────────────────┐
│ 2. OS 快取        │ → 作業系統也有一層快取
└────────┬─────────┘
         ↓ 沒有
┌──────────────────┐
│ 3. 路由器 / ISP   │ → 你的電信公司 DNS Server
│    DNS Server     │
└────────┬─────────┘
         ↓ 沒有
┌──────────────────────────────────────────┐
│ 4. 遞迴查詢(一層層問到底)               │
│                                          │
│  Root Server: 「.cc 去問 TLD Server」     │
│       ↓                                  │
│  TLD Server: 「rainbow-monkey.cc 去問     │
│              Authoritative NS」          │
│       ↓                                  │
│  Authoritative NS: 「= 203.0.113.10」    │
└────────┬─────────────────────────────────┘
         ↓
  結果回傳,每一層都快取起來(TTL 時間內不用再問)

常見 DNS 記錄類型

類型 用途 範例
A 將網域對應到 IPv4 位址 example.com → 93.184.216.34
AAAA 將網域對應到 IPv6 位址 example.com → 2606:2800:220:1:...
CNAME 別名,指向另一個網域 www.example.com → example.com
MX 郵件伺服器 example.com → mail.example.com
TXT 文字記錄,常用於驗證 SPF、DKIM、網域驗證
NS 指定負責該網域的 DNS Server example.com → ns1.cloudflare.com

買一個網域,擁有自己的網站

你現在看到的 1xam.rainbow-monkey.cc 就是透過 DNS 運作的。流程其實不難:

1. 買網域

去網域註冊商(Namecheap、Cloudflare Registrar、GoDaddy)買一個你喜歡的名字。例如我們公司買了 rainbow-monkey.cc

2. 設定 DNS 指向你的伺服器

買到網域後,在 DNS 管理介面設定 A 記錄,指向你的伺服器 IP:

rainbow-monkey.cc    A    203.0.113.10

這樣別人輸入 rainbow-monkey.cc 就會連到你的伺服器。

3. 用子網域切分不同服務

一個網域可以建立多個子網域,每個指向不同的服務:

rainbow-monkey.cc           → 公司官網
1xam.rainbow-monkey.cc      → 這個學習平台
api.rainbow-monkey.cc       → API 服務
mail.rainbow-monkey.cc      → 郵件伺服器
staging.rainbow-monkey.cc   → 測試環境

每個子網域都是一筆獨立的 DNS 記錄。可以指向不同的 IP,甚至不同的雲端服務:

1xam.rainbow-monkey.cc      CNAME    1xam.pages.dev
api.rainbow-monkey.cc       A        203.0.113.20

子網域不用另外花錢買,有主網域就能免費建立。

4. 加上 HTTPS

用 Cloudflare 或 Let's Encrypt(Certbot)免費取得 SSL 憑證。使用者連到你的網站時就會看到鎖頭圖示。

實務操作

查詢 DNS 記錄

# 查詢 A 記錄
dig example.com A

# 查詢所有記錄
dig example.com ANY

# 使用特定 DNS Server 查詢
dig @8.8.8.8 example.com

# 追蹤完整查詢過程
dig +trace example.com

# Windows 用 nslookup
nslookup example.com

設定自己的網域

購買網域後,通常需要設定:

1. 設定 NS 記錄 → 指向你的 DNS 提供商(如 Cloudflare)
2. 設定 A 記錄 → 指向你的伺服器 IP
3. 設定 CNAME → www 指向主網域
4. 設定 MX → 郵件伺服器位址
5. 設定 TXT → SPF/DKIM 防止郵件被當成垃圾郵件

TTL(Time To Live)

TTL 決定 DNS 記錄被快取多久。

  • TTL = 300(5 分鐘):變更後 5 分鐘內全球生效,但查詢量大
  • TTL = 86400(24 小時):變更後最多等 24 小時才全球生效,但快取效率高

建議:平時用長 TTL(3600 秒),準備換 IP 前先改短(300 秒),等舊快取過期後再換 IP。

CDN 與 DNS

CDN(Content Delivery Network)利用 DNS 做智慧路由:

使用者在台北 → DNS 回傳台灣節點 IP → 從最近的伺服器取得內容
使用者在紐約 → DNS 回傳美國節點 IP → 從最近的伺服器取得內容

Cloudflare、AWS CloudFront 等 CDN 都靠 DNS 的 GeoDNS 或 Anycast 技術,讓使用者連到最近的節點。

作業

作業 1:查詢 DNS 記錄

dignslookup 查詢以下網域的 DNS 記錄,記錄結果:

dig 1xam.rainbow-monkey.cc A
dig google.com MX
dig github.com CNAME
dig cloudflare.com NS

回答:

  1. 1xam.rainbow-monkey.cc 指向哪裡?是 A 還是 CNAME?
  2. Google 的郵件伺服器是什麼?
  3. Cloudflare 用了哪些 NS?

作業 2:規劃一個網域

假設你買了 你的名字.dev,規劃 DNS 設定:

  1. 主網域放個人網站
  2. blog.你的名字.dev 放部落格
  3. api.你的名字.dev 放後端 API
  4. 設定郵件(MX 記錄)

畫出 DNS 記錄表,標明每筆記錄的類型、值和 TTL。

知識檢測

1 題 / 共 3

當你輸入 google.com 後,瀏覽器第一步會做什麼?