寫給 Web 工程師的 DNS 知識入門

  • 2019 年 11 月 8 日
  • 筆記

你是不是對 DNS 記錄的一些概念不太了解,比如 A 記錄、CNAME、AlIAS 等。。

下面讓我們一起來學習一下~

1 簡介

為了訪問 www.savokiss.com 這個域名,你的電腦需要知道伺服器在網路中的位置。

這意味著:你的電腦必須知道 IP 地址才能跟伺服器進行通訊。

而域名系統 (Domain Name System) 正是為解決這個問題而生。

2 記錄欄位

當你註冊一個域名後,就可以設置多種 DNS 記錄。每種記錄都有一個 Type,一個 Host 和一個 Value

  • Type 是提前定義好的
  • Host 可以填根域名 (@) 或者子域名(www)
  • Value 就是一個 IP 地址或者域名

3 A 記錄

A 記錄將一個子域名映射到一個 IPv4 地址。

它常被用於根域名映射,這樣瀏覽器就知道 savokiss.com 這個域名到底指向哪個 IP 地址。

同理,AAAA 記錄則是用於 IPv6 的。

4 CNAME 記錄

CNAME 則是映射一個子域名到另外一個域名。

它也可以指向相同站點的另外一個域名(如將 www 指向根域名)

或者另外一個網站,如 heroku (一個國外的雲應用平台)

5 CNAME 的問題

CNAME 是有一些缺點的。

一旦你為一個子域名定義了 CNAME 指向,就不能為這個子域名再定義其他類型的指向了。

正由於此,你不能把 CNAME 定義在 根域名上。

6 ALIAS 記錄

為了解決上面的問題,可以使用 ALIAS

ALIAS 就像是 CNAME ,但卻不是一個標準的 DNS 類型。

你可以使用 ALIAS 將根域名 savokiss.com 指向你的 app 伺服器(如 savokiss.herokudns.com )同時也可以對這個域名使用其他記錄解析。

7 TXT 記錄

TXT 可以讓其他主機讀取額外的資訊,就像留下了一條秘密消息那樣。

TXT 一般用來證明某個域名的所有權,因為只有域名的所有者才可以修改 DNS 記錄。

8 MX 記錄

MX 記錄(即 Mail eXchange),是用來配置郵箱服務的。

MX 記錄是唯一的,你可以設置多個伺服器,並且為每個伺服器配置優先順序。

9 TTL

還有許多其他的記錄類型,但是上面的幾種是最常用的。

對於每種記錄類型,你都可以指定一個 TTL(即 Time To Live 存活時間)

這個時間告訴 DNS 伺服器需要快取這些記錄值多久。

10 DNS 快取

TTL 基本上代表了從你修改一條記錄開始到終端用戶的生效時間(讓子彈飛一會~)。

DNS 伺服器,ISP 供應商和你的電腦都會快取 DNS 記錄,在 TTL 時間刷新前,快取的都是上一次設置的記錄值。

速查表

最後送上一張 DNS 速查表和 dnspod 上的記錄類型說明,希望本文對你理解 DNS 有幫助~

參考文章

DNS Record Crash Course for Web Developers