[gelöst] Freetz-Config-GUI (Port 81) nach außen freigeben

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
Hallo,

auch nach der Lektüre etlicher Threads zu Themen wie VirtualIP, Portfreigaben, ar7.cfg u.ä. habe ich immer noch nicht geschnallt, wie ich meine Freetz-Konfigurationsoberfläche (Port 81) nach außen freigebe.

Auf meiner FB 7170 laufen u.a. virtualip und dropbear. Mittels virtualip habe ich 192.168.178.253 (255.255.255.0, interface: eth0:1) als virtuelle IP festgelegt. Außerdem habe ich via AVM-FB-Oberfläche eine Portweiterleitung eingestellt, so dass ich mittels ssh von außen (hinter einem Proxy) auf meine Box komme. Die ar7.cfg sieht an der Stelle so aus (dropbear lauscht auf der FB auf Port 22):
Code:
[...]
tcp 0.0.0.0:443 192.168.178.253:22 0 # SSH-Tunnel;
Wie muss denn nun die Portweiterleitung korrekt aussehen, damit der FB-Port 81 (für das Freetz-GUI) nach außen freigegeben wird?
Ich habe hinter dem Proxy nur die Ports 80 und 443 offen - bitte berücksichtigen!
Danke für Eure geduldige Hilfe und für's Augenöffnen...

Edit - die Lösung (siehe auch im Freetz-Wiki zu dropbear):
Mit dem folgenden von McNetic weiter unten beschrieben Eintrag unter Tunnels klappt es: L1081 192.168.178.253:81
Weitere Tunnel-Einträge sind nicht nötig (bzw. waren bei mir störend - und wurden entfernt).
Und dann im Browser einfach aufrufen: localhost:1081
Damit habe ich einen Fernzugriff auf das Freetz-GUI.

Analog lässt sich der Fernzugriff auf das original AVM-WebGUI bewerkstelligen:
L1080 192.168.178.253:80
Und dann im Browser einfach aufrufen: localhost:1080

Damit der Zugriff auf die AVM-Seite (Port 80) funktioniert, muss man allerdings noch den Referer unterbinden.
Unter Firefox ist dazu der Wert für network.http.sendRefererHeader unter about:config auf 0 (Null) zu setzen.
 
Zuletzt bearbeitet:

McNetic

Mitglied
Mitglied seit
7 Feb 2007
Beiträge
674
Punkte für Reaktionen
0
Punkte
16
Du kannst nicht zwei Dienste auf dem gleichen Port laufen lassen (zumindest nicht allgemein zugänglich; mit iptables wärs möglich abhängig von der Quelladresse auf andere Ports weiterzuleiten, aber das willst Du wahrscheinlich nicht, und ich weiss auch nicht, ob es mit dem dsld funktionieren würde).
 

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
Hallo McNetic,

habe ich Dich richtig verstanden, dass man ohne iptables mit nur einem offenen Port 443 (den Port 80 kann ich nicht wirklich dazu verwenden) nicht mehrere Dienste wie z.B. 1. ssh und 2. http laufen lassen kann?

Hmm, wenn es mit iptables tatsächlich ginge, würde ich mich da reinlesen wollen. Aber die Quelladresse ist doch immer dieselbe, wenn ich hinter dem Proxy bin. Wie lösen das denn andere Leute hier?

Also so wird es wohl nicht gehen, oder? ar7.cfg:
Code:
forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060",
      "tcp 0.0.0.0:443 192.168.178.253:81 0 # Freetz-Konfiguration",
      "tcp 0.0.0.0:443 192.168.178.253:22 0 # SSH-Tunnel";
Die 1. Zeile war schon drin, spielt hier keine Rolle.
Die 3. Zeile (ssh) funktioniert einwandfrei.
Die 2. Zeile??


EDIT:
Seltsam, plötzlich ist die Verbindung weg und ein erneutes ssh Login klappt nicht. Nach ca. 30 Sek. "Server unexpectedly closed network connection" (sagt PuTTY).

Außerdem:
Wieso erscheinen die o.g. Zeilen in /var/flash/ar7.cfg nun mit "-Zeichen und Komma und Semikolon hinter den "-Zeichen? Ist das so normal?
Falls ja, bricht die Verbindung wohl aus dem oben von McNetic genannten Grund ab:
Parallele Dienste auf demselben Port klappen einfach nicht. Oder ist es etwas anderes?

