Проблемы при подключении к Jabber

Материал из Мир Jabber
Перейти к навигацииПерейти к поиску

К сожалению, не всегда удается подключиться к Jabber серверу без настройки клиента. Сначала необходимо определить, что мешает подключению.

Локальные проблемы

Для определения характера проблемы надо выполнить следующие действия:

  • Windows:
    • Запустить консоль, щелкнув по кнопке Пуск (Start), затем выбрав Все программы->Стандартные->Командная строка.
    • В открывшемся окне наберите telnet имя_сервера 5222 и нажмите Enter. Пример:
telnet jabber.ru 5222
  • Unix-like:
    • Запустить консоль, используя средства Вашего DE/WM. Если Вы не знаете, как это сделать - нажмите Ctrl-Alt-F1 и войдите от своего имени.
    • В открывшемся окне наберите telnet имя_сервера 5222 и нажмите Enter. Пример:
telnet jabber.ru 5222

В Windows после этих действия окно должно стать полностью черным и только на верхней строке будет мигать курсор. Далее нажмите любую букву, но на экране вы ее не увидите (таковы особенности работы Telnet-клиента в Windows), а затем клавишу Enter. Появится текст, похожий на приведённый ниже.

<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'
id='none' from='jabber.ru' version='1.0'><stream:error><xml-not-well-formed
xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>
Connection to host lost.

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

Если же на экране отображается около минуты

Connecting To jabber.ru...

а затем

Could not open a connection to host on port 5222 : Connect failed

Это значит, что действительно по какой-то причине нет соединения с сервером. Попробуйте выполнить тоже самое, указав другой сервер. Например, telnet jabber.org 5222.

В случае неудачи вам следует поразмыслить, какие настройки вашей операционной системы могут препятствовать соединению на 5222 порт.
Это может быть следствие работы программного брандмауэера (firewall), в правилах которого указано запрещать соединения с интернет определенным программам (тому же Telnet).

Удаленные проблемы

Если Вы точно уверены, что брандмауэр не запрещает Telnet доступ в Интернет, но соединения с сервером все ещё нет, то проблема связана со способом выхода в сеть. Чаще всего подобная проблема возникает при работе из сети предприятия. Возможные проблемы и способы их решения можно узнать ниже.

Прокси

Пример настройки прокси в Psi

Довольно распространен способ выхода в Интернет через прокси. В первую очередь необходимо узнать настройки прокси. Самый простой вариант - посмотреть настройки браузера:

  • в случае с Firefox они располагаются на странице "Дополнительно" настроек, вкладке "Сеть" в разделе "Соединение"
  • в случае Internet Explorer 6 - "Сервис" - "Свойства обозревателя" - "Подключения" - "Настройка LAN" - "Прокси-сервер" - "Дополнительно"

Необходимы три параметра: тип, адрес и порт. Откройте настройки Вашего Jabber-клиента в разделе прокси (в случае Psi это "Меню"->"Аккаунты"->"Изменить"->"Соединение"->"Прокси-сервер"->"Изменить"-"Создать"), впишите туда адрес прокси-сервера и порт. Не забывайте правильно указать тип. Пример настройки можно увидеть справа, однако параметры, указанные на изображении, могут не совпадать с Вашими параметрами. После выполнения настройки можно подключаться.

Если ваш клиент не поддерживает работу через прокси-сервер

или с подключением какие-либо проблемы, можно создать туннель через прокси, например с помощью утилиты socat (есть практически в любом дистрибутиве Linux, доступна в Macports и бинарные сборки для Windows/Cygwin):

<code=bash>./socat TCP4-LISTEN:13666,reuseaddr,fork PROXY:your-proxy:allports.jabber.ru:443,proxyport=8080

В данном примере мы создаем туннель через прокси-сервер с адресом your-proxy:8080 с порта 13666 локальной машины на 443-й порт сервера allports.jabber.ru. Теперь в настройках аккаунта указываем нашему клиенту сервер подключения - localhost(127.0.0.1) и порт 13666.

Блокирование портов

Иногда стандартные порты для соединения с Jabber сервером (5222 и 5223) закрыты. В этом случае можно попробовать использовать нестандартный порт. Не все сервера предоставляют доступ по нестандартным портам. Если Вы нашли свой сервер в этой таблице - введите настройках своего клиента указанные там хост (адрес для подключения) и один из перечисленных нестандартных портов. Если у вашего сервера есть несколько нестандартных портов, то сначала надо попробовать порт 443, при этом SSL должно быть включено. Как правило, этот порт открыт. Если этот порт закрыт, то нужно пробовать другие из списка.

Не нужно путать хост (адрес для подключения) и адрес сервера из JID. Адрес сервера из JID не зависит ни от хоста, ни от способа подключения. По этой причине JID'ы вида "someuser@allports.jabber.ru" не являются корректными и не следует его писать в соответствующее поле в настройках клиента. В данном примере в поле JID необходимо записать "someuser@jabber.ru", а "allports.jabber.ru" следует записать в поле "хост".

HTTP Polling/Binding

Иногда выход в сеть разрешается только по протоколу HTTP. В таком случае необходимо использовать HTTP Polling/Binding. Как правило, настройки HTTP Polling располагаются там же, где и настройки прокси. В случае с Psi специально выделен тип HTTP Polling. В этом случае нужно узнать так называемый "URL для поллинга". Его можно посмотреть в этой таблице. Остальные поля нужно заполнять только в том случае, если используется прокси (см. выше).

Веб-клиент

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