什麼是 DNS SRV 記錄?

SRV 記錄用於 VoIP 等特殊服務。

學習目標

閱讀本文後,您將能夠:

  • 瞭解 SRV 記錄的用途。
  • 瞭解 SRV 記錄中有哪些資訊
  • 瞭解連接埠

複製文章連結

所有 Cloudflare 方案中均包含免費 DNS

什麼是 DNS SRV 記錄?

DNS「服務」(SRV) 記錄為特定的服務(如 VoIP、即時訊息等)指定主機和連接埠。大多數其他 DNS 記錄只指定一個伺服器或一個 IP 位址,但 SRV 記錄還包括該 IP 位址的一個連接埠。一些網際網路通訊協定需要使用 SRV 記錄才能運作。

什麼是連線埠?

在網路中,連接埠是虛擬位置,指定網路流量在電腦內流向什麼處理序。連接埠可讓電腦輕鬆區分不同種類的流量。例如,儘管 VoIP 資料流與電子郵件訊息都透過相同的網際網路連線到達電腦,但它們會進入不同的連接埠。與 IP 位址一樣,所有連接埠都被指派一個編號。

某些網際網路通訊協定,如 IMAP、SIP 和 XMPP,除了與特定的伺服器連接外,還需要連接到一個特定的連接埠。SRV 記錄是在 DNS 中指定連接埠的方式。

什麼內容會進入 SRV 記錄?

SRV 記錄包含下列資訊。在這裡,我們列出了每個欄位的範例值。

服務 XMPP
通訊協定* TCP
名稱** example.com
TTL 86400
class IN
類型 SRV
優先順序 10
權數 5
連接埠 5223
目標 server.example.com

*「通訊協定」的縮寫,例如在傳輸通訊協定中。
**網域名稱

但是,SRV 記錄實際上按以下方式進行格式設定:

_service._proto.name。TTL 類型記錄優先順序會增加連接埠目標的權數。

所以我們的範例 SRV 記錄實際上看起來如下所示:

_xmpp._tcp.example.com.86400 IN SRV 10 5 5223 server.example.com.

在上面的範例中,「_xmpp」表示服務類型(XMPP 通訊協定),「__tcp」表示 TCP 傳輸通訊協定,而「example.com」是主機或網域名稱。「server.example.com」是目標伺服器,「5223」表示該伺服器內的連接埠。

SRV 記錄必須指向 A 記錄(在 IPv4 中)或 AAAA 記錄(在 IPv6 中)。它們列出的伺服器名稱不能是 CNAME。因此「server.example.com」必須直接指向該名稱下的 A 或 AAAA 記錄。

SRV 記錄中的優先順序和權數有什麼區別?

SRV 記錄表明它們列出的各種伺服器的「優先順序」和「權數」。SRV 記錄中的「優先順序」值讓管理員能夠優先考慮支援給定服務的一台伺服器,而非另一伺服器。具有較低優先順序值的伺服器將接收比其他伺服器更多的流量。但是,「權數」值是相似的:權數較高的伺服器將比具有相同優先順序的其他伺服器接收更多的流量。

它們之間的主要區別是,優先考慮優先順序。如果有三台伺服器,分別為伺服器 A、伺服器 B 和伺服器 C,它們的優先順序分別為 10、20 和 30,那麼它們的「權數」無關緊要。該服務將始終先查詢伺服器 A。

但是假設伺服器 A、B 和 C 的優先順序均為 10——服務將如何在它們之間進行選擇?這就是權數的用武之地:如果伺服器 A 的「權數」值為 5,而伺服器 B 和 C 的「權數」值分別為 3 和 2,則伺服器 A 將接收最多的流量,伺服器 B 將接收第二多的流量,伺服器 C 排名第三。