VPN mit SSH #

Zum Aufbau eines VirtualPrivateNetwork kann auch ssh benutzt werden. Diese Lösung ist einfach und schnell und man benötigt lediglich zwei Linux-Maschinen, auf denen SSH installiert ist.

Vorteil #

Ein Vorteil ist wohl der leichte und schnelle Aufbau der Netzwerkverbindung. Da ich das jedoch noch nicht persönlich ausprobiert habe, rufe ich die Leser dieses Wikis auf, weitergehende Erfahrungen hier einzutragen!

Nachteil #

Dieser Tunnel hat jedoch einen entscheidenden Nachteil: Er setzt auf dem bestehenden SSH-Protokoll auf, das auf einer TCP-Verbindung basiert. Das bedeutet, daß TCP-typisch (und im Gegensatz z.B. zum UDP-Protokoll) sowohl der vollständige Erhalt als auch die Reihenfolge der Pakete bei der Übertragung garantiert wird. Falls also mal ein einzelnes Paket in den Wirren des Internet verloren geht, steht das gesamte VPN so lange, bis die beiden SSH-Programme sich wieder synchronisiert haben. Wenn wir ein verbindungsloses Protokoll (wie GRE beim VPNmitPPTP oder ESP bei VPNmitIPSec) benutzen, bewirkt ein verschwundenes Datenpaket nur, daß genau dieses eine Datenpaket weg ist. Das darüberliegende Protokoll, das das VPN benutzt, kann sich dann wie üblich überlegen, ob es das Paket neu haben will (z.B. bei TCP) oder verwirft (z.B. bei Streamingdaten). Andere Datenpakete und Verbindungen über das VPN werden so lange jedoch nicht gebremst.

Inzwischen habe ich die Seite http://sites.inka.de/sites/bigred/devel/tcp-tcp.html gefunden, auf der noch schöner erklärt ist, warum nicht nur UDP über TCP, sondern viel schlimmer noch TCP über TCP ein grosses Problem ist.

Ein weiterer Nachteil ist, daß man auf Plattformen angewiesen ist, die ssh unterstützen, d.h. ein Aufbau mit einer Windows-Gegenstation könnte problematisch werden. Ggf. würde ich es jedoch mal mit dem freien Windows-SSH-Programm PuTTY versuchen.

Installation #

Da ich bisher noch keine Erfahrungen mit ssh-Tunneln gesammelt habe, bitte ich den geneigten Wiki-Leser, diese nachzutragen... -- ThomasBayen

Example #

folgendes Beispiel erstellt einen Tunnel und funktioniert ohne Probleme
HOME=/home/tuser
HOST=192.168.1.50
GATEWAY=217.18.187.9
# generat a key for authentication
ssh-keygen -t dsa
scp $HOME/.ssh/id.dsa.pub $GATEWAY:$HOME/.ssh/authorized_keys
# open tunneling
ssh -2 -g -N -L 23:$HOST:23 $GATEWAY $* 2>/dev/null &
-- UweSchimon <uwe@mailpost.de>