Openwrt – Installation OpenVPN

Diese Anleitung ist Teil des Projekts OpenWRT als eierlegende Wollmilchsau.

Ob die Pakete über das Webinterface oder die Konsole installiert werden ist egal, folgende sollten im ersten Schritt mit allen abhängigkeiten installiert werden:

  • openvpn
  • openvpn-easy-rsa
  • luci-theme-bootstrap (optional)
  • luci-i18n-german (optional)

Als nächstes generieren wir uns Zertifikate analog des Openwrt VPN Howto

cd /etc/easy-rsa
vi vars

*OPTIONAL* (Wenn man möchte, dass die zertifikate nie auslaufen folgende Zeilen auskommentieren)

export CA_EXPIRE=3650
export KEY_EXPIRE=3650

(folgende Zeilen an die eigenen Bedürfnisse anpassen)

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain

OPTIONAL:  wir sorgen für einen unbeschwerten Start uns setzen /etc/easy-rsa/keys zurück

clean-all
  1. Erstellen der Zertifikate

    build-ca
    build-dh
    
  2. Erstellen des Serverkey

    build-key-server server
    
  3. Erstellen der Clientkeys

    build-key client
    

    PKCS12 Format (kombiniert key und ca Zertifikate in einer Datei)

    build-key-pkcs12 client
    
  4. anschliessend kopieren wir die benötigten Dateien nach /etc/openvpn

    cd /etc/easy-rsa/keys
    cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn/
    

Backup der Dateien nicht vergessen! und weiter zur OpenVPN – Konfiguration.

vi /etc/config/openvpn

config 'openvpn' 'lan'
        option 'enable' '1'
        option 'port' '1194'
        option 'proto' 'udp'
        option 'dev' 'tun'
        option 'ca' '/etc/easy-rsa/keys/ca.crt'
        option 'cert' '/etc/easy-rsa/keys/server.crt'
        option 'key' '/etc/easy-rsa/keys/server.key'
        option 'dh' '/etc/easy-rsa/keys/dh1024.pem'
        option 'crl_verify' '/etc/easy-rsa/keys/crl.pem'
        option 'ifconfig_pool_persist' '/tmp/ipp.txt'
        option 'keepalive' '10 120'
        option 'comp_lzo' 'no'
        option 'persist_key' '1'
        option 'persist_tun' '1'
        option 'status' '/var/log/openvpn-status.log' 
        option 'verb' '3'
        option 'server' '10.0.0.0 255.255.255.0'
        option 'client_to_client' '1'
        list 'push' 'redirect-gateway def1'
        list 'push' 'dhcp-option DNS 192.168.1.1'
	list 'push' 'route 192.168.1.0 255.255.255.0'

An der Stelle auch wieder beachten, wer andere Netze nutzt oder nutzen möchte anpassen! Als nächstes passen wir die Firewall an, damit wir uns verbinden können:

vi /etc/config/firewall

config 'include' 
        option 'path' '/etc/firewall.user' 
config 'rule' 
        option 'target' 'ACCEPT' 
        option 'name' 'VPN' 
        option 'src' 'wan' 
        option 'proto' 'udp' 
        option 'dest_port' '1194'
vi /etc/firewall.user

iptables -t nat -A prerouting_wan -p udp --dport 1194 -j ACCEPT 

iptables -A input_wan -p udp --dport 1194 -j ACCEPT 
iptables -I INPUT -i tun+ -j ACCEPT 
iptables -I FORWARD -i tun+ -j ACCEPT 
iptables -I OUTPUT -o tun+ -j ACCEPT 
iptables -I FORWARD -o tun+ -j ACCEPT
/etc/init.d/openvpn start
/etc/init.d/openvpn enable

Als letztes bleibt die Konfiguration des Client OpenVPN. Ein beispiel für eine Konfigurationsdatei zum einbinden könnte wie folgt aussehen.

client tls-client 
dev tun 
proto udp 
remote 
infinite nobind 
ca ca.crt 
cert client.crt 
key client.key 
dh dh1024.pem 
#comp-lzo 

persist-tun 
persist-key 
verb 3

Abschliessend kopieren wir noch folgende Dateien ca.crt, client.crt, client.key und dh1024.pem welche sich unter /etc/easy-rsa/keys/ auf dem Router befinden. Notfalls Pfade zu den Dateien auf dem Client anpassen!