Difference between revisions of "DNS SRV"
(→Как добавить (пример настройки): - изменено название раздела на "Спецификация", уточнено описание полей в DNS-записи) |
m (Reverted edits by 31.184.197.106 (talk) to last revision by Binary) |
||
(24 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{Interwiki |
+ | | ruwiki = | ||
+ | | enwiki = | ||
+ | | jworld = SRV | ||
+ | }} | ||
+ | '''SRV''' - особый вид DNS-записи, который позволяет указывать пару хост-порт, на которых размещен тот или иной сервис. В грубом приближении это аналог MX-записи, которая указывает, куда должна доставляться электронная почта, которая адресована определённому домену. | ||
− | + | Формат и использование специфицированы в [http://tools.ietf.org/html/rfc2782 RFC 2782]. Штатно поддерживается протоколами [[XMPP]] (Jabber), [[SIP]] и {{w|LDAP}}. | |
− | + | За счет использования этого вида записи можно разместить Jabber-сервер на отдельной машине, а не на той же, куда указывает A-запись DNS. Также за счет этого можно осуществлять так называемый [[XMPP-хостинг]], когда сервер Jabber работает у поставщика, а клиент прозрачно использует его возможности. | |
− | + | Поясним на примере. Имеется домен 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), а просто обслуживают прием и отправку почты непосредственно на домене второго уровня. | Некоторые администраторы так продолжают поступать и сейчас, но это, по нашему мнению, подход неправильный: никто же не выделяет для электронной почты отдельный домен ''mail'' (mail.company.ru), а просто обслуживают прием и отправку почты непосредственно на домене второго уровня. | ||
Line 25: | Line 26: | ||
Очевидным минусом использования SRV является тот, что нельзя явно адресовать пользователя на веб-страницу, где описывается сервис. | Очевидным минусом использования 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-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. | ||
Формат записи следующий: | Формат записи следующий: | ||
− | + | _Service._Proto.domain.tld. TTL_number IN SRV priority_number weight_number port_number host_name | |
Описание полей записи: | Описание полей записи: | ||
− | * ''' | + | * '''_Service''' <br> имя сервиса согласно [http://tools.ietf.org/html/rfc3232 RFC-3232] (IANA Assigned [http://www.iana.org/assignments/port-numbers Port Numbers]), предварённое подчёркиванием: для межсерверных соединений используется '''_xmpp-server''', для подключений клиентов к серверу - '''_xmpp-client''' и, если нужна совместимость с устаревшими клиентами, можно добавить и '''_jabber''', но запись '''_xmpp-client''' при этом обязательно должна быть. |
− | + | * '''_Proto''' <br> название протокола, предварённое подчёркиванием, для jabber используется только протокол TCP, то есть значение поля всегда '''_tcp'''; | |
− | * ''' | + | |
* '''domain.tld.''' <br> доменное имя, правая часть JID (пользователи будут иметь JID вида user@domain.tld); точка в конце '''''обязательна''''', иначе к имени будет автоматически добавлен домен используемой зоны. | * '''domain.tld.''' <br> доменное имя, правая часть JID (пользователи будут иметь JID вида user@domain.tld); точка в конце '''''обязательна''''', иначе к имени будет автоматически добавлен домен используемой зоны. | ||
− | * '''TTL_number''' <br> время жизни записи DNS на кеширующих серверах (TTL) в секундах | + | * '''TTL_number''' <br> время жизни записи DNS на кеширующих серверах (TTL) в секундах, описано в [http://tools.ietf.org/html/rfc1035 RFC-1035] |
− | * '''IN''' <br> Класс - неизменяемое поле, IN означает "internet" | + | * '''IN''' <br> Класс - неизменяемое поле, IN означает "internet", описано в [http://tools.ietf.org/html/rfc1035 RFC-1035] |
− | * '''SRV''' <br> Тип DNS-записи | + | * '''SRV''' <br> Тип DNS-записи, для описываемых записей - "SRV" |
− | * '''priority_number''' <br> | + | * '''priority_number''' <br> Приоритет (число в диапазоне от 0 до 65535) для хоста. Используется аналогично записям типа MX: чем меньше значение, тем выше приоритет. |
− | * '''weight_number' <br> Вес | + | * '''weight_number''' <br> Вес (число в диапазоне от 0 до 65535) для хоста. Учитывается в случае наличия нескольких SRV-записей с одинаковым приоритетом. Посредством этого значения осуществляется балансировка: значение определяет, какая доля запросов направляется на хост. В случае одного хоста или нескольких равноправных хостов нужно указывать значение 0. Если же существует хост с весом 0 и хост с положительным весом, хост с весом ноль практически будет простаивать. В следующем примере на сервер 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_number''' <br> |
− | Порт сервера. Для '''_xmpp-server''' порт всегда будет '''5269''', а в случае '''_xmpp-client''' указывается | + | Порт сервера. Для '''_xmpp-server''' порт всегда будет '''5269''', а в случае '''_xmpp-client''' указывается порт, на котором сервер принимает соединения от клиентского ПО, обычно это порт 5222. Порт 5223 считается устаревшим и для него отдельная запись не предусмотрена (тем более, что в [http://www.iana.org/assignments/port-numbers IANA Port Numbers] на него назначен совершенно другой сервис - "HP Virtual Machine Group Management"). |
− | * ''' | + | * '''host_name''' <br> |
− | + | Доменное имя хоста, где физически запущен сервер. Октетный адрес указывать нельзя. Если указано полное доменное имя, оно должно завершаться точкой. Если точка в конце не поставлена, к имени будет добавлен домен используемой зоны. Доменное имя хоста должно иметь запись типа "А", то есть нельзя указывать доменное имя, которое ссылается посредством CNAME на другое доменное имя, можно только то, которое напрямую преобразуется в числовой (октетный) адрес. | |
− | + | == Пример == | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Данный пример базируется на бесплатных сервисах, самостоятельно осуществлять поддержку и сопровождения сервисов не требуется. Оптимально для случаев, когда бюджет ограничен либо хочется просто поэспериментировать. | Данный пример базируется на бесплатных сервисах, самостоятельно осуществлять поддержку и сопровождения сервисов не требуется. Оптимально для случаев, когда бюджет ограничен либо хочется просто поэспериментировать. | ||
− | + | === Регистрация домена === | |
Бесплатно можно зарегистрировать домен в зона типа PUBLIC и GEO. | Бесплатно можно зарегистрировать домен в зона типа PUBLIC и GEO. | ||
− | В РФ поддержку | + | В РФ поддержку доменов типа GEO (но не всех) [http://www.relcom.ru/Services/Domen_3/Domen_3_reg/ осуществляет] ООО Релком. Кроме того, [http://ripn.net РосНИИРОС] всем желающим бесплатно регистрирует домены "третьего уровня" в зонах pp.ru, org.ru, net.ru. |
− | + | Есть различные сервисы, предлагающие бесплатный DNS-хостинг. Это [http://xname.org/ xname.org] (нет возможности редактировать SRV), [http://freedns.afraid.org/ FreeDNS] и другие. | |
− | + | ||
− | === | + | === ДНС-сервер === |
− | + | Если у вас нет собственного сервера, а платить провайдеру за услугу ДНС вы не хотите, то можно воспользоваться одним из бесплатных сервисов. Например, бесплатный DNS-хостинг<ref>[http://pdd.yandex.ru/help/section9/ DNS-хостинг Яндекса]</ref> есть у [[Yandex]], а также есть западные сервисы, например, [http://xname.org xname.org]. | |
− | ==== | + | === XMPP-сервер === |
+ | |||
+ | Услуги [[:Category:Jabber-хостинг|XMPP-хостинга]] также предоставляют многие сервис и [[Хостинг-провайдер|хостинг-провайдеры]]: | ||
+ | * Google в рамках своего бесплатного (по крайней мере по состоянию на январь 2009 года) сервиса [[Google Apps]] | ||
+ | * 1gb.ru ([http://www.1gb.ru/services_jabber.php описание]); | ||
+ | * spaceweb.ru ([http://sweb.ru/news/93 описание]). | ||
+ | |||
+ | Возможна самостоятельная установка и настройка XMPP-сервера на виртуальных серверах ([[w:ru:VPS|VPS]]). | ||
+ | |||
+ | === Проверка === | ||
Для проверки измененной зоны можно воспользоваться командой DIG (ОС семейства Unix): | Для проверки измененной зоны можно воспользоваться командой DIG (ОС семейства Unix): | ||
− | dig -t srv _xmpp-server._tcp. | + | dig -t srv _xmpp-server._tcp.jrudevels.org |
+ | Для краткого вывода: | ||
+ | dig +short SRV _xmpp-client._tcp.leksey.tushinec.ru | ||
+ | либо командой host (также в юниксах): | ||
+ | host -t srv _xmpp-server._tcp.jrudevels.org | ||
+ | либо командой nslookup (в большинстве ОС, в том числе в Windows, в Linux же эта утилита считается устаревшей): | ||
+ | nslookup -type=srv _xmpp-server._tcp.jrudevels.org | ||
Если нужно опросить конкретный сервер, то: | Если нужно опросить конкретный сервер, то: | ||
dig @ns1.somedns.ru -t srv _xmpp-server._tcp.gt.jrudevels.org | dig @ns1.somedns.ru -t srv _xmpp-server._tcp.gt.jrudevels.org | ||
− | В случае использования [[ | + | В случае использования [[Google Apps]] тестирование зоны производится силами самого сервиса. |
Пример вывода команды dig: | Пример вывода команды dig: | ||
Line 90: | Line 100: | ||
...часть опущена... | ...часть опущена... | ||
− | === | + | == Предупреждение о Google Apps == |
+ | На странице помощи google указано, что нужно вносить записи IN SRV для имён _xmpp-server._tcp.domain.tld. и для _jabber._tcp.domain.tld., но не указана необходимость записей _xmpp-client._tcp.domain.tld. Если не указать записи для _xmpp-client, это не позволит использовать некоторые клиенты jabber. | ||
+ | |||
+ | '''Примечания:''' | ||
+ | <references /> | ||
+ | |||
+ | == Ссылки == | ||
* Обсуждение на [http://forum.jrudevels.org/viewtopic.php?t=1050 форуме] | * Обсуждение на [http://forum.jrudevels.org/viewtopic.php?t=1050 форуме] | ||
+ | |||
+ | [[Category:Documentation]] | ||
+ | [[Category:Technical]] | ||
+ | [[Category:HowTo]] |
Latest revision as of 08:42, 10 November 2015
Статьи по этой теме на других вики-сайтах: | |
---|---|
SRV — JabberWorld |
SRV - особый вид DNS-записи, который позволяет указывать пару хост-порт, на которых размещен тот или иной сервис. В грубом приближении это аналог MX-записи, которая указывает, куда должна доставляться электронная почта, которая адресована определённому домену.
Формат и использование специфицированы в RFC 2782. Штатно поддерживается протоколами XMPP (Jabber), SIP и LDAP.
За счет использования этого вида записи можно разместить Jabber-сервер на отдельной машине, а не на той же, куда указывает A-запись DNS. Также за счет этого можно осуществлять так называемый XMPP-хостинг, когда сервер Jabber работает у поставщика, а клиент прозрачно использует его возможности.
Поясним на примере. Имеется домен company.ru, который разрешается в IP-адрес 200.100.50.33. Если не использовать SRV, то сам демон сервера физически придется размещать на том же хосте, где выполняется веб-сервер. Это не всегда удобно, а нередко и технически невозможно.
До принятия стандарта RFC в записях фигурировало ключевое слово jabber. Если требуется обратная совместимость со старыми серверами, то следует добавлять записи и с данным ключевым словом.
Contents
Практическое использование[edit]
Большая часть популярных Jabber-клиентов поддерживает работу с SRV-записями.
Jabber-сервера скорее всего все поддерживают работу с этой записью, в противном случае S2S (межсерверное взаимодействие) может быть недоступно.
Пережитки прошлого и выбор доменного имени[edit]
Несколько лет назад, когда поддержка на стороне клиентов была не такой распространенной, сервера поднимали на отдельном хосте. Например, jabber.tushino.com или jabber.corbina.ru. Очевидно, что это вело к неоправданному увеличению длины JID.
Некоторые администраторы так продолжают поступать и сейчас, но это, по нашему мнению, подход неправильный: никто же не выделяет для электронной почты отдельный домен mail (mail.company.ru), а просто обслуживают прием и отправку почты непосредственно на домене второго уровня.
Очевидным минусом использования SRV является тот, что нельзя явно адресовать пользователя на веб-страницу, где описывается сервис.
Спецификация[edit]
Пусть 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.
Формат записи следующий:
_Service._Proto.domain.tld. TTL_number IN SRV priority_number weight_number port_number host_name
Описание полей записи:
- _Service
имя сервиса согласно RFC-3232 (IANA Assigned Port Numbers), предварённое подчёркиванием: для межсерверных соединений используется _xmpp-server, для подключений клиентов к серверу - _xmpp-client и, если нужна совместимость с устаревшими клиентами, можно добавить и _jabber, но запись _xmpp-client при этом обязательно должна быть. - _Proto
название протокола, предварённое подчёркиванием, для jabber используется только протокол TCP, то есть значение поля всегда _tcp; - domain.tld.
доменное имя, правая часть JID (пользователи будут иметь JID вида user@domain.tld); точка в конце обязательна, иначе к имени будет автоматически добавлен домен используемой зоны. - TTL_number
время жизни записи DNS на кеширующих серверах (TTL) в секундах, описано в RFC-1035 - IN
Класс - неизменяемое поле, IN означает "internet", описано в RFC-1035 - SRV
Тип DNS-записи, для описываемых записей - "SRV" - priority_number
Приоритет (число в диапазоне от 0 до 65535) для хоста. Используется аналогично записям типа MX: чем меньше значение, тем выше приоритет. - weight_number
Вес (число в диапазоне от 0 до 65535) для хоста. Учитывается в случае наличия нескольких SRV-записей с одинаковым приоритетом. Посредством этого значения осуществляется балансировка: значение определяет, какая доля запросов направляется на хост. В случае одного хоста или нескольких равноправных хостов нужно указывать значение 0. Если же существует хост с весом 0 и хост с положительным весом, хост с весом ноль практически будет простаивать. В следующем примере на сервер 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_number
Порт сервера. Для _xmpp-server порт всегда будет 5269, а в случае _xmpp-client указывается порт, на котором сервер принимает соединения от клиентского ПО, обычно это порт 5222. Порт 5223 считается устаревшим и для него отдельная запись не предусмотрена (тем более, что в IANA Port Numbers на него назначен совершенно другой сервис - "HP Virtual Machine Group Management").
- host_name
Доменное имя хоста, где физически запущен сервер. Октетный адрес указывать нельзя. Если указано полное доменное имя, оно должно завершаться точкой. Если точка в конце не поставлена, к имени будет добавлен домен используемой зоны. Доменное имя хоста должно иметь запись типа "А", то есть нельзя указывать доменное имя, которое ссылается посредством CNAME на другое доменное имя, можно только то, которое напрямую преобразуется в числовой (октетный) адрес.
Пример[edit]
Данный пример базируется на бесплатных сервисах, самостоятельно осуществлять поддержку и сопровождения сервисов не требуется. Оптимально для случаев, когда бюджет ограничен либо хочется просто поэспериментировать.
Регистрация домена[edit]
Бесплатно можно зарегистрировать домен в зона типа PUBLIC и GEO. В РФ поддержку доменов типа GEO (но не всех) осуществляет ООО Релком. Кроме того, РосНИИРОС всем желающим бесплатно регистрирует домены "третьего уровня" в зонах pp.ru, org.ru, net.ru.
Есть различные сервисы, предлагающие бесплатный DNS-хостинг. Это xname.org (нет возможности редактировать SRV), FreeDNS и другие.
ДНС-сервер[edit]
Если у вас нет собственного сервера, а платить провайдеру за услугу ДНС вы не хотите, то можно воспользоваться одним из бесплатных сервисов. Например, бесплатный DNS-хостинг[1] есть у Yandex, а также есть западные сервисы, например, xname.org.
XMPP-сервер[edit]
Услуги XMPP-хостинга также предоставляют многие сервис и хостинг-провайдеры:
- Google в рамках своего бесплатного (по крайней мере по состоянию на январь 2009 года) сервиса Google Apps
- 1gb.ru (описание);
- spaceweb.ru (описание).
Возможна самостоятельная установка и настройка XMPP-сервера на виртуальных серверах (VPS).
Проверка[edit]
Для проверки измененной зоны можно воспользоваться командой DIG (ОС семейства Unix):
dig -t srv _xmpp-server._tcp.jrudevels.org
Для краткого вывода:
dig +short SRV _xmpp-client._tcp.leksey.tushinec.ru
либо командой host (также в юниксах):
host -t srv _xmpp-server._tcp.jrudevels.org
либо командой nslookup (в большинстве ОС, в том числе в Windows, в Linux же эта утилита считается устаревшей):
nslookup -type=srv _xmpp-server._tcp.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. ...часть опущена...
Предупреждение о Google Apps[edit]
На странице помощи google указано, что нужно вносить записи IN SRV для имён _xmpp-server._tcp.domain.tld. и для _jabber._tcp.domain.tld., но не указана необходимость записей _xmpp-client._tcp.domain.tld. Если не указать записи для _xmpp-client, это не позволит использовать некоторые клиенты jabber.
Примечания:
Ссылки[edit]
- Обсуждение на форуме