VPN adhoc mittels OpenSSH

Ab 4.3 bietet OpenSSH das Feature die gesamte Datenkommunikation im
Sinne eines VPN zu verschluesseln. Bisher konnte man mit OpenSSH immer
nur einzelne Ports tunneln.

Meine Versuchsumgebung:

   Internet <----> OpenBSD_3.9 <---- Ubuntu_6.10

Folgende Schritte sind auszufuehren:

1. Server: Auf dem OpenBSD-Server, der auch als FW fungiert, ist in der
sshd_config die Option 'PermitTunnel yes' anzuschalten. Ferner sind
root-Logins zu erlauben.

2. Server/Client: Auf dem Ubuntu-Client ist fuer den User root mittels 
ssh-keygen ein Schluesselpaar zu erzeugen und der oeffentliche Teil ist 
auf den Server zu uebertragen.

3. Server: Der oeffentliche Teil des Schluessels, also das File
authorized_keys, ist zu ergaenzen:

---
tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... root@clientpc
---

Damit wird auf dem Server das 'tun1'-Interface fuer den Tunnel
definiert.

4. Server: In das File hostname.tun1 ist folgendes zu schreiben:

---
inet 192.168.5.1 255.255.255.252 192.168.5.2
---

5. Client: Das File /root/.ssh/config ist zu erzeugen mit folgendem
Inhalt:

---
Host sshgateway
  Tunnel yes
  TunnelDevice 0:any
  PermitLocalCommand yes
---

6. Client: Das File /etc/hosts ist zu ergaenzen:

---
1.2.3.4 sshgateway
---

Um nun den Tunnel zu starten gibt man einfach auf dem Client als root
folgenden Befehl ab:

% ssh -fw 0:1 sshgateway true

Damit steht der Tunnel und es muss clientseitig lediglich noch das
Client-Tunnel-Interface konfiguriert und die Defaultroute modifiziert
werden:

% ifconfig tun0 192.168.5.2 dstaddr 192.168.5.1 netmask 255.255.255.252
% route del default
% route add default gw 192.168.5.1

Viel Glueck!

PS.: Weitere Infos hier: /usr/src/usr.bin/ssh/README.tun


--
I.S.