На OpenFire, почему запросы друзей на авторизацию не проходят?
В Ubuntu 16.04 (DigitalOcean) я установил OpenFire 4.2.1. До сих пор я еще не настроил SSL, но смог:
- Подключитесь к веб-консоли администратора из дома
- Создайте несколько пользователей
- Используйте Miranda IM Windows client и Pidgin Windows client для подключения к серверу и получения статуса "онлайн"
- Найти других пользователей и добавить их в мой список контактов / друзей
Что я не могу сделать, так это получать запросы авторизации между пользователями.
Я побежал:
tcpdump -n -i eth0 'tcp and (port 5222 or port 5269 or port 5280)'
Затем я отправил запрос "повторный запрос на авторизацию" от одного собеседника другому и получил следующий вывод:
23:09:12.295932 IP {IP-of-server}.5222 > {IP-of-requester}.56898: Flags [.], ack 158, win 191, length 0
23:09:12.358987 IP {IP-of-server}.5222 > {IP-of-requester}.56898: Flags [P.], seq 241:481, ack 158, win 191, length 240
23:09:12.492207 IP {IP-of-requester}.56898 > {IP-of-server}.5222: Flags [.], ack 481, win 255, length 0
Похоже, сервер получает запрос на авторизацию, да? Есть ли следующий шаг (ы) для диагностики проблемы? Я что-то упустил?
Мой сервер не сильно пострадал, поэтому я рискнул и ненадолго отключил его брандмауэр и повторил попытку отправки запроса на авторизацию, но, похоже, получатель не ответил.
Дайте мне знать, если я опускаю важную информацию, которая поможет вам помочь мне.
1 ответ
Ну, я сделал кучу вещей, и теперь это работает, так что это один из тех случаев, когда неизвестно, какой из них исправил это, но в интересах других, вот что я сделал:
- Добавить записи SRV в мой DNS
В административной веб-консоли OpenFire я не заметил предупреждения в разделе Сервер | Диспетчер серверов | Информация о сервере: "DNS-записи SRV для этого хоста не найдены". Под этим было много полезной информации о потребности XMPP в записях SRV, о которой я никогда раньше не слышал. В двух словах, это механизм пересылки трафика из одного домена в другой, который иногда требуется XMPP (когда сервер DNS и XMPP, очевидно, не размещены на одном сервере). Несколько вещей, на которые следует обратить внимание: убедитесь, что вы правильно указали формат записи SRV, потому что он неочевиден; Используя Netfirms в качестве моего домена и поставщика DNS, мне пришлось обратиться в их службу технической поддержки для добавления записей SRV, поскольку в Netfirms нет способа управлять ими.
- На всех клиентах 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 ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https: //%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>