Anleitung - OpenVPN auf OpenWRT
Firewall konfigurieren
Im ersten Schritt müssen wir unsere Firewall konfigurieren. Wenn unserer Gerät als Router fungiert und über den WAN-Port direkt im Internet hängt, können wir nachstehendes Script verwenden. Ist unser OpenWRT-Gerät eine zusätzliche Einheit im LAN wie z.B. ein Access Point oder einfach nur ein kleiner VPN-Server, dann müssen wir den Port 1194/UDP für OpenVPN auf die IP des Gerätes weiterleiten.
#!/bin/sh
# Allow incoming client connections by opening the server port (default 1194) in our firewall:
uci set firewall.Allow_OpenVPN_Inbound=rule
uci set firewall.Allow_OpenVPN_Inbound.target=ACCEPT
uci set firewall.Allow_OpenVPN_Inbound.src=*
uci set firewall.Allow_OpenVPN_Inbound.proto=udp
uci set firewall.Allow_OpenVPN_Inbound.dest_port=1194
uci commit firewall
/etc/init.d/firewall reload
exit
Script-Start
#!/bin/sh
# Pakete installieren
opkg update
opkg install openvpn-openssl openvpn-easy-rsa
# Schlüssel & Zertifikate für OpenVPN erzeugen
# Im ersten Schritt müssen wir die Schlüssel und Zertifikate für OpenVPN erzeugen. Hier haben sich die Befehle in Version 18.06.1 ein wenig geändert.
# Werden wir nach dem "Common Name" gefragt, können wir z.B. intranet.mydomain.com eintragen.
mkdir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
easyrsa init-pki
easyrsa build-ca nopass
easyrsa gen-dh
# Schlüssel für die OpenVPN-Server erzeugen
easyrsa build-server-full server nopass
# Schlüssel für die OpenVPN-Clients erzeugen
easyrsa build-client-full client-1 nopass
# Schlüssel und Zertifikate übertragen
# Am Server bzw. Router kopieren wir die erstellten Schlüssel und Zertifikate in den OpenVPN Konfigurationsordner.
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
# VPN-Interface
# Für das Erstellen des VPN-Interfaces und das Setzen der Firewall-Einstellungen erstellen wir uns am besten ein Script mit folgendem Inhalt:
# Create the VPN interface (named vpn0):
uci set network.vpn0=interface
uci set network.vpn0.ifname=tap0
uci set network.vpn0.proto=none
uci set network.vpn0.auto=1
# Add interface to LAN bridge:
uci set network.lan.ifname="$(uci get network.lan.ifname) tap0"
# Einstellungen übernehmen:
uci commit network
/etc/init.d/network reload
# OpenVPN konfigurieren
# Für die Konfiguration des OpenVPN-Servers erstellen wir uns nun ebenfalls ein Script.
echo > /etc/config/openvpn # clear the openvpn uci config
uci set openvpn.myvpn=openvpn
uci set openvpn.myvpn.enabled=1
uci set openvpn.myvpn.verb=3
uci set openvpn.myvpn.proto=udp
uci set openvpn.myvpn.port=1194
uci set openvpn.myvpn.dev=tap
uci set openvpn.myvpn.mode=server
uci set openvpn.myvpn.tls_server=1
uci add_list openvpn.myvpn.push='route-gateway dhcp'
uci set openvpn.myvpn.keepalive='10 120'
uci set openvpn.myvpn.ca=/etc/openvpn/certs/ca.crt
uci set openvpn.myvpn.cert=/etc/openvpn/certs/server.crt
uci set openvpn.myvpn.key=/etc/openvpn/certs/server.key
uci set openvpn.myvpn.dh=/etc/openvpn/certs/dh.pem
uci commit openvpn
# Nun setzen wir OpenVPN als Bootservice und starten den Dienst.
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
exit
OpenVPN - Client konfigurieren (OpenWRT & Centos)
Mit Hilfe eines FTP-Clients holen wir uns folgende Dateien in einen Konfigurationsordner für VPN auf dem Client.
/etc/openvpn/easy-rsa/pki/issued/client-1.crt
/etc/openvpn/easy-rsa/private/client-1.key
/etc/openvpn/easy-rsa/pki/ca.crt
Konfigurationsscript erstellen
In dem gleichen Ordner, in welchen wir zuvor die Client-Zertifikate heruntergeladen haben, erstellen wir die Datei "client-1.ovpn" und fügen folgende Zeilen ein:
client
dev tap
auth-nocache
remote <Server-IP>
port 1194
verb 3
ca ca.crt
cert client-1.crt
key client-1.key
cipher AES-256-CBC
remote-cert-tls server
# Kann auskommentiert werden um dem TUN Interface eine fixe MAC-Adresse zuzuweisen.
;lladdr 96:45:2A:82:EE:0D
Der "chiper" wurde hier nochmal extra angegeben. AES-256-CBC wird zwar als Standardverschlüsselung verwendet, ein Client hat jedoch versucht zu erst eine niedrigere Verschlüsselung zu verwenden. Daher hier die explizite Angabe.
Quellen
Generate the keys/certificates for OpenVPN (18.06.1)
https://www.uns.gr/openvpn-road-warriors-on-openwrt-12-09/
OpenVPN Setup Guide for Beginners
Kommentare