如何检查一个服务器是否支持xmpp协议?

我正在寻找一种方法来检查服务器是否支持xmpp协议,即xmpp-server正在这个域上运行。

也许特殊的DNS检查或类似的东西?

非SSL jabber的主要默认端口是5222.你可以使用telnet吐出一些xml,看看你是否得到一个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)编写脚本。

对于需要TLS连接的XMPP服务器,请使用以下项进行testing: –

 openssl s_client -starttls xmpp -connect suspectedserver:5222 

如果将XMPP服务器configuration为与其他 XMPP服务器一起使用,则该域可能在DNS中具有SRVlogging。 例如:

 $ 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. 

这绝不是findXMPP服务器的明确方式,因为独立站点很可能在DNS中没有这些数据。 但是,find一个jabber服务器是一个更好的方法,因为数据已经发布,并且不需要任何端口探测。 它也在RFC 3920(XMPP协议定义)中定义。

没有确定的检查方法。 Nmap会给你一些指示,但是在其他人的服务器上运行它会有一些道德的,可能是合法的问题。

如果是您的networking,您可以尝试在子网上运行Spiceworks之类的软件,以查找运行XMPP服务器的系统。

如果这是一个联合服务器(不,不是Startrek),那么您可以检查SRV DNS条目, 这里解释。