Openfire hat ein Problem wenn in der /etc/resolv.conf der Nameserver als IPv6-Localhost eingetragen ist (::1). Der Java-DNS-Client kann die IPv6-Adresse nicht parsen und wirft eine NumberFormatException. Das Ergebnis: Keine S2S-Verbindungen, keine Authentifizierung mit Remote-Servern.
Fehlerbild
Im /var/log/openfire/error.log findet sich:
org.jivesoftware.openfire.session.LocalOutgoingServerSession
- Error authenticating domain with remote server: jabber.ccc.de
java.lang.NumberFormatException: For input string: ":1"
at java.lang.Integer.parseInt(Integer.java:492)
at com.sun.jndi.dns.DnsClient.(DnsClient.java:125)
at org.jivesoftware.openfire.net.DNSUtil.srvLookup(DNSUtil.java:192)
at org.jivesoftware.openfire.session.LocalOutgoingServerSession
.createOutgoingSession(LocalOutgoingServerSession.java:270)
Java versucht ::1 als Portnummer zu parsen und scheitert an dem Doppelpunkt. Der Bug steckt in Javas DnsClient-Klasse die IPv6-Adressen in der resolv.conf nicht korrekt behandelt.
Lösung
In der /etc/resolv.conf den Nameserver von ::1 auf 127.0.0.1 umstellen:
# vorher nameserver ::1 # nachher nameserver 127.0.0.1
Openfire neu starten. Der lokale DNS-Resolver lauscht in der Regel auf beiden Adressen, die Namensauflösung funktioniert über IPv4 genauso. Neuere Java-Versionen haben den Bug behoben, aber wer eine ältere Version nutzt oder nicht updaten kann, ist mit dem IPv4-Workaround auf der sicheren Seite.
Weitere Openfire-Probleme mit S2S-Verbindungen: 404 Remote Server Not Found behandelt fehlende Intermediate-Zertifikate.
Fragen? Einfach melden.
Schreibe einen Kommentar