Sebastian Mogilowskis Blog

Just another blog about administration, linux and other stuff

Debian Router Installation – Part 3 (VPN)

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.

, , , ,

One thought on “Debian Router Installation – Part 3 (VPN)

  • Noby says:

    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.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.