サーバーがxmppプロトコルをサポートしているかどうか、つまりxmpp-serverがこのドメインで実行されているかどうかを確認する方法を探しています。
たぶん特別なDNSチェックかそのようなもの?
非SSLJabberの主なデフォルトポートは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サーバーの場合、次のコマンドでテストします:-
openssl s_client -starttls xmpp -connect suspectedserver:5222
XMPPサーバーがother XMPPサーバーと連携するように構成されている場合、ドメインのDNSにSRVレコードがある可能性があります。例えば:
$ 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.
スタンドアロンサイトではDNSにこのデータがない可能性が高いため、これはXMPPサーバーを見つけるための決定的な方法ではありません。ただし、データは公開されており、ポートプローブを必要としないため、これはJabberサーバーを見つけるためのnicer方法です。 RFC 3920(XMPPプロトコル定義)でも定義されています。
明確なチェック方法はありません。 Nmapはある程度の兆候を示しますが、他の人のサーバーに対して実行することには、倫理的で、場合によっては法的な問題があります。
your networkの場合は、サブネット全体でSpiceworksのようなものを実行して、XMPPサーバーを実行しているシステムを探すことができます。
これがフェデレーションサーバー(Startrekではなく)の場合は、説明されているようにSRV DNSエントリを確認できます ここ 。