DNS 紀錄(record)有什麼差異?
在前面的案例中,我們在觀察 Bluehost 的 DNS 紀錄時,有看到許多不同的 DNS 紀錄。
常見的 DNS 紀錄有 A、AAAA、CNAME、MX、NS、TXT…等,他們分別各司其職,有著不同的用途。
A 紀錄(Record)
A 紀錄的用途主要為填寫主機的 IP 位址,例如上圖中的 mail.asperlab.club 對應到 50.87.193.142 這台主機,而這台主機是由 Bluehost 所管理的主機,如果想要對應到外面其他台的主機也可以,只是要做好相對應的設定。
只是大家心裡有沒有一個疑問
有這麼多個網域名稱的 A 紀錄都指向同一台主機,那主機要怎麼分別知道他的網站是哪一個呢?更不用說,同一個 IP 位址同一台主機,上面有眾多租戶,要如何分辨呢?
這個就不用太過於擔心了,因為有網頁伺服器在管理這些對應,前面的 test 與 blog 就是最佳的範例,他透過 cPanel 後台來管理對應網頁伺服器上的設定。
此外 A 紀錄所記錄的 IP 位址是 IPv4 為主。
AAAA 紀錄(Record)
與 A 紀錄一樣,只是他是使用 IPv6 的 IP 為主。
因為 IPv4 數量日益短缺,因此有些網站主機開始使用 IPv6 的 IP 提供服務,相對 DNS 設定也得跟著修改。
CNAME 紀錄(Record)
CNAME 紀錄有點像是取小名或者綽號的概念。
好比說,你叫做王聰明,在學校裡的綽號叫做小明,同學叫小明或者王聰明,你都會回應。
深入一點從技術面的用法來說,他可以讓一個 A 紀錄使用其他名稱,假設有一個叫做 blog.asperlab.club 的網站,可以加上 CNAME 紀錄如:web.asperlab.club 讓他也會連到 blog.asperlab.club 這邊,不管打 web 或者 blog 都可以連到同一個網站上。
有人或許會問,那怎不乾脆用 A 紀錄就好了?
問得很好,如果今天有好幾筆 A 紀錄,都指向同一台主機,且他們都是連到同一個網站,萬一要修改 IP 位址怎辦?
blog.asperlab.club A 1.2.3.4 web.asperlab.club A 1.2.3.4 page.asperlab.club A 1.2.3.4 site.asperlab.club A 1.2.3.4
一筆一筆改嗎?可以,但好麻煩,也不方便,增加打錯字風險。
如果今天使用了 CNAME 紀錄呢?
web.asperlab.club CNAME blog.asperlab.club page.asperlab.club CNAME blog.asperlab.club site.asperlab.club CNAME blog.asperlab.club blog.asperlab.club A 1.2.3.4
如此一來,我只要改 A 紀錄的 IP 位址就能達成目的了。
MX 紀錄(Record)
MX 紀錄主要用於傳輸電子郵件使用,為什麼要獨立出來呢?原因在於他有優先順序與備援機制。
這樣說好像很抽象,先來看看一封信寄出的流程好了。
使用者要寄一封信給 asper@asperlab.club 他首先要問 DNS 伺服器,信件要怎到?接著 DNS 伺服器則會回答主機的網址,如: mail01.asperlab.club。
至於 mail.asperlab.club 怎去,就要靠 A 紀錄來處理了,這邊的主角是怎麼讓 DNS 伺服器怎知道是 mail01.asperlab.club。
不過在繼續說明之前,先說一下什麼叫做 DNS 伺服器。
DNS 伺服器
比較常見的 DNS 伺服器有 Google 所提供的 8.8.8.8 與 8.8.4.4 這兩台主機。
它的用途就像查號台一樣,當你問 asper.tw 要怎去,IP 地址是多少的時候,他會先看一下以前有沒有人問過,如果有人問過,而且是新鮮的答案,就會直接回答你,萬一沒人問過,就會去從前面所說的根(root)網域名稱伺服器,一層一層往下問到為止。
步驟如下:
- A. 請問 asper.tw 要怎走
- B. 不知道耶,我幫你問一下,問到之後跟你說
- C. 從 DNS 伺服器取得 A 紀錄之後,連到網站伺服器瀏覽網頁
如果沒有 DNS 伺服器會怎樣?
當大家都從根(root)問到尾時,要等很久,就像電話總機要不斷轉接一樣,再來每個轉接點都會很忙碌,所以 DNS 伺服器主要功能,就是提供一個鄰家查號台的服務,把常用的網域名稱給記起來,讓你一問就有,省去中間的轉接時間。
所以網域名稱伺服器,在使用者第一次問 DNS 伺服器時,會回答如:asper.tw 的 A 紀錄是 1.2.3.4 的 IP 位址,接著這筆紀錄就會被記在 DNS 伺服器上,等到有效期過了以後,就會重新詢問一次管理 asper.tw 的網域名稱伺服器。
過期時間要在哪邊看呢?
可以看下圖以 A 紀錄為例,右邊有個 TTL 的欄位,就是他的過期時間,如 mail 這個紀錄 4 小時才會過期,表示超過 4 小時有使用者要再連的時候,就得重新來問網域名稱伺服器,mail 這筆 A 紀錄的 IP 地址是多少。
接著我們把鏡頭轉回 MX 紀錄。
一般來說像郵件伺服器通常不會只有一台,畢竟現代工商社會一天沒有使用電子郵件都不行,通常會有至少兩台以上的郵件伺服器服務。
asperlab.club 的網域名稱中,要記錄的 MX 如下:
asperlab.club MX 10 mail01.asperlab.club asperlab.club MX 20 mail02.asperlab.club
這是什麼意思呢?
就是當一封信寄給 asperlab.club 這個網域的時候,會先給 mail01.asperlab.club 這台主機,萬一 mail01 連不上,就會把信寄到 mail02.asperlab.club 主機上。
當然,也不能忘了加入 A 紀錄示意如下:
mail01.asperlab.club A 1.2.3.4 mail02.asperlab.club A 2.3.4.5
這樣是不是就能理解了呢?
TXT 紀錄
TXT 紀錄最簡單,他有點類似筆記的性質。
最常出現的場景在驗證你是不是這個網域的擁有者,像註冊網站要收驗證信一樣,只有擁有這個網域的人可以改紀錄,最不會造成影響的莫過於 TXT 紀錄了。
如這篇使用 G Suite 的文件就會需要網域擁有者以 TXT 紀錄驗證。
NS 紀錄
NS 紀錄非常重要,他是所有紀錄的根源。
怎麼說呢?因為 NS 紀錄記載了你的網域名稱伺服器位置,如果沒有這筆紀錄,人家就不知道網域名稱伺服器在哪裡,就像你要去住飯店,可是沒有櫃檯可以查你的房間 一樣尷尬。