[ejabberd] mod_proxy65 config

Hi Leute,

ich spiele derzeit mit einem ejabberd Server etwas rum. Nun habe ich [mod_proxy65] aktiviert - funktioniert auch. Ich verstehe nur das System noch nicht zu 100%. Stimmt die folgende Erklärung?

User 1 sendet Datei an User 2

Client von User 1 senden Anfrage an User 2
User 2 nimmt an.

Pidgin Debug-Fenster von User2 (der Empfänger):

(17:02:49) dnsquery: Performing DNS lookup for 192.168.0.122
(17:02:49) dnsquery: IP resolved for 192.168.0.122
(17:02:49) proxy: Attempting connection to 192.168.0.122
(17:02:49) proxy: Connecting to 192.168.0.122:62684 with no proxy
(17:02:49) proxy: Connection in progress

Pidgin versucht die Verbindung direkt aufzubauen - scheitert da NAT aktiv und Port nicht freigegeben.

(17:03:05) jabber: Streamhost connection timeout of 15 seconds exceeded.
(17:03:05) jabber: si connection failed, jid was User2@my.dyn.dns, host was 192.168.0.122, error was Timeout Exceeded.

Nun nutzt er den im Client hinterlegten "Proxy für Dateiübertragungen" und versucht es damit:

(17:03:05) dnsquery: Performing DNS lookup for my.dyn.dns
(17:03:05) dnsquery: IP resolved for my.dyn.dns
(17:03:05) proxy: Attempting connection to 80.79.78.0
(17:03:05) proxy: Connecting to my.dyn.dns:7777 with no proxy
(17:03:05) proxy: Connection in progress
(17:03:05) proxy: Connecting to my.dyn.dns:7777.
(17:03:05) proxy: Connected to my.dyn.dns:7777.
(17:03:05) proxy: Connect Data is 05710D98
(17:03:05) proxy: Initiating SOCKS5 negotiation.
(17:03:05) proxy: Connecting to 601ebd8d79ebe5addb6c2bd79dbe0d54309026b9:0 via my.dyn.dns:7777 using SOCKS5
(17:03:05) socks5 proxy: Connected.

Er hat eine Verbindung hergestellt und schickt die Daten über den "Proxy für Dateiübertragungen." Richtig?

Pidgin Debug-Fenster (komplett):
Code:
Pidgin Debug Log : 10.12.2013 17:03:26
(17:02:47) jabber: Sending (ssl) (User1@my.dyn.dns): <iq type='result' to='User2@my.dyn.dns' id='purplee8444d41'><si xmlns='http://jabber.org/protocol/si'><feature xmlns='http://jabber.org/protocol/feature-neg'><x xmlns='jabber:x:data' type='submit'><field var='stream-method'><value>http://jabber.org/protocol/bytestreams</value></field></x></feature></si></iq>
(17:02:49) jabber: Recv (ssl)(344): <iq from='User2@my.dyn.dns' to='User1@my.dyn.dns' type='set' id='purplee8444d44'><query xmlns='http://jabber.org/protocol/bytestreams' sid='purplee8444d42'><streamhost jid='User2@my.dyn.dns' host='192.168.0.122' port='62684'/><streamhost jid='proxymy.dyn.dns' host='my.dyn.dns' port='7777'/></query></iq>
(17:02:49) dnsquery: Performing DNS lookup for 192.168.0.122
(17:02:49) dnsquery: IP resolved for 192.168.0.122
(17:02:49) proxy: Attempting connection to 192.168.0.122
(17:02:49) proxy: Connecting to 192.168.0.122:62684 with no proxy
(17:02:49) proxy: Connection in progress
(17:03:05) jabber: Streamhost connection timeout of 15 seconds exceeded.
(17:03:05) jabber: si connection failed, jid was User2@my.dyn.dns, host was 192.168.0.122, error was Timeout Exceeded.
(17:03:05) dnsquery: Performing DNS lookup for my.dyn.dns
(17:03:05) dnsquery: IP resolved for my.dyn.dns
(17:03:05) proxy: Attempting connection to 80.79.78.0
(17:03:05) proxy: Connecting to my.dyn.dns:7777 with no proxy
(17:03:05) proxy: Connection in progress
(17:03:05) proxy: Connecting to my.dyn.dns:7777.
(17:03:05) proxy: Connected to my.dyn.dns:7777.
(17:03:05) proxy: Connect Data is 05710D98
(17:03:05) proxy: Initiating SOCKS5 negotiation.
(17:03:05) proxy: Connecting to 601ebd8d79ebe5addb6c2bd79dbe0d54309026b9:0 via my.dyn.dns:7777 using SOCKS5
(17:03:05) socks5 proxy: Connected.
(17:03:05) socks5 proxy: Able to read.
(17:03:05) s5: reallocing from 5 to 45
Zweite Frage:

mod_proxy65 config
Code:
[{mod_proxy65,  [
{hostname, ["my.dyn.dns"]},
{ip, {0,0,0,0}}]},
Nun eine Frage zur Konfiguration. Wenn ich den [IP] Tag weglasse, dann läuft der "Socks5 Bitstream" auf 127.0.1.1, wie in der /etc/host angegeben. Der Host ist von außen nicht erreichbar.

Wenn ich den IP Tag mit "127.0.0.1) fütter, so ist dieser auch von außen nicht erreichbar. Nur wenn ich den IP Tag mit (0,0,0,0) einfüge funktioniert es. Wieso ist das so? Ist das unter Linux Standart, dass Dienste die auf allen Interfaces lauschen sollen mit IP "0.0.0.0" laufen müssen?

Der Hostname dient dazu, dass der Client den "Proxy für Dateiübertragungen" richtig auflöst und verbindet. Richtig?

netstat -Nlp
Code:
tcp        0      0 0.0.0.0:7777            0.0.0.0:*               LISTEN      5568/beam
OS: Linux wysar 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/Linux | Raspbian
 
Ich hab zwar relativ lange einen öffentlichen Jabberserver mit ejabberd betrieben, aber das Modul nie verwendet, daher kann ich zum 1. Teil nix sagen.

Wenn ich den IP Tag mit "127.0.0.1) fütter, so ist dieser auch von außen nicht erreichbar. Nur wenn ich den IP Tag mit (0,0,0,0) einfüge funktioniert es. Wieso ist das so? Ist das unter Linux Standart, dass Dienste die auf allen Interfaces lauschen sollen mit IP "0.0.0.0" laufen müssen?
Grundsätzlich kommt "0.0.0.0" aus dem Netzwerkbereich, wo es für "All networks" steht (z.B. beim Routing). Wenn du unter Linux einen Dienst auf der Adresse "0.0.0.0" lauschen lässt, ist es nicht nur über jedes Interface erreichbar, sondern genau genommen über alle IP-Adressen, die konfiguriert sind (für den Fall, dass du mehrere IP-Adressen auf einem Interface konfiguriert hast, ist das ein kleiner Unterschied).

Der Hostname dient dazu, dass der Client den "Proxy für Dateiübertragungen" richtig auflöst und verbindet. Richtig?
Ich vermute es dient (wie beim DNS üblich) der reinen Bequemlichkeit. :)
 
Die Doku von ejabberd ist nicht gerade die beste und vor allem nicht die aktuellste. Das es mit dem IP (0.0.0.0) etwas besonderes auf sich hat, dachte ich mir schon. Ich habe mit dem IP Paramter auch schon alles durchprobiert, aber ich kann kein explizites Netzwerkinterface (eth0) einbinden. Hast du da eine Idee? Meinetwegen auch einen Workaround im OS?
 
Zurück
Oben