Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SRVレコード(エスアールブイレコード)とは | 意味や読み方など丁寧でわかりやすい用語解説

SRVレコード(エスアールブイレコード)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

SRVレコード (エスアールブイレコード)

英語表記

SRV record (エスアールブイレコード)

用語解説

SRVレコードは、DNS(Domain Name System)が提供するリソースレコードの一種であり、特定のサービスを提供しているサーバーのホスト名とポート番号を通知するために使用される。従来のDNSレコード、例えばAレコードやAAAAレコードがドメイン名に対してIPアドレスを対応付けるのに対し、SRVレコードは特定のサービス(例えばSIP、XMPP、LDAPなど)がどのサーバーのどのポートで稼働しているかを明示的に示す役割を持つ。これにより、クライアントはサービスの種類とドメイン名のみを知っていれば、そのサービスを提供しているサーバーの具体的な場所(ホスト名とポート番号)を自動的に発見できるようになる。システムエンジニアを目指す上で、現代のネットワークサービスにおいて柔軟なサービス配置や冗長性を実現するために不可欠な技術要素の一つである。

SRVレコードの形式は、その情報を効果的に伝えるために特定の構造を持っている。「_サービス名._プロトコル名.ドメイン名」という形式で記述され、これに加えて、レコードの値として「優先度」「重み」「ポート番号」「ターゲットホスト名」の4つのフィールドが指定される。

まず、「_サービス名._プロトコル名.ドメイン名」の部分は、SRVレコードがどのサービスの情報を表しているかを定義する。例えば、「_sip._tcp.example.com」は、example.comドメインにおけるSIPサービスがTCPプロトコルを使用している場合を指す。この「_サービス名」や「_プロトコル名」は、IANA(Internet Assigned Numbers Authority)によって標準化されており、共通の識別子を用いることで異なるシステム間での互換性を保っている。

次に、レコードの値に含まれる4つのフィールドについて詳しく見ていく。

「優先度(Priority)」は、複数のSRVレコードが存在する場合に、どのサーバーを優先的に利用するかを示す数値である。値が小さいほど優先度が高いとみなされる。クライアントはまず最も低い優先度のサーバーへの接続を試み、接続できない場合は次に低い優先度のサーバーへと順次試行する。これにより、プライマリサーバーがダウンした場合でも自動的にバックアップサーバーへ切り替える、といった冗長性を実現できる。

「重み(Weight)」は、同じ優先度を持つ複数のSRVレコードが存在する場合に、それらのサーバー間で負荷を分散させるための比率を示す数値である。クライアントは、同じ優先度のサーバー群の中から、重みの値に基づいてアクセスするサーバーを選択する。例えば、重みが「10」と「20」のサーバーがある場合、重み「20」のサーバーは重み「10」のサーバーの2倍の頻度で選択される可能性がある。これにより、複数のサーバーにトラフィックを均等に、あるいは設定された比率で振り分けることで、負荷分散を実現する。

「ポート番号(Port)」は、ターゲットホスト上でサービスが稼働しているTCPまたはUDPポートの番号を直接指定する。従来のA/AAAAレコードだけではドメイン名からIPアドレスしか取得できず、ポート番号はクライアントが別途知っている必要があった。SRVレコードではポート番号を直接通知できるため、クライアント側の設定を簡素化し、サーバー側のポート変更に対しても柔軟に対応できる。

「ターゲットホスト名(Target Host)」は、実際にサービスを提供しているサーバーのホスト名である。これはAレコードやAAAAレコードでIPアドレスに解決される名前でなければならない。SRVレコード自体にIPアドレスを直接記述することはなく、常にホスト名を指定する。この設計により、サービスを提供するサーバーのIPアドレスが変更されても、AレコードやAAAAレコードを更新するだけで済み、SRVレコード自体を変更する必要がないため、運用が容易になる。

SRVレコードは、主にVoIPのSIP(Session Initiation Protocol)サービス、インスタントメッセージングのXMPP(Extensible Messaging and Presence Protocol)、ディレクトリサービスのLDAP(Lightweight Directory Access Protocol)などで広く利用されている。これらのサービスでは、特定のサービスがどのサーバーのどのポートで提供されているかを知ることがクライアントにとって不可欠であり、SRVレコードがその情報を提供することで、クライアントソフトウェアは設定なしでサービスを見つけることができる。

クライアントがSRVレコードを利用するプロセスは以下の通りである。まず、クライアントは利用したいサービス名とプロトコル名、およびドメイン名を含むSRVクエリをDNSサーバーに送信する。DNSサーバーは該当するSRVレコードを応答し、クライアントはその応答に含まれる優先度、重み、ポート番号、ターゲットホスト名の情報を受け取る。クライアントは受け取った情報に基づき、最も優先度の高いサーバーの指定されたポートに接続を試みる。複数のサーバーがある場合は重みを考慮して接続先を選び、必要に応じてフォールバックを行う。

このようにSRVレコードは、サービスの位置情報の発見、複数のサーバー間での負荷分散、サービスダウン時の冗長性確保といった、現代の分散型ネットワークサービスを構築・運用する上で非常に重要な役割を担っている。システム管理者やネットワークエンジニアは、これらのメリットを理解し、適切にSRVレコードを設定・管理することで、サービスの可用性と効率性を向上させることが可能になる。これは、単にIPアドレスを解決するだけでなく、サービスそのものの配置と運用を柔軟にするための、DNSの進化形とも言える機能である。

関連コンテンツ