• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

PuTTY: Fehler bei VPN-Aufbau

Keks Dose

Member
Hallo,

ich versuche, einen VPN-Zugang von meinem Notebook (openSuse 11.4, 3.0.6, KDE 4.7.2) auf einen Windows Small Business Server 2003 zu erhalten, scheitere aber.

Befehl:
plink -P 53332 -ssh -2 -v -l xyzremote -i xyz_ssh.ppk -L 127.0.0.2:22443:192.168.0.250:443 zzz.dyndns.org

Ich erreiche den Server, die Fehlermeldung lautet:
Code:
Offered public key
Offer of public key accepted
Authenticating with public key "YXZ"
Passphrase for key "YXZ": 
Access granted
Opened channel for session
Local port 127.0.0.2:22443 forwarding to 192.168.0.250:443 failed: Cannot assign requested address
Allocated pty (ospeed 38400bps, ispeed 38400bps)
Started a shell/command

Hat jemand eine Idee, wo das Problem liegen könnte? »Cannot assign requested address«: Warum klappt auf meinem Rechner das "port forwarding" nicht? Wenn ich einen Port <1024 nehme, erhalte ich "Permission denied". Ich arbeite als user, nicht als root.

Gruß,

Alexander
 

spoensche

Moderator
Teammitglied
Also per SSH würde es so aussehen:

Code:
ssh -f -L 22443:localhost:443 zzz.dyndns.org

Danach kannst du den Tunnel über den lokalen Port 22443 verwenden.

Zu welchem Rechner gehört den die 192.168.0.250?
 
OP
K

Keks Dose

Member
Hallo,

ich bin tatsächlich umgestiegen auf ssh. Das Schlüsselfile kann man mit Hilfe des "puttygen" Schlüsselgenerators (Option "Conversion" im graphischen Menü) in einen openSSH-Schlüssel umwandeln!

Offenkundig ist's so, dass der Befehl "-L " unter Linux nur eingeschränkt funktioniert bei PuTTY.

Ich versuche die ganze Zeit, zu verstehen, was ich da eigentlich mache. Ich habe eine spezifische Frage:

Kern meiner Anfrage ist ja folgender Befehlsteil:

Code:
-L 127.0.0.2:22443:192.168.0.250:443 yxz.dyndns.org

Nach meinem Verständnis wird damit ein "Tunnel" eröffnet zwischen dem entfernten Server, der über yxz.dyndns.org erreicht wird, und zwar _dort_ unter Port 443 der Adresse 192.168.0.250.

Auf meinem Rechner erreiche ich also den entfernten Rechner, wenn ich unter 127.0.0.2:22443 nachsehe. Das funktioniert aber zu meinem großen Erstaunen nicht mehr, wenn ich an die Adresse 127.0.0.2:22443 noch etwas anhänge, also z.B. 127.0.0.2:22443/irgendwas

Es funktioniert dagegen, wenn auf beiden Seiten Port 443 angefragt wird, also:

Code:
-L 127.0.0.2:443:192.168.0.250:443 yxz.dyndns.org

Allerdings geht das nur als root, ansonsten lautet die Fehlermeldung:

Code:
Privileged ports can only be forwarded by root.

Was muss ich schreiben, um auf die Adresse 127.0.0.2:22443/irgendwas zugreifen zu können, wenn der Port auf dem entfernten Rechner eben nicht 22443 lautet, sondern eben irgendwie anders?

Ähm, wirr? Ich hoffe, verständlich genug und bedanke ich mich für die bisherige Hilfe,

Gruß,
Alexander
 

spoensche

Moderator
Teammitglied
Dein Befehl stimmt aber nicht. Du sprichst den entfernten Server über yxz.dyndns.org an und nicht mit der IP. Die IP 192.168.x.x ist aus dem privaten IP- Bereich und kann nicht im Internet verwendet werden.

Die Lösung habe ich dir in meinem vorherigen Beitrag an die Hand gegeben.

22443:localhost:443 bedeutet:

Baue mir einen Tunnel per localhost und dem Port 22443 zu dem Port 443 von yxz.dyndns.org auf. Wenn der Tunnel aufgebaut ist, dann musst deine Anwendung den Port 22443 als Quellport verwenden.

Siehe dazu auch
Code:
man ssh
 
OP
K

Keks Dose

Member
In meinem Netz hier lokal gibt es keine Adresse 192.168.0.x, ich habe statt der Null eine andere Zahl. Daher muss sie von dem entfernten Server stammen, oder? OK, ich bin Amateur.

