DNS SRV

Настроил джаббер-сервер для одного домена, для корректной маршрутизации достаточно в DNS указать корректную запись типа SRV для jabber-сервера. Попутно выяснилось, что прочие сервисы, например SIP, работают аналогичным образом:



Запись SRV в домене помогает подключиться к сервису в домене таким-же образом, как и запись MX для доставки электронной почты. Например, если мы отправляем email на адрес "v.pupkin@domain.tld", запись MX в домене domain.tld показывает, на какой сервер (или сервера, если их несколько) надо отправить сообщение, чтобы оно достигло адресата. Причём, имя сервера может даже не принадлежать домену. Аналогично,
для маршрутизации jabber-сообщений, домен должен содержать запись SRV, которая укажет сервер, обслуживающий jabber в домене.

Зачем использовать запись DNS SRV для сервисов?


Используя имя домена (вместо имени или ip-адреса хоста), пользователи сервиса получают единую точку входа. Маршрутизацию сообщений (или звонков SIP) обеспечивают выделенные сервера. Запись DNS SRV resource records показывает как найти сервисы для различных протоколов. Рассмотрим пример SIP proxy в домене:

  • Вы можете поставить запись SRV, указывающую на SIP proxy в другом домене. Таким-же образом, как почтовые сервера могут обслуживать почту для нескольких доменов, SIP-proxy может обслуживать пользователей в в разных доменах одновременно

  • В зоне DNS можно указать несколько SIP прокси. Если прокси с наибольшим приоритетом недоступен, вызов будет маршрутизироваться на прокси с меньшим приоритетом


Как настроить:


Согласно RFC 2782, SRV запись (в общем виде) должна иметь такой формат:

_Service._Proto.Name TTL Class SRV Priority Weight Port Target

Пусть в домене domain.tld сервиса SIP обслуживается сервером sip.domain.tld, тогда запись SRV RR может выглядеть так:

_sip._udp SRV 0 5060 sip.domain.tld.

В этом примере _sip._udp это IETF тип сервиса и протокол. SRV это тип DNS RR, приоритет сервера установлен в 0 (а начение weight пропущено), 5060,- порт, на котором работает SIP, и наконец, sip.domain.tld,- адрес сервера (SIP-прокси).
Jabber настраивается похоже:

_jabber SRV 5 0 5269 jabber.domain.tld.
_xmpp-server SRV 5 0 5269 jabber.domain.tld.
_xmpp-client SRV 5 0 5222 jabber.domain.tld.

записи _jabber (и _xmpp-server) используются для интерконнекта с другими jabber-доменами, _xmpp-client указывает на хост, на котором должен регистрироваться (авторизовываться) клиент. Если протокол не указан, подразумевается ._tcp.

Всё просто.