Połączenia s2s (server to server) w Jabberd (w OpenBSD)

English version

Skonfigurowanie komunikacji serwer-z-serwerem w oficjalnym serwerze Jabbera jabberd 1.4.2 może być trudnym zadaniem - w Przewodniku administratoraJabberd jest mało lub nawet brak informacji o najważniejszych zagadnieniach.
Oto, do jakich wniosków udało mi się dojść kiedy konfigurowałem połączenia s2s jabberd działającego pod kontrolą OpenBSD 3.2:

Potrzebne porty IP

Następujące porty muszą być odblokowane na poziomie filtra pakietów (o ile takiego używasz - ja mam filtr, który przyjmuje, że każdy pakiet jest odrzucany, chyba, że spełnia określone warunki):

  • UDP 5222 (przyporządkowany przez IANA protokołowi jabber-client)
  • TCP 5222 (przyporządkowany przez IANA protokołowi jabber-client)
  • UDP 5269 (przyporządkowany przez IANA protokołowi jabber-server dla połączeń serwer-do-serwera)
  • TCP 5269 (przyporządkowany przez IANA protokołowi jabber-server dla połączeń serwer-do-serwera)
  • TCP 5223 (dla połączeń SSL)
  • UDP 5223 (na wszelki wypadek, prawdopodobnie niepotrzebne)
  • UDP 7000 (przykładowa konfiguracja s2s w jabber.xml używa tego portu z jakiegoś nie znanego mi powodu)
W formacie filtra pakietów OpenBSD wyglądałoby to następująco:
  pass in quick on $int_if proto udp from any to any port = 5222 keep state
pass in quick on $int_if proto tcp from any to any port = 5222 flags S/SA keep state
pass in quick on $int_if proto udp from any to any port = 5269 keep state
pass in quick on $int_if proto tcp from any to any port = 5269 flags S/SA keep state
pass in quick on $int_if proto udp from any to any port = 5223 keep state
pass in quick on $int_if proto tcp from any to any port = 5223 flags S/SA keep state
pass in quick on $int_if proto udp from any to any port = 7000 keep state

Rekordy SRV w DNS, odpowiednia biblioteka PTH

Należy również skompilować jabberd zlinkowany z biblioteką GNU PTH 1.4.0 (nie 1.4.1), jest ona dołączona w pakiecie źródeł jabberd-1.4.2 i używana jeśli biblioteki pth brak w twoim systemie.

Następnie musisz utworzyć rekordy SRV dla usług Jabbera w twojej domenie. Używam pakietu DJBDNS Daniela J. Bernsteina (serwer tinydns) ze względów bezpieczeństwa, więc w moim przypadku zadanie było trochę bardziej skomplikowane.

Wykorzystałem tinydns Record Maker Roba Mayoff'a by wygenerować poprawne definicje rekordów SRV w formacie DJBDNS.

Dla mojego servera jabber na office.altkom.com.pl, użyłem następujących parametrów w generatorze rekordów SRV:

Parametry dla usługi 'jabber-server'"
Service_jabber-server._tcp.office.altkom.com.pl
Priority10
Weight0
Port5269
Targetoffice.altkom.com.pl
Parametry dla usługi 'jabber' (to właściwie usługa jabber-server pod skróconą nazwą)"
Service_jabber._tcp.office.altkom.com.pl
Priority10
Weight0
Port5269
Targetoffice.altkom.com.pl
>Parametry dla usługi 'jabber-client'"
Service_jabber-client._tcp.office.altkom.com.pl
Priority10
Weight0
Port5222
Targetoffice.altkom.com.pl

Dało to w wyniku następujące rekordy w formacie serwera tinydns z pakietu DJBDNS:

  :_jabber._tcp.office.altkom.com.pl:33:\000\012\000\000\024\225\006office\006altkom\003com\002pl\000
:_jabber-server._tcp.office.altkom.com.pl:33:\000\012\000\000\024\225\006office\006altkom\003com\002pl\000
:_jabber-client._tcp.office.altkom.com.pl:33:\000\012\000\000\024\146\006office\006altkom\003com\002pl\000

Umieściłem je w moim pliku danych (data) tinydns-a, skompilowałem i od tej pory połączenia serwer-do-serwera mojego demona jabberd działały poprawnie.

Dla przetestowania tych rekordów SRV wykorzystałem narzędzie dig:

$ dig @192.168.254.205 _jabber-client._tcp.office.altkom.com.pl srv +noall +answer

; <<>> DiG 9.2.1 <<>> @192.168.254.205 _jabber-client._tcp.office.altkom.com.pl srv +noall +answer
;; global options: printcmd
_jabber-client._tcp.office.altkom.com.pl. 86400 IN SRV 10 0 5222 office.altkom.com.pl.

$ dig _jabber-client._tcp.office.altkom.com.pl srv +noall +answer

; <<>> DiG 9.2.1 <<>> _jabber-client._tcp.office.altkom.com.pl srv +noall +answer
;; global options: printcmd
_jabber-client._tcp.office.altkom.com.pl. 86400 IN SRV 10 0 5222 office.altkom.com.pl.