Как проверить, поддерживает ли сервер протокол xmpp?
Я ищу способ проверить, поддерживает ли сервер протокол xmpp, т.е. xmpp-сервер работает в этом домене.
Может быть, специальная проверка DNS или что-то подобное?
5 ответов
Основным портом по умолчанию для jabber без SSL является 5222. Вы можете плюнуть на него xml, используя telnet, и посмотреть, получите ли вы ответ XML:
telnet suspectedServer 5222
<?xml version="1.0"?> <stream:stream to="foo.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
Это, конечно, может быть написано для нескольких серверов и нескольких портов, возможно, проще для сценария с помощью nc (netcat).
Для серверов XMPP, которым требуются соединения TLS, протестируйте с помощью: -
openssl s_client -starttls xmpp -connect suspectedserver:5222
Если сервер XMPP настроен для работы с другими серверами XMPP, возможно, домен будет иметь запись SRV в DNS. Например:
$ dig _xmpp-server._tcp.google.com srv +short
20 0 5269 xmpp-server1.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server2.l.google.com.
Это ни в коем случае не является окончательным способом поиска серверов XMPP, так как автономные сайты, скорее всего, не имеют этих данных в DNS. Однако это лучший способ найти jabber-сервер, поскольку данные публикуются и не требуют проверки порта. Это также определено в RFC 3920 (определение протокола XMPP).
Если это ваша сеть, вы можете попробовать запустить что-то вроде Spiceworks в подсети, чтобы найти системы, на которых работает сервер XMPP.
Там нет определенного способа проверки. Nmap даст вам некоторое представление, но возникнет некоторая этическая и, возможно, юридическая проблема с запуском его на чужих серверах.
Если это сервер федерации (нет, не Startrek), то вы можете проверить записи DNS SRV, как описано здесь.