與 CNAME 不同,其全名為真實名稱紀錄(Canonical Name),可將一個特定子域名設定為另一個域名之別名,而 NS 紀錄,A 紀錄和 MX 記錄則都是 DNS 記錄類型,您可以擁有一個以上的定值。
MX 紀錄是這三種紀錄類型中獨一無二的紀錄類型,因為其擁有優先權。
所以,為什麼會有優先權呢?優先權重要嗎?
為什麼 MX 紀錄擁有優先權
一個 MX 紀錄(又稱 “Mail eXchanger“ record),對於初學者來說,一般用於指向您的域名郵件伺服器。除了像是名稱、生存時間 ( TTL,time to live )、種類與設定值等標準 DNS 記錄欄位外, MX 紀錄還額外設有一個「優先權」欄位。在優先權欄位中的數值越小,其優先順序越高。
一個典型的 MX 紀錄設置會有 2 個以上的 MX 紀錄,並具有不同的優先順序。舉例來說,以下為 Gandi 的郵件服務所需的 MX 紀錄:
@ 1800 IN MX 50 fb.mail.gandi.net.
@ 1800 IN MX 10 spool.mail.gandi.net.
郵件伺服器 fb.mail.gandi.net 的優先數值為 ’50’,而伺服器 spool.mail.gandi.net 的優先數值則為 ‘10‘。
優先權指的是這些郵件伺服器在嘗試透過郵件伺服器傳送郵件時的順序。當一個郵件伺服器嘗試發送郵件至 Gandi 的郵件服務時會由 spool.mail.gandi.net 開始,因其優先權數值為 ‘10 ‘。如果寄送失敗,則會接著嘗試寄送至 fb.mail.gandi.net (因其優先權數值為 ‘50 ‘)。
因此,若 spool.mail.gandi.net 因為某種因素而無法使用,可能是伺服器過於忙碌或是離線,郵件就會被轉而寄送至 fb.mail.gandi.net 。
為什麼 A 紀錄與 NS 紀錄沒有優先權?
其它的 DNS 紀錄像是 A 紀錄與 NS 紀錄也有相似的作用。Gandi 的 LiveDNS 服務使用了以下 NS 紀錄:
@ 172800 IN NS ns-89-c.gandi.net.
@ 172800 IN NS ns-32-b.gandi.net.
@ 172800 IN NS ns-202-a.gandi.net.
如果 ns-89-c.gandi.net 無法使用,DNS 解析器就會轉向 ns-32-b.gandi.net 或 ns-202-a.gandi.net 查詢其所需要的資訊。
同樣地,您可以將兩個 A 紀錄指向代管相同內容的不同網站伺服器,如果第一個主機故障或無法正常運作,網站訪問者就能嘗試連接至第二個伺服器,而反之亦然。
而 A 紀錄與 NS 紀錄並沒有優先權,因為這兩種紀錄不需要這種優先權的機制便能運作。
為什麼 MX 紀錄需要優先權呢?
老實說,在現代的基礎設施下,有可能是不需要的。然而,擁有多個 MX 記錄其實比單純提供備份伺服器更複雜。
一般來說, MX 紀錄所指向的最高優先順序的郵件伺服器為負責傳入電子郵件的伺服器。備份機制並不會傳送郵件,而是等待具有最高優先權的郵件伺服器再次正常運作。換句話說,更重要的是哪一個郵件伺服器為首要順序。哪一個網站伺服器或名稱伺服器接收到特定請求反而並不重要。
網路上延遲的電子郵件可能需要數天時間才會傳送出去,而有時候,郵件伺服器可能會一次斷線數小時,但並不會停止寄出數千封重要的企業郵件。
設置多個同種類的紀錄更有趣
實際上,A 記錄缺乏優先權反而使其能夠用於稱為循環 DNS 的技術上。循環 DNS 是一種負載均衡技術,您可以使用多個冗餘網站伺服器並將 A 記錄添加並指向每個伺服器。理論上,這個列表在每次查詢時都會以隨機的順序出現,從而生成代管網站的網站伺服器 IP 位址的隨機列表。
然而緩存卻會影響到這項技術,因為當有人使用同一個緩存紀錄時,緩存都會先嘗試查詢同一個網站伺服器。
即便 A 紀錄擁有優先權,使用像這樣的 DNS 紀錄也還是無法正常運作。