OpenVPN on OpenWRT

mit openWRT lässt sich auch hervorragend ein OpenVPN Server einrichten. Der Vorteil gegenüber der Fritzbox VPN einrichtung ist die deutlich einfachere Handhabung für die client Verbindung.

Anleitungen wie man OpenVPN auf einem openWRT System einrichtet gibt es zuhauf zu finden im Internet. Dennoch haben einige Anleitungen nicht ganz 1:1 bei meinen Einrichtungs-versuchen funktioniert und so dokumentiere ich zumindest mal meinen Aufbau.

Als OpenVPN Instanz ist eine Fritzbox 7530 direkt mit einer festen IP im Heimnetz verbunden. Mein Heimnetz ist 192.168.1.0/24. Mein Internet Router, eine FB 7560, hat die 192.168.1.1. OpenWRT hat die 192.168.1.254 und macht DNS (adblock) und OpenVPN auf UDP4 port 1194. Dieser Port muss an der 7560 als Weiterleitung aus dem Internet an die 192.168.1.254 festgelegt werden. IPv6 habe ich deaktiviert.

Firewall Regeln müssen in meinem Fall keine angelegt werden, da OpenWRT nicht als Router arbeitet. Die Box läuft im Client mode.

Das meiste der Einrichtung erfolgt via SSH auf CLI Ebene. Das ist einfacher und i.d.R. auch so im Internet dokumentiert.

Nun aber mal los:

  • mit SSH zur Box verbinden (user: root)
  • Pakete installieren – >

opkg update

opkg install openvpn-openssl openvpn-easy-rsa

  • Schlüssel & Zertifikate für OpenVPN ->

mkdir /etc/openvpn/easy-rsacd /etc/openvpn/easy-rsa

easyrsa init-pki

easyrsa build-ca nopass

easyrsa gen-dh

  • Schlüssel für die OpenVPN-Server ->

easyrsa build-server-full server nopass

  • Schlüssel für die OpenVPN-Clients ->

easyrsa build-client-full client-1 nopass

  • Schlüssel und Zertifikate übertragen ->

cd /etc/openvpn
mkdir certs

ln -s /etc/openvpn/easy-rsa/pki/ca.crt certs/ca.crt
ln -s /etc/openvpn/easy-rsa/pki/private/server.key certs/server.key
ln -s /etc/openvpn/easy-rsa/pki/issued/server.crt certs/server.crt
ln -s /etc/openvpn/easy-rsa/pki/dh.pem certs/dh.pem

  • OpenVPN sichtbar in GUI machen ->

opkg update

opkg install luci-app-openvpn

  • Konfigurationsdatei am Server anlegen ->

vi /etc/config/openvpn

>>>>>>>>>>>>>>>>>>>>>>>>>>

config openvpn 'client_to_server' option enabled '1' option dev 'tun' option proto 'udp4' option log '/tmp/openvpn.log' option verb '3' option ca '/etc/openvpn/certs/ca.crt' option cert '/etc/openvpn/certs/server.crt' option key '/etc/openvpn/certs/server.key' option dh '/etc/openvpn/certs/dh.pem' option server '10.20.30.0 255.255.255.0' option cipher 'AES-256-CBC' option auth 'SHA512' option tls_cipher 'TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WIT option port '1194' option keepalive '10 120' option tls_server '1' option tls_version_min '1.2' list push 'route 192.168.1.0 255.255.255.0'

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Datei abspeichern mit „ZZ“.

  • Neu anglegte OpenVPN Konfiguration übernehmen ->

/etc/init.d/openvpn reload

Die Konfiguration für den Server is nun abgeschlossen und sollte in der OpenWRT GUI unter VPN -> OpenVPN sichtbar und auch gestartet sein.

Als nächstes wird noch die Konfiguration für den Client benötigt.

die sieht bei mir wie folgt aus:

>>>>>>>>>>>>>>>>>>>>>>>>>>>

client fast-io dev tun auth-nocache remote xxxxxxxxxxxxxxx.myfritz.net 1194 udp4 proto udp4 resolv-retry infinite verb 3 ca ca.crt cert client-1.crt key client-1.key data-ciphers-fallback AES-256-CBC remote-cert-tls server nobind persist-key persist-tun comp-lzo no

<<<<<<<<<<<<<<<<<<<<<<<<<<<<

die 3 dort genannten Dateien (ca.crt; client-1.crt; client-1.key) sind natürlich vorher vom Server zu kopieren und im OpenVPN client Konfigurations-ordner mit abzulegen.

Idealerweise sollte am Ende der Client verbinden können und das Ganze in etwa so aussehen.