SRVレコードは、VOIPなどの特別なサービスに使用されます。
この記事を読み終えると、以下のことができるようになります。
記事のリンクをコピーする
DNS「サービス」(SRV)のレコードは、voice over IP(VoIP)、インスタントメッセージングなどに使用する特定のサービスのホストとポートを指定します。他のほとんどの DNSレコードには、サーバー名またはIPアドレスのみを指定しますが、SRV レコードにはそのIP アドレスのポートも含まることができます。インターネットプロトコルの中には、機能するためにSRVレコードの使用を必要とするものがあります。
ネットワークにおいて、ポートとはネットワークトラフィックがコンピュータ内のどのプロセスに向かうのかを指定する仮想的な場所です。ポートを利用することで、コンピュータは異なる種類のトラフィックを簡単に区別することができます。例えば、VoIPストリームは、同じインターネット接続を介してコンピュータに到達したとしても、Eメールメッセージとは異なるポートに送られます。IPアドレスと同様に、すべてのポートには番号が割り当てられています。
具体的に、IMAP、SIP、XMPPなどのインターネットプロトコルは、特定のサーバーとの接続に加えて、特定のポートに接続する必要があります。SRVレコードを使用して、DNSでポートを定義することができます。
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」の値を使用して、指定されたサービスをサポートするサーバーを、他のサーバーより優先度を上げることができます。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番目に多くのトラフィックを受信することになります。