Difference between revisions of "DNS SRV"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(Практическое использование)
(Как добавить (пример настройки): - изменено название раздела на "Спецификация", уточнено описание полей в DNS-записи)
Line 25: Line 25:
 
Очевидным минусом использования SRV является тот, что нельзя явно адресовать пользователя на веб-страницу, где описывается сервис.
 
Очевидным минусом использования SRV является тот, что нельзя явно адресовать пользователя на веб-страницу, где описывается сервис.
  
===Как добавить (пример настройки)===
+
===Спецификация===
Пусть jabber-сервер физически находится на хосте xmpp-provider.ru, а my-personal-jabber.ru будет тем доменом, который будет использоваться при формировании JID и для указания в настройках клиентов.
+
Пусть jabber-сервер физически находится на хосте xmpp-provider.ru, а my-personal-jabber.ru будет тем доменом, который будет использоваться при формировании JID и для указания в настройках клиентов. Тогда записи будут выглядеть так:
 
+
Тогда записи будет выглядеть так
+
 
  _xmpp-server._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5269 xmpp-provider.ru.
 
  _xmpp-server._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5269 xmpp-provider.ru.
 
  _xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5222 xmpp-provider.ru.
 
  _xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5222 xmpp-provider.ru.
 +
 +
Формат записи следующий:
 +
_xmpp-server._tcp.domain.tld. TTL_number IN SRV priority_number weight_number port host
  
 
Описание полей записи:
 
Описание полей записи:
* _xmpp-server - имя сервиса
+
* '''_xmpp-server'''
* _tcp - протокол
+
* '''_xmpp-client''' <br> имя сервиса согласно RFC-1918, предварённое подчёркиванием; для межсерверных соединений используется '''_xmpp-server''', для подключений клиентов к серверу - '''_xmpp-client''';
* my-personal-jabber.ru. - хост, где будет виртуально размещаться сервер
+
* '''_tcp''' <br> протокол, для jabber используется только протокол TCP (значение поля - '''_tcp''');
* TTL (в секундах)
+
* '''domain.tld.''' <br> доменное имя, правая часть JID (пользователи будут иметь JID вида user@domain.tld); точка в конце '''''обязательна''''', иначе к имени будет автоматически добавлен домен используемой зоны.
* Класс (неизменяемое поле)
+
* '''TTL_number''' <br> время жизни записи DNS на кеширующих серверах (TTL) в секундах
* Тип DNS-записи
+
* '''IN''' <br>  Класс - неизменяемое поле, IN означает "internet"
* Приоритет (priority) Аналогично MX, чем меньше значение, тем выше приоритет
+
* '''SRV''' <br> Тип DNS-записи
* Вес (weight). Учитывается в случае наличия нескольких SRV-записей с одинаковым приоритетом. Посредством этого значения осуществляется балансировка: значение определяет какая процентная часть запросов направляется на хост. В примере на экспериментальный сервер будет идти 10% подключений.
+
* '''priority_number''' <br> Число приоритета записи DNS, аналогично записям типа MX: чем меньше значение, тем выше приоритет
 +
