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"
- 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
Ein „ifconfig“ zeigt dann auch ein aktives „tun0“ Device.
Somit lässt sich mit ein paar wenigen Handgriffen eine Verbindung unter Linux zu einem OpenVPN Server aufbauen.