Skip to main content

[DNS] 5. 什麼是 DNS record? 網路世界的電話簿紀錄

前言

我們之前有提到,DNS 會幫我們把 Domain name 指向 IP address,其實 DNS 的本質就像電話簿,裡面有各項紀錄 (Record),如果我們有了名字(相當於 DNS 的 domain name),就可以知道對方的聯絡方式,例如電話(相當於 DNS 的 IP address),如下表:

名稱聯絡方式
真實世界必勝客28825252
網路世界trendmicro.com216.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 RecordIP 指向域名
TXT Record純文字,user 可以自定義屬性去自由使用



通常我們最需要瞭解的,就是 A Record、CNAME Record,但其他也還有一些還算常見的 Record 類型,以下我們就來一一介紹吧~


常見 Record 類型

A Record & AAAA Record - 將域名指向 IP address

TYPENAMEVALUETTL
Aexample.com12.34.56.787200

所謂的 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 - 域名指向域名

TYPENAMEVALUETTL
CNAMEbar.example.comfoo.example.com32600

CNAME Record,也就是 Conical Name Record,中文翻做「真實紀錄名稱」,Conical 有「規範」的意思

CNAME 的 NAME 的部分,就是我們輸入的 domain name,VALUE 就是我們要指向的另一個 domain name


通常 CNAME 的用途有以下 2 種:

  • subdomain 的指向
  • CDN domain 的指向

Subdomain 的指向

1. WWW (World Wide Web) 的指向

TYPENAMEVALUETTL
CNAMEwww.example.comexample.com32600


通常,我們的網址結構如下:

https://ithelp.ithome.com.tw/upload/images/20231004/20148944NfDQI2edH9.png


由上圖所示:

  • . 的部分是 Root domain
  • .com 的部分是 Top Level Domain
  • example 的部分是 2nd Level Domain
  • www. 的部分是 sub domain

所以,如果要讓 user 從 www.example.com 進入我們的 server,就需要另外設定 CNAME




2. 多功能的單一伺服器的設定

TYPENAMEVALUETTL
CNAMEftp.example.comexample.com32600


當我們只有一台 server,但會利用此 server 提供多項服務時,就可以在原 server domain 前加入描述功能的 sub domain,以方便做功能的區分,但實際上都是導向同一個 server




CDN 的指向

TYPENAMEVALUETTL
CNAMEhello.benson-chen.comd70ti4o1uqq3e.cloudfront.net32600

在 AWS Cloudfront,也就是 AWS 提供的 CDN 服務中,會先給一個預設的 domain name,如上述就是 d70ti4o1uqq3e.cloudfront.net。


這樣的話,我們就不用知道 CDN Server 的 IP address,可以將我們的 domain 指向到這個 domain name,就可以讓 user 優先從我們的 CDN 存取資源了



SOA Record - 負責人是誰

TYPEMNAMERNAMESERIALRETRYTTL
SOAns1.example.comadmin.example.com510025607200

SOA 為 start of authority 的縮寫,儲存相關 DNS zone 的負責人的資訊


DNS zone 是什麼?

一個 domain name 的部分區塊,由統一個管理者掌管,舉例來說: 我們現在有 example.com 的 domain name,為了區分不同的功能,我們在 example.com 又有三個子網域,分別是 shop.example.com, blog.example.com, support.example.com,如下圖:



DNS zones

shop.example.comblog.example.com 的 Server 數量較少,我們就交給同一個管理, support.example.com 的伺服器比較多,我們就交給另一個人處理


這時,shop.example.comblog.example.com 劃分為一個 DNS zone,support.example.com 就獨立為另一個 DNS zone,每個 DNS zone 都有特定的人負責管理



SOA record 由下面幾個部分組成:

DNS zones


欄位名稱說明
MNAME是 Master Name Server 的縮寫,這是該區域的主權威名稱伺服器,負責該區域資料的維護
RNAME代表 Responsible person 的縮寫,是負責管理這個 DNS 區域的管理員的電子郵件地址, 通常第一個 . 代表 @,例如範例中 admin.example.com 等同於 admin@example.com
SERIAL代表此 DNS zone 的版本
RETRY伺服器再次向無回應的主要名稱伺服器請求更新前應等待的時間長度


NS Record - 是哪台機器管理你家的 DNS 資訊



SRV Record - 更細節的 record



MX Record - 收信處

PTR Record - IP 指向名稱

TXT Record - 純文字

  • email domain white list,讓設定的 domain 不會被擋
  • DNS 資訊都是公開的,可利用 Google public DNS 查詢


參考資訊