[DNS] 5. 什麼是 DNS record? 網路世界的電話簿紀錄
前言
我們之前有提到,DNS 會幫我們把 Domain name 指向 IP address,其實 DNS 的本質就像電話簿,裡面有各項紀錄 (Record),如果我們有了名字(相當於 DNS 的 domain name),就可以知道對方的聯絡方式,例如電話(相當於 DNS 的 IP address),如下表:
名稱 | 聯絡方式 | |
---|---|---|
真實世界 | 必勝客 | 28825252 |
網路世界 | trendmicro.com | 216.104.20.24 |
DNS record 就會幫我們紀錄每個網域名稱對應到的聯絡資訊,但有時候不一定是 IP address,有可能是另一個網域 (CNAME),還有其他不同類型的紀錄,常見的如下:
類型 | Record type | 功能 |
---|---|---|
常見類型 | A Record | 域名指向 IPv4 address |
AAAA Record | 域名指向 IPv6 address | |
SOA Record | 負責人是誰 | |
NS Record | 是哪台機器管理你家的 DNS 資訊 | |
SRV Record | 更細節的 record | |
Mail 相關 | MX Record | 收信處 |
PTR Record | IP 指向域名 | |
TXT Record | 純文字,user 可以自定義屬性去自由使用 |
通常我們最需要瞭解的,就是 A Record、CNAME Record,但其他也還有一些還算常見的 Record 類型,以下我們就來一一介紹吧~
常見 Record 類型
A Record
& AAAA Record
- 將域名指向 IP address
TYPE | NAME | VALUE | TTL |
---|---|---|---|
A | example.com | 12.34.56.78 | 7200 |
所謂的 A Record,就是將 domain 指向 IP address 的紀錄,A Record 會有 4 個描述欄位,基本上大部分的 DNS Record 都採用上述 4 個欄位來描述該 Record:
- TYPE: Record 類型
- NAME: 輸入的 domain name
- VALUE: domain name 指向的 IPv4 address
- TTL: Time To Live,也就是此 DNS record cache 的存活時間,以秒為單位
那上述提到 A Record 只能指向 IPv4 address,那 IPv6 呢?
所以 DNS 也有一個 Record 類型是來描述 IPv6 的 address,也就是 AAAA Record (quad A Record),就可以幫助我們解決想要指向 IPv6 address 的問題
CNAME Record
- 域名指向域名
TYPE | NAME | VALUE | TTL |
---|---|---|---|
CNAME | bar.example.com | foo.example.com | 32600 |
CNAME Record
,也就是 Conical Name Record,中文翻做「真實紀錄名稱」,Conical 有「規範」的意思
CNAME 的 NAME 的部分,就是我們輸入的 domain name,VALUE 就是我們要指向的另一個 domain name
通常 CNAME 的用途有以下 2 種:
- subdomain 的指向
- CDN domain 的指向
Subdomain 的指向
1. WWW (World Wide Web) 的指向
TYPE | NAME | VALUE | TTL |
---|---|---|---|
CNAME | www.example.com | example.com | 32600 |
通常,我們的網址結構如下:
由上圖所示:
.
的部分是 Root domain.com
的部分是 Top Level Domainexample
的部分是 2nd Level Domainwww.
的部分是 sub domain
所以,如果要讓 user 從 www.example.com 進入我們的 server,就需要另外設定 CNAME
2. 多功能的單一伺服器的設定
TYPE | NAME | VALUE | TTL |
---|---|---|---|
CNAME | ftp.example.com | example.com | 32600 |
當我們只有一台 server,但會利用此 server 提供多項服務時,就可以在原 server domain 前加入描述功能的 sub domain,以方便做功能的區分,但實際上都是導向同一個 server
CDN 的指向
TYPE | NAME | VALUE | TTL |
---|---|---|---|
CNAME | hello.benson-chen.com | d70ti4o1uqq3e.cloudfront.net | 32600 |
在 AWS Cloudfront,也就是 AWS 提供的 CDN 服務中,會先給一個預設的 domain name,如上述就是 d70ti4o1uqq3e.cloudfront.net。
這樣的話,我們就不用知道 CDN Server 的 IP address,可以將我們的 domain 指向到這個 domain name,就可以讓 user 優先從我們的 CDN 存取資源了
SOA Record
- 負責人是誰
TYPE | MNAME | RNAME | SERIAL | RETRY | TTL |
---|---|---|---|---|---|
SOA | ns1.example.com | admin.example.com | 510025 | 60 | 7200 |
SOA 為 start of authority 的縮寫,儲存相關 DNS zone 的負責人的資訊
一個 domain name 的部分區塊,由統一個管理者掌管,舉例來說:
我們現在有 example.com 的 domain name,為了區分不同的功能,我們在 example.com 又有三個子網域,分別是
shop.example.com
, blog.example.com
, support.example.com
,如下圖:
但 shop.example.com
和 blog.example.com
的 Server 數量較少,我們就交給同一個管理,
support.example.com
的伺服器比較多,我們就交給另一個人處理
這時,shop.example.com
和 blog.example.com
劃分為一個 DNS zone,support.example.com
就獨立為另一個 DNS zone,每個 DNS zone 都有特定的人負責管理
SOA record 由下面幾個部分組成:
欄位名稱 | 說明 |
---|---|
MNAME | 是 Master Name Server 的縮寫,這是該區域的主權威名稱伺服器,負責該區域資料的維護 |
RNAME | 代表 Responsible person 的縮寫,是負責管理這個 DNS 區域的管理員的電子郵件地址, 通常第一個 . 代表 @ ,例如範例中 admin.example.com 等同於 admin@example.com |
SERIAL | 代表此 DNS zone 的版本 |
RETRY | 伺服器再次向無回應的主要名稱伺服器請求更新前應等待的時間長度 |
NS Record
- 是哪台機器管理你家的 DNS 資訊
SRV Record
- 更細節的 record
Mail related
MX Record
- 收信處
PTR Record
- IP 指向名稱
TXT Record
- 純文字
- email domain white list,讓設定的 domain 不會被擋
- DNS 資訊都是公開的,可利用 Google public DNS 查詢