В комментариях к нашим заметкам по DNS уже не раз спрашивали: что такое SRV-записи и для чего они нужны.
Начнем немного издалека. Все знают, что основная задача DNS сервера – это разрешение имен, т.е. преобразование понятных человеку доменных имен в IP-адреса. Для этого используется запись типа А, которая прямо сопоставляет имя и IP-адрес. Например:
pc-petya IN A 192.168.121.156
Она говорит, что узел сети с именем
pc-petya имеет адрес 192.168.121.156.Если провести аналогию, то это некоторая справочная служба, у которой можно всегда узнать, где живет Петя. В данном случае вам ответят, что Петя живет в 121-м доме в 156-й квартире.
С этим понятно, если мы знаем имя узла, то DNS всегда поможет нам узнать его адрес. Но как быть, если имя узла мы не знаем?
Как может произойти подобная ситуация? Да очень просто, мы хотим отправить почту, но не знаем как. Ведь просто так почту первому встречному не отдашь, ее надо передать в почтовое отделение.
Что мы будем делать в реальном мире? Правильно, спросим: а где тут почта?
В DNS для ответа на этот вопрос есть сервисные записи, которые сообщают расположение некоторых сетевых служб, обслуживающих домен (как пространство имен).
Одной из первых таких записей была MX-запись, которая указывала на узлы, принимающие почту в домене. С этим типом записей знакомы все, кто касался работы электронной почты.
Но одной электронной почтой сетевые службы не исчерпываются и скоро стало понятно, что заводить для каждой из них свою запись – это бардак и расточительство. Поэтому был введен новый, универсальный тип записи – SRV.
Она более сложна, по сравнению с обычными записями, но содержит всю исчерпывающую информацию, которая может понадобиться.
Но благодаря этому одним типом записи мы можем закрыть все текущие службы и новые, которые могут появиться в будущем. Достаточно лишь знать название службы, а остальное нам сообщит наша универсальная справочная (DNS-сервер).
Таким образом, если продолжать аналогию, при помощи SRV-записей мы можем узнать не только где тут поблизости почта, но и как пройти в библиотеку, столовую или даже, в конце концов, в туалет.
Давайте посмотрим на реальные SRV-записи, например, служб Яндекса. Начнем с такой:
_xmpp-server._tcp 21600 IN SRV 20 0 5269 domain-xmpp.yandex.net.
Имя записи:
_xmpp-server._tcp – т.е. межсерверное общение XMPP-серверов по протоколу TCP.Далее идет
TTL – 21 600 сек (6 часов) и тип записи IN SRV, после чего указан ее приоритет – 20 (здесь как в MX – чем ниже, тем предпочтительнее) и вес 0 (используется для выбора нескольких записей с одинаковым приоритетом), затем порт – 5269 и узел, на котором располагается данная служба - domain-xmpp.yandex.net.Обратите внимание на точку на конце – она обозначает абсолютный путь, в противном случае такой адрес служба DNS дополнит текущим доменом.
А вот еще запись:
_xmpp-client._tcp 21600 IN SRV 20 0 5222 domain-xmpp.yandex.net.
Она отличается только именем
_xmpp-client._tcp и сообщает куда должны подключаться XMPP-клиенты через TCP. Также можем увидеть здесь другой порт.Таким образом если вы запускаете XMPP-клиент, то при наличии SRV-записей он автоматически найдет XMPP-сервер и попробует к нему подключиться.
А ваш сервер, если его клиент захочет пообщаться с клиентом из другого домена также легко определит адрес отвечающего за коммуникации сервера и попробует передать сообщение ему.
Также SRV-записи широко используются в Active Directory, с их помощью клиенты находят контроллеры домена, глобальные каталоги, узлы Kerberos и т.д.
Как видим, SRV-записи, хоть и более сложны, но чрезвычайно полезны и помогают узлам автоматически находить необходимые сетевые службы, существенно упрощая жизнь как пользователям, так и администраторам.