* '''weight_number' <br> Вес записи DNS. Учитывается в случае наличия нескольких SRV-записей с одинаковым приоритетом. Посредством этого значения осуществляется балансировка: значение определяет, какая доля запросов направляется на хост. В примере на сервер experimental.xmpp-provider.ru будет идти 10% подключений клиентов:
 
  _xmpp-server._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5269 xmpp-provider.ru.
 
  _xmpp-server._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5269 xmpp-provider.ru.
 
  _xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 ''90'' 5222 xmpp-provider.ru.
 
  _xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 ''90'' 5222 xmpp-provider.ru.
 
  _xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 ''10'' 5222 experimental.xmpp-provider.ru.
 
  _xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 ''10'' 5222 experimental.xmpp-provider.ru.
* Порт
+
* '''port''' <br>
Для _xmpp-server порт всегда будет 5269, а в случае _xmpp-client указывается реальный порт, на котором сервер принимает соединения от  клиентского ПО. Если при подключении пользователь указывает порт отличный от указанного в записи, то {{todo|.....}}.
+
Порт сервера. Для '''_xmpp-server''' порт всегда будет '''5269''', а в случае '''_xmpp-client''' указывается реальный порт, на котором сервер принимает соединения от  клиентского ПО. Если при подключении пользователь указывает порт, отличный от указанного в записи, то {{todo|.....}}.
* Хост, где физически запущен сервер
+
* '''host''' <br>
 +
Хост, где физически запущен сервер. Если указано полное доменное имя, оно должно завершаться точкой. Если точка в конце не поставлена, к имени будет добавлен домен используемой зоны.
  
 
Если не указывать название хоста (номер), то будет использован хост из текущей зоны.
 
Если не указывать название хоста (номер), то будет использован хост из текущей зоны.

Revision as of 12:19, 6 June 2008

Информации мало или она отсутствует

Пока в данной статье мало информации. Приносим извинения.

Если вы хотите написать по теме, — сделайте это.

Особый вид DNS-записи, который позволяет указывать хост, на котором размещен тот или иной сервис. В грубом приближении это аналог MX-записи, которая указывает, куда должна доставляться электронная почта, которая адресована определенному домену.

Формат и использование специфицированы в RFC 2782. Штатно поддерживается такими протоколами как XMPP(Jabber), SIP, LDAP.

За счет использования этого вида записи можно разместить Jabber-сервер на отдельной машине, а не на той же, куда указывает A-запись DNS. Также за счет этого можно осуществлять так называемый Xmpp-хостинг, когда сервер работает у поставщика, а клиент прозрачно использует его возможности.

Поясним на примере. Имеется домен company.ru, который разрешается в IP-адрес 200.100.50.33. Если не использовать SRV, то сам демон сервера физически придется размещать на том же хосте, где выполняется веб-сервер. Это не всегда удобно или даже технически возможно.

...

До принятия RFC в записях фигурировало ключевое слово jabber. Если требуется обратная совместимость со старыми серверами, то следует добавлять записи и с данным ключевым словом.

Практическое использование

Большая часть популярных jabber-клиентов поддерживает работу с SRV-записями.

Jabber-сервера скорее всего все поддерживают работу с этой записью. В противном случае S2S-взаимодействие может быть недоступно.

Пережитки прошлого и выбор доменного имени

Несколько лет назад, когда поддержка на стороне клиентов была не такой распространенной, сервера поднимали на отдельном хосту. Например, jabber.tushino.com или jabber.corbina.ru. Очевидно, что это вело к неоправданному увеличению длины JID.

Некоторые администраторы так продолжают поступать и сейчас, но это, по нашему мнению, подход неправильный: никто же не выделяет для электронной почты отдельный домен mail (mail.company.ru), а просто обслуживают прием и отправку почты непосредственно на домене второго уровня.

Очевидным минусом использования SRV является тот, что нельзя явно адресовать пользователя на веб-страницу, где описывается сервис.

Спецификация

Пусть jabber-сервер физически находится на хосте xmpp-provider.ru, а my-personal-jabber.ru будет тем доменом, который будет использоваться при формировании JID и для указания в настройках клиентов. Тогда записи будут выглядеть так:

_xmpp-server._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5269 xmpp-provider.ru.
_xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5222 xmpp-provider.ru.

Формат записи следующий:

_xmpp-server._tcp.domain.tld. TTL_number IN SRV priority_number weight_number port host

Описание полей записи:

  • _xmpp-server
  • _xmpp-client
    имя сервиса согласно RFC-1918, предварённое подчёркиванием; для межсерверных соединений используется _xmpp-server, для подключений клиентов к серверу - _xmpp-client;
  • _tcp
    протокол, для jabber используется только протокол TCP (значение поля - _tcp);
  • domain.tld.
    доменное имя, правая часть JID (пользователи будут иметь JID вида user@domain.tld); точка в конце обязательна, иначе к имени будет автоматически добавлен домен используемой зоны.
  • TTL_number
    время жизни записи DNS на кеширующих серверах (TTL) в секундах
  • IN
    Класс - неизменяемое поле, IN означает "internet"
  • SRV
    Тип DNS-записи
  • priority_number
    Число приоритета записи DNS, аналогично записям типа MX: чем меньше значение, тем выше приоритет
  • weight_number'
    Вес записи DNS. Учитывается в случае наличия нескольких SRV-записей с одинаковым приоритетом. Посредством этого значения осуществляется балансировка: значение определяет, какая доля запросов направляется на хост. В примере на сервер experimental.xmpp-provider.ru будет идти 10% подключений клиентов:
_xmpp-server._tcp.my-personal-jabber.ru. 3600 IN SRV 20 0 5269 xmpp-provider.ru.
_xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 90 5222 xmpp-provider.ru.
_xmpp-client._tcp.my-personal-jabber.ru. 3600 IN SRV 20 10 5222 experimental.xmpp-provider.ru.
  • port
Порт сервера. Для _xmpp-server порт всегда будет 5269, а в случае _xmpp-client указывается реальный порт, на котором сервер принимает соединения от клиентского ПО. Если при подключении пользователь указывает порт, отличный от указанного в записи, то
ToDo: .....
.
  • host

Хост, где физически запущен сервер. Если указано полное доменное имя, оно должно завершаться точкой. Если точка в конце не поставлена, к имени будет добавлен домен используемой зоны.

Если не указывать название хоста (номер), то будет использован хост из текущей зоны.

ToDo: Как обойтись с 5223 и что есть после приоритета поле + валидно ли указание IP?

Пример

Данный пример базируется на бесплатных сервисах, самостоятельно осуществлять поддержку и сопровождения сервисов не требуется. Оптимально для случаев, когда бюджет ограничен либо хочется просто поэспериментировать.

Регистрация домена

Бесплатно можно зарегистрировать домен в зона типа PUBLIC и GEO. В РФ поддержку таких доменов осуществляет ООО Релком.

ДНС-сервер

Если у вас нет собственного сервера, а платить провайдеру за услугу ДНС вы не хотите, то можно воспользоваться одним из бесплатных сервисов. Например xname.org.

XMPP-сервер

В данный момент услуги т.н. XMPP-хостинга предоставляет только Google в рамках своего бесплатного (по крайней мере по состоянию на июль 2007 года) сервиса Google Apps.

Проверка

Для проверки измененной зоны можно воспользоваться командой DIG (ОС семейства Unix):

dig -t srv _xmpp-server._tcp.gt.jrudevels.org

Если нужно опросить конкретный сервер, то:

dig @ns1.somedns.ru -t srv  _xmpp-server._tcp.gt.jrudevels.org

В случае использования Google_Apps тестирование зоны производится силами самого сервиса.

Пример вывода команды dig:

#dig -t srv _xmpp-server._tcp.ratsy.ru
...часть вывода опущена...
;; QUESTION SECTION:
;_xmpp-server._tcp.ratsy.ru.    IN      SRV
;; ANSWER SECTION:
_xmpp-server._tcp.ratsy.ru. 374 IN      SRV     20 0 5269 xmpp-server3.l.google.com.
_xmpp-server._tcp.ratsy.ru. 374 IN      SRV     20 0 5269 xmpp-server4.l.google.com.
_xmpp-server._tcp.ratsy.ru. 374 IN      SRV     5 0 5269 xmpp-server.l.google.com.
_xmpp-server._tcp.ratsy.ru. 374 IN      SRV     20 0 5269 xmpp-server1.l.google.com.
_xmpp-server._tcp.ratsy.ru. 374 IN      SRV     20 0 5269 xmpp-server2.l.google.com.
...часть опущена...

Ссылки