Es wundert mich nur, dass zwischen meinem Beitrag eins drüber und diesem hier es eben 1x funktioniert hat, sonst hätte ich auch gar nicht die ar7.cfg kopieren und hier einfügen können.
 
Zuletzt bearbeitet:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
@ao
Du kannst nicht Verbindungen für einen Port an zwei Ziele weiterleiten.
Die Portweiterleitung bedeutet folgendes:
Jede TCP-Verbindung wird durch die IP-Adressen und Ports der beiden Seiten definiert. Die IP-Adressen der beiden Seiten sind fest, so daß nur noch die Ports übrig bleiben, um verschiedenen Verbindungen zu unterscheiden.
Wenn eine neue Verbindung aufgebaut wird, kann diese in Abhängigkeit vom Ziel-Port weitergeleitet werden.
Wenn in Deinem Fall eine neue Verbindung auf Port 443 ankommt, ist das die einzige Information, die die Box zu diesem Zeitpunkt hat. Woher soll sie jetzt wissen, ob diese Verbindung auf Port 81 oder auf Port 22 weitergeleitet werden soll? und beide Ports gleichzeitig geht auch nicht.

Die einzige andere Information, die zur Verfügung steht, ist IP-Adresse und Port der Gegenstelle (und die eigene IP-Adresse, aber die bringt eien nicht weiter). Als Quell-Port wird von der Gegenstelle ein gerade freier Port ausgewählt. diese Information hilft auch nicht weiter. Es bliebe also noch die von McNetic angedeutete Möglichkeit, in Abhängigkeit der IP-Adresse der Gegenstelle die Verbindung weiterzuleiten. Das geht aber nur, wenn Verbindungen für verschiedenen Ports auch von verschiedenen IP-Adressen kommen und diese auch noch vorher bekannt sind, also kein DynDNS, oder noch mehr Klimmzüge.

Für Dein konkretes Problem könnte ein SSH-Tunnel die Lösung sein.
 

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
Ja, einen ssh Tunnel nutze ich. Hatte ich das oben evtl. nicht richtig formuliert? Der Tunnel geht vom Port 443 an meine Box an Port 22.
Über diesen Tunnel würde ich dann gerne an meine Freetz-Oberfläche (ggf. auch an die von AVM).
 

McNetic

Mitglied
Mitglied seit
7 Feb 2007
Beiträge
674
Punkte für Reaktionen
0
Punkte
16
Das was Du meinst, ist kein SSH-Tunnel sondern eine Portweiterleitung des Ports 443 auf 22. Das hat mit den dahinterliegenden Diensten erstmal gar nix zu tun.
Wenn Du aber auf Port 443 eine SSH-Verbindung aufbaust, dann kannst Du in Putty unter Connection->SSH->Tunnels einen SSH-Tunnel einrichten. Dort gibts Du dann z.B. an daß der 'Source Port' (unten lokal aktivieren) 1081 auf Destination 192.168.178.253:81 weitergeleitet wird. Dann kannst Du auf localhost:1081 verbinden und diese Verbindung wird durch den SSH-Tunnel auf die Fritzbox weitergeleitet.
 

hermann72pb

IPPF-Promi
Mitglied seit
6 Nov 2005
Beiträge
3,657
Punkte für Reaktionen
8
Punkte
38
ao, ich würde dir dafür matrixtunnel empfehlen. Mit dem kriegst du sogar keine referer-Probleme. Paket ist wirklich super-klein (nur etwa 40kB im Image) und du brauchst kein Putty. Sonst wie im Forum irgendwo bereits beschrieben wurde in Putty eine Weiterleitung (Tunnel) einrichten oder Putty sogar als Proxy benutzen (was bei mir nicht geklapt hat).

Matrixtunnel ist aber etwas lahm, zumindest am Anfang der Vebindung.

MfG
 

McNetic

Mitglied
Mitglied seit
7 Feb 2007
Beiträge
674
Punkte für Reaktionen
0
Punkte
16
1.) Er verwendet doch eh putty, oder?

2.) Jede andere sinnvolle SSH-Implementierung kann auch Tunnel erstellen.

3.) Kann man mit matrixtunnel mehrere Tunnel auf unterschiedliche Anwendungen über einen Port tunneln?
 

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
Hi Ihr Zwei,
ich habe mich wohl wirklich blöd ausgedrückt, sorry.


