OpenVPN Client unter Linux einrichten

Um eine gesicherte Verbindung über OpenVPN aufzubauen, sind immer zwei Stellen erforderlich. Ein OpenVPN Server und ein oder mehrere OpenVPN Clients. Wie ein OpenVPN Server direkt auf einem Router installiert werden kann, habe ich hier beschrieben:
https://blog.doenselmann.com/openvpn-server-auf-dd-wrt-router-betreiben/
https://blog.doenselmann.com/openvpn-server-auf-openwrt-router-betreiben/
Der OpenVPN Client für Linux kann direkt aus den Paketquellen installiert werden.


Arch Linux:

sudo pacman -S openvpn

Debian und Ubuntu:

sudo apt-get install openvpn

Nach der Installation muss eine Konfigurationsdatei erzeugt werden, um die Verbindung auf den eigenen VPN Server herstellen zu können.

sudo nano /etc/openvpn/client.conf

Folgender Abschnitt ist eine komplette Konfigurationsdatei für ein geroutetes VPN. Die einzelnen Abschnitte werden im Nachgang erklärt. Dabei ist dann auch ersichtlich, welcher Punkt angepasst werden muss, damit später die Verbindung auch funktioniert.

client
dev tun
proto udp
remote openvpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
float
remote-cert-tls server
verb 3
cipher AES-256-CBC
auth SHA512
key-direction 1
mute-replay-warnings
ca "/etc/openvpn/easy-rsa/keys/ca.crt"
cert "/etc/openvpn/easy-rsa/keys/client.crt"
key "/etc/openvpn/easy-rsa/keys/client.key"
tls-auth "/etc/openvpn/easy-rsa/keys/tlsauth.key"

openvpn_client_linux01

  • dev tun: Gibt an, dass es sich um eine geroutete Verbindung handelt. Bei einer „Bridged“ Verbindung müsste der Eintrag „dev tap“ heissen.
  • remote: Hier muss der eigene OpenVPN Public Name bzw. die IP Adresse gefolgt vom verwendeten Port angegeben werden.
  • resolv-retry infinite: Sollte der Hostname nicht aufgelöst werden können, wird es nochmal versucht.
  • nobind: Hier wird ein vom Client Betriebssytem gestellter Client Port verwendet
  • persist-key: Behält die Schlüsselinformationen für eine Wiederverbindung im Speicher
  • persist-tun: Hält das Device für eine Wiederverbindung am Laufen
  • remote-cert-tls server: Prüft beim Verbindungsaufbau, ob die Gegenstelle auch wirklich ein gültiges Zertifikat vom Typ Server hat.
  • verb: Gesprächigkeit des Logs
  • cipher: Algorithmus zur Verschlüsselung des Traffics (muss mit Serverkonfig übereinstimmen)
  • auth: HMAC Algorithmus (muss mit Serverkonfig übereinstimmen)
  • key-direction: Hiermit wird dem TLS Handshake gesagt, wer Client und wer Server ist. Auf der Serverseite muss der Wert „0“ vorhanden sein.

Ist die Client Konfiguration fertig angepasst und gespeichert, kann eine Verbindung über das Terminal aufgebaut werden.

sudo openvpn --config /etc/openvpn/client.conf

Bei erfolgreichem Verbindungsaufbau sollte im Terminal folgender Eintrag stehen:

Initialization Sequence Completed

openvpn_client_linux02

Ein „ifconfig“ zeigt dann auch ein aktives „tun0“ Device.

openvpn_client_linux03

Somit lässt sich mit ein paar wenigen Handgriffen eine Verbindung unter Linux zu einem OpenVPN Server aufbauen.