На OpenFire, почему запросы друзей на авторизацию не приходят?

575
Craig Silver

В Ubuntu 16.04 (DigitalOcean) я установил OpenFire 4.2.1. До сих пор я еще не настроил SSL, но смог:

  1. Подключение к веб-консоли администратора из дома
  2. Создайте несколько пользователей
  3. Используйте клиент Miranda IM Windows и клиент Pidgin для Windows, чтобы подключиться к серверу и получить статус «онлайн»
  4. Найти других пользователей и добавить их в мой список контактов / друзей

Что я не могу сделать, так это получать запросы авторизации между пользователями.

Я побежал:

tcpdump -n -i eth0 'tcp and (port 5222 or port 5269 or port 5280)'

Затем я отправил запрос на повторный запрос авторизации от одного собеседника к другому и получил такой вывод:

23:09:12.295932 IP .5222 > .56898: Flags [.], ack 158, win 191, length 0 23:09:12.358987 IP .5222 > .56898: Flags [P.], seq 241:481, ack 158, win 191, length 240 23:09:12.492207 IP .56898 > .5222: Flags [.], ack 481, win 255, length 0 

Похоже, сервер получает запрос на авторизацию, да? Есть ли следующий шаг (ы) для диагностики проблемы? Я что-то упустил?

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

Дайте мне знать, если я опускаю важную информацию, которая поможет вам помочь мне.

1

1 ответ на вопрос

0
Craig Silver

Ну, я сделал кучу вещей, и теперь это работает, так что это один из тех случаев, когда неизвестно, какой из них это исправить, но для блага других, вот что я сделал:

  1. Добавить записи SRV в мой DNS

В административной веб-консоли OpenFire я не заметил предупреждения в разделе Сервер | Диспетчер серверов | Информация о сервере: «DNS-записи SRV для этого хоста не найдены». Под этим было много полезной информации о потребности XMPP в записях SRV, о которой я никогда раньше не слышал. В двух словах, это механизм для пересылки трафика из одного домена в другой, который иногда требуется XMPP (когда сервер DNS и XMPP, очевидно, не размещены на одном сервере). Несколько вещей, на которые следует обратить внимание: убедитесь, что вы правильно указали формат записи SRV, потому что он неочевиден; используя Netfirms в качестве моего домена и поставщика DNS, мне пришлось обратиться в их службу технической поддержки для добавления записей SRV, потому что в Netfirms нет способа управлять ими.

  1. На всех клиентах XMPP я изменил информацию об учетной записи.

В частности, для информации об имени пользователя вместо xmpp.mydomain.com я использовал mydomain.com. Например, для имени пользователя joe.blow я ввел joe.blow@mydomain.com вместо joe.blow@xmpp.mydomain.com. Это не было моим предпочтением, но я подозреваю, что именно это заставило его работать.

До сегодняшнего дня, я до сих пор путают о целых свойствах XMPP сервера: XMPP Domain Nameпротив Server Host Name (FQDN). Зачем это нужно обоим? Почему нельзя просто использовать полное доменное имя?

Я знаю, что это не вопрос, но ...

Еще один совет по OpenFire, на случай, если кто-то изо всех сил попытается получить безопасный доступ к вашему административному веб-порталу. Если вы используете Let's Encrypt для своих сертификатов и вам повезло, что вы также используете Apache на том же сервере, вместо того, чтобы пытаться заставить OF принять сертификат xmpp.mydomain.com, чтобы вы могли получить доступ к порталу администратора через https: //xmpp.mydomain.com, вы можете вместо этого использовать Apache в качестве обратного прокси. Намного проще встать и автоматически продлить веб-сервер Apache с сертификатом Let's Encrypt - по крайней мере, это то, что я нашел.

Ваш файл Apache conf может выглядеть следующим образом (включая перенаправление для http на https):

<IfModule mod_ssl.c> <IfModule mod_proxy.c>  <VirtualHost *:443> ServerName xmpp.mydomain.com  ServerAdmin webmaster@localhost DocumentRoot /var/www/xmpp  ErrorLog $/error.log CustomLog $/access.log combined  SSLEngine On SSLCertificateFile /etc/letsencrypt/live/xmpp.mydomain.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/xmpp.mydomain.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateChainFile /etc/letsencrypt/live/xmpp.mydomain.com/chain.pem  ProxyPreserveHost On ProxyPass / http://127.0.0.1:9090/ ProxyPassReverse / http://127.0.0.1:9090/  </VirtualHost>  </IfModule> </IfModule>  <VirtualHost *:80>  ServerName xmpp.mydomain.com  ServerAdmin webmaster@localhost DocumentRoot /var/www/xmpp  ErrorLog $/error.log CustomLog $/access.log combined  RewriteEngine On RewriteCond % off RewriteRule (.*) https: //%% [R,L]  </VirtualHost> 
ПРИМЕЧАНИЕ. Сайт не принимает мой RewriteRule [на том основании, что он был обнаружен как сокращенная ссылка] (https://meta.stackexchange.com/questions/64450/ban-url-shorening-services), поэтому я добавил пробел в RewriteRule, после `https:`. Craig Silver 6 лет назад 0