Also, ich nutze in der Tat PuTTY mit SSH-Tunnel: L443 127.0.0.1:443
D.h. 127.0.0.1 ist die Adresse des NTLM Authorization Proxy Servers (ebenfalls in PuTTY eingetragen), und ich verwende den offenen Port 443, um die ssh Session mittels PuTTY zum Port 443 meiner FB zu leiten - auf der FB über das virtuelle Interface 192.168.178.253 mit Port 443, welcher durch eine FB-interne Portweiterleitung auf Port 22 gemappt ist (alternativ hätte ich dropbear auch gleich auf Port 443 lauschen lassen können). So weit klappt das auch ganz gut, und sicher dürfte es ja auch sein.

Nun möchte ich eben auch Zugriff auf mein Freetz-GUI haben (auch mittels ssh gesichert und daher geschicktermaßen über den o.g. SSH-Tunnel). Das ist doch so vom Prinzip her korrekt, oder?

Edit:
Es scheint dabei aber ein Problem zu geben:
Wenn ich nun wie oben vorgeschlagen in PuTTY folgende 2. Regel unter Tunnels eintrage:
L1081 192.168.178.253:81
... kommt kein Login-Prompt im session Fenster, und nach ca. 1 Minute wird die Verbindung abgebrochen mit der Meldung "Server unexpectedly closed network connection".
D.h. das Tunneln von Port 81 über den SSH-Tunnel scheint damit nicht zu funktionieren.
 
Zuletzt bearbeitet:

McNetic

Mitglied
Mitglied seit
7 Feb 2007
Beiträge
674
Punkte für Reaktionen
0
Punkte
16
:confused:


Jetzt versteh ich nur noch Bahnhof.

Aaaalso ganz langsam, das komplette Szenario. Wo sitzt Du, wo ist die Firewall, wie bekommst Du mit Putty Deine Verbindung zur Box?

Tatsache ist: Wenn Du mit Putty eine Verbindung zur Box hast, kannst Du auf von mir oben beschriebene Art und Weise Tunnel einrichten, wo dann auf dem Rechner, wo Putty läuft, der Port geöffnet wird (das was als L bezeichnet ist). Ein Zugriff wird dann durch den SSH-Tunnel auf den bei Destination eingetragenen Service weitergeleitet. Dort kannst Du beliebig viele Tunnels eintragen, die auf unterschiedlichen lokalen Ports lauschen und auf beliebige Zielserver am anderen Ende der SSH-Verbindung (also im Netz der FBox) zugreifen.
 

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
S.o. im Beitrag über Deinem (haben sich überschnitten) und hier nochmal zur Verdeutlichung:

Notebook mit PuTTY
|
Notebook mit ntlmaps NTLM Proxy Authentication Server (127.0.0.1:5865)*
|
HTTP-Proxy (Ports 80 und 443 offen)
|
FB -- virtualip (Port 443 <-> Port 22)
|
dropbear (lauscht auf Port 22)

*Der NTLM Proxy Authentication Server ntlmaps ist der Proxy, gegen den ich PuTYY laufen lasse. Der Grund ist ganz simpel der, dass PuTTY leider nicht gegen das MS-proprietäre NTLM Protokoll laufen kann, d.h. die Authentifizierung übernimmt in diesem Fall ntlmaps als "Übersetzer" zwischen PuTTY und dem eigentlichen Proxy.
 

McNetic

