DNS SRVレコードとは?

SRVレコードは、VOIPなどの特別なサービスに使用されます。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • SRVレコードの目的を理解しましょう。
  • SRVレコードに含まれる情報について
  • ポートを理解する

記事のリンクをコピーする

すべてのCloudflareプランに含まれる無料DNS

DNS SRVレコードとは?

DNS「サービス」(SRV)のレコードは、voice over IP(VoIP)、インスタントメッセージングなどに使用する特定のサービスのホストとポートを指定します。他のほとんどの DNSレコードには、サーバー名またはIPアドレスのみを指定しますが、SRV レコードにはそのIP アドレスのポートも含まることができます。インターネットプロトコルの中には、機能するためにSRVレコードの使用を必要とするものがあります。

ポートとは?

ネットワークにおいて、ポートとはネットワークトラフィックがコンピュータ内のどのプロセスに向かうのかを指定する仮想的な場所です。ポートを利用することで、コンピュータは異なる種類のトラフィックを簡単に区別することができます。例えば、VoIPストリームは、同じインターネット接続を介してコンピュータに到達したとしても、Eメールメッセージとは異なるポートに送られます。IPアドレスと同様に、すべてのポートには番号が割り当てられています。

具体的に、IMAP、SIP、XMPPなどのインターネットプロトコルは、特定のサーバーとの接続に加えて、特定のポートに接続する必要があります。SRVレコードを使用して、DNSでポートを定義することができます。

SRVのレコードの中身は?

SRVレコードには、以下の情報が含まれています。ここでは、各フィールドの値の例を示します。

サービス XMPP
proto* TCP
name** example.com
TTL 86400
class IN
種類 SRV
優先度 10
weight 5
port 5223
ターゲット server.example.com

*「プロトコル」の略。トランスポートプロトコルのように使う
**ドメイン名.

ただし、SRVレコードは実際には次のような形式にまります。

_service._proto.name. TTL class type of record priority weight port target.

そのため、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の場合)を指している必要があります。SRVレコードが列挙するサーバー名は、 CNAME にはできません。したがって、「server.example.com」は、そのドメイン名の A または AAAA レコードに直接つなげる形で指定する必要があります。

SRVレコードにおけるpriorityとweightの違いは何か?

SRVレコードは、リストアップされているさまざまなサーバーの「priority(優先度)」と「weight(重み)」を示しています。管理者はSRVレコードの「priority」の値を使用して、指定されたサービスをサポートするサーバーを、他のサーバーより優先度を上げることができます。priorityの値を低く設定したサーバーは、他のサーバーよりも多くのトラフィックを受け取ります。しかし、「weight」の値も同様に働きます。weightの値を高く設定したサーバーは、同じpriority値の他のサーバーよりも多くトラフィックを受け取ります。

両者の主な違いは、優先度が最初に考慮されることです。サーバーA、サーバーB、サーバーCの3つのサーバーがあり、それぞれの優先度が10、20、30である場合、「weight」の値は考慮されません。サービスは常にサーバーAに最初に問い合わせます。

しかし、サーバーA、B、Cの優先度がすべて10である場合、サービスが選択する優先順位はどうなるでしょうか。ここで重みが重要になります。サーバーAの「weight」値が5で、サーバーBとCの「weight」値がそれぞれ3と2の場合、サーバーAが最も多くのトラフィックを受信し、サーバーBは2番目、サーバーCは3番目に多くのトラフィックを受信することになります。