Dieser Artikel beschreibt wie man einen OpenVPN Server mit 2 Subnetzen mit Pre-shared Key Authentifizierung unter Debian Etch installiert:
Der bereits erwähnte Debian Router soll nun um einen OpenVPN Server erweitert werden.
Um nicht noch ein weiteres Subnetz für die VPN-Clients aufbauen zu müssen, wird der so genannte Bridging-Modus verwendet. Dabei handelt es sich um einen Tunnel auf Ethernetebene, der die Clients vollständig in das Netzwerk integriert.
Installation:
aptitude install openvpn bridge-utils iproute openssl
Zuerst muss man mit Hilfe von openssl die benötigten Schlüssel für die “Pre-shared Key Authentication” anlegen:
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 . ./vars ./clean-all ./build-ca ./build-key-server server ./build-key vpnclient ./build-dh mv keys /etc/openvpn/
Die Dateien ca.crt, vpnclient.key sowie vpnclient.crt müssen auf den VPN Client übertragen werden.
Als nächstes muss ein Bridgeinterface angelegt werden, um den oben genannten Bridgemodus zu realisieren. Dazu muss man die Datei /etc/network/interfaces bearbeiten und folgendes am Ende einfügen:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # VPN Bridge auto br0 iface br0 inet static address 192.168.0.1 netmask 255.255.255.0 pre-up /usr/sbin/openvpn --mktun --dev tap0 pre-up /sbin/ip link set tap0 up pre-up /sbin/ip link set eth1 up pre-up /usr/sbin/brctl addbr br0 pre-up /usr/sbin/brctl addif br0 eth1 pre-up /usr/sbin/brctl addif br0 tap0 pre-up /sbin/ifconfig eth1 0.0.0.0 promisc up pre-down /usr/sbin/brctl delif br0 eth1 pre-down /sbin/ip link set eth1 down pre-down /usr/sbin/brctl delif br0 tap0 pre-down /sbin/ip link set tap0 down post-down /usr/sbin/brctl delbr br0 post-down /usr/sbin/openvpn --rmtun --dev tap0 # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Dabei ist die IP Adresse 192.168.0.1 die Adresse des Interfaces, in dessen Subnetz man die Bridge aufbauen will. Dabei wird die Adresse vom eth1 Device auf das neu angelegte br0 Device übertragen. Außerdem ein tap0 Interface für OpenVPN vorbereitet. Anpassen an seine eigene Konfiguration muss man hier also eth1, address und ggf. die netmask.
Wichtig ist nun natürlich, das die beiden neuen Netzwerkinterfaces in die IPTables (Firewall) aufgenommen werden:
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A OUTPUT -i tab0 -j ACCEPT
iptables -A OUTPUT -i br0 -j ACCEPT
iptables -A FORWARD -i tap0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
Nun kann der VPN Server konfiguriert werden. Dazu sollte man zuerst die Beispiel Server Konfigurationsdateien entpacken und diese in das OpenVPN Verzeichnis kopieren:
cd /usr/share/doc/openvpn/examples/sample-config-files
gzip -d server.conf.gz
cp server.conf /etc/openvpn/networkVPN.conf
Anschließend muss man diese Datei bearbeiten und folgende Änderungen vornehmen:
dev tap
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pm
server-bridge 192.168.0.1 255.255.255.0 192.168.0.201 192.168.0.250
client-to-client
push "redirect-gateway"
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DEFAULT_GATEWAY 192.168.0.1"
push "dhcp-option DNS 192.168.0.1"
push "dhcp-option DOMAIN network.lan"
push "dhcp-option WINS 192.168.0.1"
Dabei ist zu beachten das “dev tap” “dev tun” ersetzt und “server-bridge” ersetzt “server” diese Einträge müssen also auskommentiert werden. Außerdem muss natürlich der Port des OpenVPN Servers (Default: 1194 UDP) in der Firewall freigegeben werden, damit die Clients den Server errreichen können.
Anschließend kann der OpenVPN Server neu gestartet werden:
/etc/init.d/openvpn start
Der VPN Server sollte nun laufen, und man kann die Clients konfigurieren. Auf jedem Client müssen die Dateien ca.crt, vpnclient.key und vpnclient.crt vorhanden sein. Man kann dabei entweder für jeden Client eigene Zertifikate und Schlüssel erzeugen, oder man aktiviert in der Server Konfiguration zusätzlich die Option “duplicate-cn”. Damit kann ein Clientzertifikat für mehrere Verbindungen von verschiedenen Clients benutzt werden.
Unter Ubuntu kann die VPN Verbindung direkt über den Netzwerkmanager hinzugefügt werden.

Ich denke, dass du die openVPN konfiguration so nicht im Router hast. In der networkVPN.conf Datei sollte statt “dev tap” ein “dev tap0″ stehen, da ansonsten beim Start des openVPN Daemons ein neues Device (tap1) angelegt wird.