Mitglied
Mitglied seit
7 Feb 2007
Beiträge
674
Punkte für Reaktionen
0
Punkte
16
Ich versteh es leider immer noch nicht ganz. Du Hast in Putty als Proxy den ntlmaps eingetragen. Wozu brauchst Du dann diese L443-Weiterleitung? Oder baust Du dann über den 1. Tunnel eine zweite Putty-Verbindung auf?
 

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,848
Punkte für Reaktionen
14
Punkte
38
@ao
Nun möchte ich eben auch Zugriff auf mein Freetz-GUI haben (auch mittels ssh gesichert ...
Ich greife auch ssh-gesichert auf das Fritz-GUI oder Freetz-GUI meiner Box zu. Unter XP mit Putty und unter FreeBSD und Linux, mit einem ssh-client. Als ssh-server auf der FritzBox benutze ich Dropbear. Das mach ich mit dynamischem Portforwarding und im Browser trage ich als Socks-Host die IP-Adresse 127.0.0.1 und den dynamischen Port ein. Mit dem ssh-client aktiviere ich den dynamischen Port so: ssh -D 3333 -oPort=<Port auf dem Dropbear lauscht> [email protected]<IP-Adresse der FritzBox>. Mit Putty kann man auch einen dynamischen Port (... analog dem ssh-client) eintragen.
 

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
@McNetic:
Richtig, in PuTTY habe ich als Proxy den ntlmaps eingetragen.

Wenn ich den Eintrag unter Tunnels weg lasse, geht es auch!
Ok, ich hatte das Konzept in der Tat nicht richtig verstanden bzw. der Tunnels-Eintrag war einfach überflüssig/Käse.

/var/flash/ar7.cfg:
Code:
[...]
forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060",
               "tcp 0.0.0.0:443 192.168.178.253:22 0 # SSH-Tunnel";
[...]
@sf3978:
In die Parameter-Schreibweise muss ich mich erst noch einarbeiten, aber mit dem PuTTY-GUI müsste es ja entsprechend auch gehen.
 
Zuletzt bearbeitet:

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,848
Punkte für Reaktionen
14
Punkte
38

McNetic

Mitglied
Mitglied seit
7 Feb 2007
Beiträge
674
Punkte für Reaktionen
0
Punkte
16
Soweit ich mich erinner sind in Dropbear die Anzahl der Verbindungen irgendwie beschränkt worden. Die zweite Zeile aus der ar7.config ist aber auch überflüssig und ggfs. schädlich. An der Tunnel-Einstellung dürfte es eigentlich nicht hängen bleiben, wenn die Verbindung nicht zustande kommt.
 

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
Tausend Dank!

Mit dem folgenden von McNetic ganz oben beschrieben Eintrag unter Tunnels klappt es: L1081 192.168.178.253:81
Und dann im Browser einfach aufrufen: localhost:1081

Dass es ständig hakte, lag an meinem anderen (völlig überflüssigen und störendem) Tunnel-Eintrag.

Ich schreibe in meinem ersten Beitrag (unter Edit) rein, wie es geht, damit andere es gleich sehen, falls sie mit einem ähnlichen Problem auf diesen Thread stoßen. Einen kleinen Wiki-Eintrag mache ich auch noch...

Edit @Hermann: Danke für den Referer-Hinweis!
Damit der Zugriff auf die AVM-Seite (Port 80) funktioniert, muss man ggf. den Referer unterbinden.
Unter Firefox ist dazu der Wert für network.http.sendRefererHeader unter about:config auf 0 (Null) zu setzen.
Was für ein Referer-Problem hattest Du eigentlich gemeint?
 
Zuletzt bearbeitet:

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
7,848
Punkte für Reaktionen
14
Punkte
38
@ao

... ganz oben beschrieben Eintrag unter Tunnels klappt es: L1081 192.168.178.253:81
-L [bind_address:]port:host:hostport
Specifies that the given port on the local (client) host is to be
forwarded to the given host and port on the remote side. This
works by allocating a socket to listen to port on the local side,
optionally bound to the specified bind_address. Whenever a con-
nection is made to this port, the connection is forwarded over
the secure channel, and a connection is made to host port
hostport from the remote machine. Port forwardings can also be
specified in the configuration file. IPv6 addresses can be spec-
ified with an alternative syntax:
[bind_address/]port/host/hostport or by enclosing the address in
square brackets. Only the superuser can forward privileged
ports. By default, the local port is bound in accordance with
the GatewayPorts setting. However, an explicit bind_address may
be used to bind the connection to a specific address. The
bind_address of ``localhost'' indicates that the listening port
be bound for local use only, while an empty address or '*' indi-
cates that the port should be available from all interfaces.
-D port
Specifies a local ``dynamic'' application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, and whenever a connection is made to this port, the connec-
tion is forwarded over the secure channel, and the application
protocol is then used to determine where to connect to from the
remote machine. Currently the SOCKS4 and SOCKS5 protocols are
supported, and ssh will act as a SOCKS server. Only root can
forward privileged ports. Dynamic port forwardings can also be
specified in the configuration file.
Versuchs mal mit dem dynamischen Portforwarding. Damit kommst Du überall hin und nicht nur auf die Freetz-GUI. Und am RefererHeader des Browsers musst Du auch nichts ändern.
 
Zuletzt bearbeitet:

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,084
Punkte für Reaktionen
0
Punkte
36
Danke, klingt interessant!
Für diejenigen, die noch kein dynamisches Portforwarding wie Du nutzen, habe ich im Wiki auch noch die Anmerkung bzgl. des Referers hinterlegt.