Wenn ich mit -L 22443:localhost:443 einen Tunnel öffne, dann kann ich mich zwar an dem small-business-server anmelden, komme aber nicht auf die Seite mit dem Web Access von Outlook, Firefox kann keine Verbindung herstellen zu: "https://localhost:22443/exchange"

Hm, kompliziert, so zwischen den Welten von Linux und Windows,

Gruß,
Alexander
 

spoensche

Moderator
Teammitglied
Keks Dose schrieb:
In meinem Netz hier lokal gibt es keine Adresse 192.168.0.x, ich habe statt der Null eine andere Zahl. Daher muss sie von dem entfernten Server stammen, oder? OK, ich bin Amateur.

Jeder hat mal klein angefangen. Das x ist ein Platzhalter für die Zahlen 1-254, aber wie kommst du an die Adresse, wenn sie nicht aus deinem Netz stammt? Es muss nicht und kann auch nicht die IP des Servers sein, weil private IP-Adressen nicht im Internet geroutet werden. Diese werden von einem Router (intern eine priv. IP eyxtern eine öffentliche IP) quasi maskiert (priv. IP wird durch öffentl. IP ersetzt) und dann raus geschickt.

Keks Dose schrieb:
Wenn ich mit -L 22443:localhost:443 einen Tunnel öffne, dann kann ich mich zwar an dem small-business-server anmelden, komme aber nicht auf die Seite mit dem Web Access von Outlook, Firefox kann keine Verbindung herstellen zu: "https://localhost:22443/exchange"

Weil ich es zu kompliziert ausgedrückt habe, wird der Auszug aus der Manpage von SSH, zur Verständnisverbesserung beitragen:
Code:
The following example tunnels an IRC session from client machine “127.0.0.1” (localhost) to
remote server “server.example.com”:

 ssh -f -L 1234:localhost:6667 server.example.com sleep 10
 irc -c '#users' -p 1234 pinky 127.0.0.1

This tunnels a connection to IRC server “server.example.com”, joining channel “#users”, nickname
“pinky”, using port 1234.  It doesn't matter which port is used, as long as it's greater than
1023 (remember, only root can open sockets on privileged ports) and doesn't conflict with any
ports already in use.  The connection is forwarded to port 6667 on the remote server, since
that's the standard port for IRC services.

Der von dir angelegte Tunnel fungiert quasi als eine Art Proxy. Wenn du in den Proxyeinstellungen des Firefox die 127.0.0.1 und den Port 22443 als Proxy einträgst, dann solltest du den Webaccess angezeigt bekommen.

Du kannst aber auch pseudo Netzwerkdevices (TUN-Devices) verwenden und zwei Netze per Tunnel verbinden. Der Port wäre dann unnötig und die IP-Pakete können bequem per IP-Tables und Routingtabellen in das VPN geroutet werden.

Keks Dose schrieb:
Hm, kompliziert, so zwischen den Welten von Linux und Windows,

Statt zwischen den Welten oder dem Zwang zum Fensterwahn, komm in die freie Welt von Linux. ;)

So kompliziert ist es nicht, wenn man offene Standards verwendet.
Für die VPN- Verbindung zwischen M$ und Linux ist SSH eher ein "Exot". Hauptsächlich werden IP-Sec (openswan auf Linuxseite) oder OpenVPN verwendet.
 
OP
K

Keks Dose

Member
Interessanterweise gehen alle Pakete verloren, wenn ich im heimischen Netz die 192.168.0.250 pinge. Sobald ich aber den Tunnel habe, kommen alle Pakete an! Folgerung: 192.168.0.250 liegt auf dem entfernten Server.

Was mir aber keinen Schritt weiterhilft bei meinem Versuch, mit einem lokalen Port >1024 auf den Server/exchange zugreifen zu können.

Gruß,
Alexander
 

spoensche

Moderator
Teammitglied
Keks Dose schrieb:
Interessanterweise gehen alle Pakete verloren, wenn ich im heimischen Netz die 192.168.0.250 pinge. Sobald ich aber den Tunnel habe, kommen alle Pakete an! Folgerung: 192.168.0.250 liegt auf dem entfernten Server.

Gut gefolgert.

Keks Dose schrieb:
Was mir aber keinen Schritt weiterhilft bei meinem Versuch, mit einem lokalen Port >1024 auf den Server/exchange zugreifen zu können.

Eigentlich schon. Du musst den Netzwerkverkehr zu dem Server über den Tunnel und Port weiterleiten (forwarden).

Wenn du zwei Netze per SSH-Tunnel verbinden willst, solltest du besser ein TUN- Device verwenden.
 
Oben