hostprofi.ru
Подобрать хостинг
Термин·буква S

SRV-запись

краткое определение

SRV-запись — DNS-запись, которая указывает расположение (хост и порт) сервера конкретного сетевого сервиса: VoIP, XMPP, SIP, Microsoft Teams.

SRV-запись (Service Record) — тип DNS-записи, которая описывает местонахождение сервера для конкретного протокола и сервиса. В отличие от A-записи (IP-адрес) или MX-записи (почтовый сервер), SRV хранит не только адрес, но и порт, приоритет и вес — позволяя клиенту автоматически найти нужный сервис без жёсткой привязки к конкретному хосту.

Как работает SRV-запись

Формат SRV-записи по RFC 2782: _service._proto.name. TTL class SRV priority weight port target. Пример: _sip._tcp.example.com. 86400 IN SRV 10 60 5060 sip.example.com. — SIP-сервер для домена example.com, порт 5060, приоритет 10, вес 60. Клиент (SIP-телефон, мессенджер, браузер) делает DNS-запрос типа SRV, получает адрес и порт — ручная настройка пользователем не требуется.

Параметр Priority работает как в MX-записи: меньше число — выше приоритет. Сначала пробуется сервер с наименьшим Priority. Weight используется для балансировки нагрузки между серверами с одинаковым приоритетом: сервер с weight 60 получит ~60% запросов, сервер с weight 40 — ~40%. Если target равен «.» — сервис для этого домена недоступен (RFC 2782 §4). При нескольких SRV с одинаковым приоритетом выбор с учётом weight происходит случайным образом, взвешенно.

Важное ограничение: target SRV-записи не может быть CNAME — только A или AAAA. Это прямое требование RFC 2782. Часть DNS-серверов раньше позволяла такую конфигурацию, но поведение было непредсказуемым.

Типичные применения SRV

  • XMPP/Jabber — клиент ищет сервер через _xmpp-client._tcp.domain и _xmpp-server._tcp.domain.
  • SIP — VoIP-телефония: _sip._tcp и _sip._udp, порт 5060 (незашифрованный) или 5061 (TLS).
  • Microsoft Active Directory — целиком полагается на SRV для обнаружения контроллеров домена: _ldap._tcp.dc._msdcs.domain.com. Без SRK Active Directory не работает.
  • Kubernetes — kube-dns создаёт SRV-записи для сервисов вида _http._tcp.service.namespace.svc.cluster.local.
  • Minecraft — клиент использует SRV _minecraft._tcp.example.com для подключения на нестандартный порт без указания порта пользователем.
  • CalDAV / CardDAV — стандарт RFC 6764 требует SRV для autodiscovery серверов календарей и контактов: iOS и Android ищут _caldavs._tcp и _carddavs._tcp.

История

SRV-запись стандартизирована в RFC 2052 (1996), обновлена в RFC 2782 (2000) Аресом Гулбрандсеном и Полом Викси. Создана для решения задачи autodiscovery клиентов: до SRV пользователям приходилось вручную указывать адреса серверов. К середине 2000-х SRV стала обязательной для XMPP (Jabber), а затем для Kerberos и SIP. Active Directory с Windows 2000 (2000 год) целиком полагается на SRV. В 2013 году IETF предложил расширенный аналог — DNS-SD (Service Discovery, RFC 6763) поверх multicast DNS (mDNS), используемый в Apple Bonjour.

На что обращать внимание

SRV-запись используется реже, чем A или MX, поэтому не все панели управления DNS удобно её редактируют. При настройке Minecraft-сервера или корпоративного XMPP уточните, поддерживает ли провайдер создание SRV. Cloudflare, AWS Route 53, Hetzner DNS — поддерживают. Некоторые хостинги с собственными NS-серверами — нет. Проверить SRV: dig SRV _service._tcp.example.com или MXToolbox SRV Lookup. В Windows: nslookup -type=SRV _ldap._tcp.dc._msdcs.domain.com.

При использовании балансировки через несколько SRV-записей с разным весом убедитесь, что backend-серверы обрабатывают примерно равный объём запросов. Нулевой вес (weight=0) — сервер получит запросы только если все серверы с ненулевым весом недоступны.

Другие термины