OpenVPN auf QNAP installieren

Aus NAS Wiki

Wechseln zu:Navigation, Suche

Inhaltsverzeichnis

Vorbemerkungen

---> English version


  • Dieses Tutorial funktioniert nun auch für Raidsonic NAS-Boxen (siehe unten).



Was kann OpenVPN?

OpenVPN bietet die Möglichkeit, sich über eine sichere Verbindung mit einem entfernten Rechner oder Netzwerk zu verbinden.
OpenVPN lässt sich auf vielen Plattformen darunter auch Windows, Linux und Mac installieren, und bietet einige plattformunabhängige, grafische Administrationswerkzeuge für den server.
OpenVPN ist nicht kompatibel zu dem windows VPN-Tool. Es lässt sich jedoch nach der ersten Installation & Konfiguration ebenso einfach bedienen (Öffnen der VPN-Verbindung per Mausklick).
OpenVPN ist ein komplexes Programm mit umfangreichen Konfigurationsmöglichkeiten, es bietet also noch viel weiter reichende Optionen, als hier beschrieben. Wenn du mehr aus OpenVPN herausholen willst, findest du am Ende eine Leseliste mit weiterführender Information.

Ziel dieser Anleitung

Mit diesem HowTo wird ein VPN server auf dem NAS installiert, wodurch sämtliche Dienste incl. der Windows Freigaben für einen oder mehrere user über eine SSL/TLS-VPN Verbindung erreichbar sind.
Zusätzlich wird ein Windows-PC als VPN client eingerichtet, sowie zum Erstellen der Zertifikate und Schlüssel verwendet.

Auf welchen Geräten funktioniert diese Installation?

Dieses Howto wurde für folgende Geräte geschrieben:

QNAP

  • TS-109 (pro / II)
  • TS-209 (pro / II)
  • TS-409 (pro)

(Firmware 2.1.4 verursacht Schwierigkeiten beim autostart. Einen workaround gibt es hier).

  • TS-219 (pro), TS-239 (pro)

(möglich laut diesem Kommentar. Bitte noch um Bestätigung; Diskussion im Forum thread. x19/x39 Benutzer können manche Teile der Anleitung überspringen. Entsprechende Kommentare sind gesetzt)


Raidsonic

  • IB-NAS1000-B
  • IB-NAS2000-B
  • IB-NAS2001-B
  • IB-NAS4210-B
  • IB-NAS4220-B

Voraussetzungen

  • Ein NAS wie oben genannt.
  • ssh-server aktiv (nur QNAP)
  • Ein Windows-PC zum Erstellen der Schlüssel, PuTTY und winSCP auf dem PC.
  • Linux-Grundkenntnisse, wie hier beschrieben.
  • Ein account bei DynDNS und das Wissen, wie man das Heimnetzwerk damit erreichbar macht.
  • Wissen, wie man eine Portweiterleitung auf dem Modem/Router des eigenen Heimnetzwerks einrichtet.
  • Raidsonic: Eine offene Firmware, die die Installation von Software-Paketen über den "new_software"-Mechanismus unterstützt.


ssh-Login Details:

Gerät login username login passwort
QNAP admin admin-passwort
Raidsonic root admin-passwort

Rückmeldungen

Rückmeldungen, Kritik und Verbesserungsvorschläge sind erwünscht und können hier angebracht werden: QNAP; IB-4220-B. IB-200x/IB-1000

Haftungsausschluss

Jeglicher Eingriff ins System erfolgt auf eigene Gefahr.

Installation

optware auf dem NAS installieren

QNAP:

  • Auf der Administrationsoberfläche einloggen.
  • --> System Tools -->QPKG -->Get QPKG -->Optware IPKG
  • Die zum Gerät passende Version herunterladen
  • --> System Tools -->QPKG -->Auswählen (das heruntergeladene Paket markieren) -->upload (Bestätigen)

Die Box installiert nun das softwarepaket und wird neu starten. Danach auf derselben page ipkg anklicken und mit "Enable" aktivieren, falls der status anders lautet.


Raidsonic:

OpenVPN auf dem NAS installieren

Falls in diesem Kapitel nach der Eingabe eines Kommandos eine Fehlermeldung ausgegeben wird (...command not found), die Box neu starten.


  • Mittels PuTTY (oder einem anderen Konsolenprogramm) mit dem NAS verbinden.
  • Folgende Kommandos absetzen (copy & paste in PuTTy)
# ipkg update
# ipkg install openvpn
# mkdir /opt/etc/openvpn/log
# touch /opt/etc/openvpn/log/openvpn.log
# touch /opt/etc/openvpn/log/status.log
# mkdir /opt/etc/openvpn/modules

Das fehlende tun.ko Modul nachinstallieren

OpenVPN wird zwar komplett installiert, um funktionieren zu können, benötigt es jedoch ein zusätzliches Kernel-Modul.

Herunterladen des Moduls

(TS-x19/x39 Benutzer bitte hier weitermachen)

  • Das passende Archiv herunterladen: TS-109/TS-209, TS-409.
  • Das Archiv mit winSCP nach /opt/etc/openvpn/modules kopieren.
  • PuTTY:
# cd /opt/etc/openvpn/modules
# tar -xjf Archivname


Installieren des Moduls

  • TS-109/209/409: Die Datei autorun.sh herunterladen.
  • TS-x19/x39: Diese_Datei herunterladen und in "autorun.sh" umbenennen.
  • PuTTy:
# mount -t ext2 /dev/mtdblock5 /tmp/config
  • Mit winSCP nach /tmp/config navigieren.
  • Falls autorun.sh bereits existiert, die bestehende Datei mit den letzten drei Zeilen der heruntergeladenen ergänzen. Achtung: keinesfalls den windows-editor verwenden. Benutze den in winSCP integrierten editor!
  • Falls autorun.sh noch nicht vorhanden ist, die heruntergeladene Datei mit winSCP dorthin kopieren.
  • Die Datei ausführbar machen: oder in winSCP F9 bzw. Rechtsklick--> Eigenschaften: 0755
  • PuTTY:
# umount /tmp/config
  • Neustart.

Es sollte nun bei jedem start das tun-Modul automatisch geladen werden. Wir überprüfen das nach dem Neustart in PuTTY:

# lsmod
tun 8896 0 - Live 0xbf037000



OpenVPN ist nun komplett installiert und lauffähig. Falls du weisst, wie openVPN zu konfigurieren ist, kannst du nun mit deiner eigenen config fortfahren. Falls du OpenVPN das erste mal aufsetzt, geht es noch weiter.


OpenVPN auf dem PC installieren

  • OpenVPN GUI herunterladen und auf dem PC installieren.

Die Schlüssel erzeugen

Um eine sichere Datenübertragung zu gewährleisten benötigen wir einen Satz Schlüssel. Diese werden hier auf dem Windows-PC erzeugt, da dies schnell und verhältnismäßig einfach geht.

Schlüsselerzeugung vorbereiten

  • Eine windows-Konsole öffnen (-->Start -->Ausführen -->cmd)
# cd \programme\openvpn\easy-rsa
# init-config


  • Die Datei vars.bat editieren:

Mit dem win-explorer (oder winSCP) nach C:\Programme\OpenVPN\easy-rsa\ navigieren, vars.bat zum Bearbeiten öffnen, die letzten Zeilen der Datei den eigenen Anforderungen entsprechend ergänzen (Klammerbemerkungen gehören nicht dazu):

set KEY_COUNTRY=DE (für Deutschland)
set KEY_PROVINCE=Dein Bundesland
set KEY_CITY=Deine Stadt
set KEY_ORG=QNAP-OpenVPN (oder einen Servernamen deiner Wahl)
set KEY_EMAIL=thomas@mustermann.com
  • Nun wieder in der Konsole:
# vars
# clean-all

Erzeugen der certificate authority

# build-ca

build-ca wird einige Eingaben erfragen, nachdem wir aber zuvor vars.bat bereits editiert haben, können wir die vorgegeben Werte einfach mit der Eingabetaste bestätigen. Die Ausgabe sieht ungfähr so aus:

ai:easy-rsa # ./build-ca
Generating a 1024 bit RSA private key
............++++++
...........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address [me@myhost.mydomain]:

Bei Common Name einen gewünschten Namen für den Server eingeben

Server-Schlüssel erzeugen

# build-key-server server

Bei Common Name server eingeben Sign the certificate? [y/n] und 1 out of 1 certificate requests certified, commit? [y/n] mit y bestätigen.

Schlüssel für die clients erzeugen

Jeder Client muss einen eigenen Schlüssel erhalten.

# build-key client1

erzeugt einen Schlüssel für den client client1. Bei Common Name "client1" eingeben. Für jeden weiteren client (also jeder weiterer PC, der sich über VPN mit dem server verbinden möchte) den build-key Befehl mit dem entsprechenden Namen wiederholen.

Diffie-Hellman Parameter erzeugen

# build-dh

Das dauert eine Weile (je nach Leistung des PC bis zu einigen Minuten)

Die Schlüssel verteilen

Wir finden in C:\Programme\OpenVPN\easy-rsa\keys nun foldende Dateien:

Datei benötigt von Zweck geheim
ca.crt server + alle clients Root CA Zertifikat NEIN
ca.key nur der zertifizierende PC Root CA Schlüssel JA
dh1024.pem nur server Verschlüsselungsparameter NEIN
server.crt nur server Server Zertifikat NEIN
server.key nur server Server Schlüssel JA
client1.crt nur client client1 Zertifikat NEIN
client1.key nur client client1 Schlüssel JA


Die client-Schlüssel für den PC befinden sich bereits an der richtigen Stelle.

  • Die Zertifikate und Schlüssel für den server mittels winSCP hierhin kopieren (Kopieroption binär wählen):

/opt/etc/openvpn/keys

  • Die Rechte der Schlüssel auf 0600 setzen.

OpenVPN konfigurieren

Szenario

Folgendes Netzwerk-Szenario wird angenommen, bzw. durch die OpenVPN Konfiguration erzeugt, die IP-Adressbereiche sind in den config-Dateien den Gegebenheiten entsprechend anzupassen:

  • Das Heimnetzwerk ist über DynDNS erreichbar.
  • Der Adressbereich des Heimnetzes lautet 192.168.4.0/255.255.255.0
  • Das NAS hat die IP-Adresse 192.168.4.7
  • Der OpenVPN Server erzeugt ein virtuelles Netzwerk 10.8.0.0/255.255.255.0 (VPN-Tunnel)
  • Die IP-Adresse des servers lautet 10.8.0.1, die clients bekommen vom server entsprechende 10.8.0.x Nummern zugeteilt.

Server-Konfiguration

  • Zeilen mit # sind nur Bemerkungen und können letztlich gelöscht werden.
  • Zeilen mit ";" beinhalten eine Konfigurationsanweisung, die bei Bedarf durch das Löschen des ; aktiviert wird
  • Mit winSCP nach /opt/etc/openvpn navigieren und die Datei easy.conf anlegen
  • Diese Konfiguration hineinkopieren:
# OpenVPN server Konfiguration QNAP NAS
# Basiseinstellungen
port 1194
proto udp
dev tun
#
# Legt die IP-Adressen der zugrundeliegenden VPN Verbindung fest 
server 10.8.0.0 255.255.255.0
#
; mtu-test  # mtu-Wert feststellen, falls die Übertragung sehr langsam ist.
; tun-mtu xyz  # mtu Wert festlegen, falls notwendig
#
# Route 
push "route 192.168.4.0 255.255.255.0"   #  <--- Hier die IP des Heimnetzwerks eintragen!
#
# Schlüssel und Zertifikate
dh /opt/etc/openvpn/keys/dh1024.pem
ca /opt/etc/openvpn/keys/ca.crt
cert /opt/etc/openvpn/keys/server.crt
key /opt/etc/openvpn/keys/server.key
#
# Datenkomprimierung
comp-lzo
#
# Erlaubt, dass sich mehrere clients mit dem selben common name anmelden
; duplicate-cn
#
# Verschiedene clients können sich gegenseitig sehen
; client-to-client
#
# Keepalive
keepalive 15 120
#
# Meldungen in der Konsole (1-9 möglich. Zur Fehlerbehebung aktivieren)
; verb 5
mute 30  # logging nach 30 gleichen Einträgen einstellen bis zu einer Änderung
#
# Log
; status /opt/etc/openvpn/log/status.log
; log-append /opt/etc/openvpn/log/openvpn.log
# 
# Run as daemon (Erst aktivieren, wenn alles eingerichtet ist und läuft)
;daemon
#
# Management Interface über "telnet localhost 7505" zu erreichen
management localhost 7505
  • Die Datei speichern und schließen.

Client-Konfiguration

  • Auf dem PC nach C:\Programme\OpenVPN\config navigieren und die Datei easyclient.ovpn erzeugen.

Diese Konfiguration hineinkopieren:

# connect to QNAP OpenVPN Server
# 
proto udp
dev tun
tls-client
remote supernetzwerk.dyndns.org 1194  #  <--- Hier deinen dyndns-account eintragen
pull
# mtu-Wert festlegen, falls notwendig
; tun-mtu xyz
#
resolv-retry infinite
nobind
persist-key
persist-tun
# Zertifikate und Schlüssel
# Beachte die doppelten \\ in der Pfadangabe für eine windows-config
ca C:\\Programme\\OpenVPN\\easy-rsa\\keys\\ca.crt
cert C:\\Programme\\OpenVPN\\easy-rsa\\keys\\client1.crt
key C:\\Programme\\OpenVPN\\easy-rsa\\keys\\client1.key
#
comp-lzo

Portfreigabe

Im Router des Heimnetzwerks eine Portfreigabe / Portweiterleitung des ports 1194 (UDP) an das NAS einrichten.
Falls noch kein DynDNS-account angelegt und eingerichtet wurde, ist es für Internetuser mit Dynamischen IP-Adressen spätestens jetzt an der Zeit, dies zu tun.

Testlauf

Server starten

  • Den server in PuTTY starten:
# cd /opt/etc/openvpn
# openvpn easy.conf

Das erzeugt in etwas diese Ausgabe:

Mon Dec  8 03:52:22 2008 OpenVPN 2.1_rc9 arm-none-linux-gnueabi [SSL] [LZO1] [EPOLL] built on Aug 19 2008
Mon Dec  8 03:52:22 2008 TUN/TAP device tun0 opened
Mon Dec  8 03:52:22 2008 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Mon Dec  8 03:52:22 2008 UDPv4 link local (bound): [undef]:1194
Mon Dec  8 03:52:22 2008 UDPv4 link remote: [undef]
Mon Dec  8 03:52:22 2008 Initialization Sequence Completed

Client starten

  • Nun auf dem client (der bevorzugterweise nicht über dieselbe Leitung ins internet geht, ev. UMTS-Karte verwenden) OpenVPN durch einen Rechtsklick auf easyclient.ovpn starten.

Dies erzeugt in der Konsole des servers diese zusätzlichen Einträge:

Mon Dec  8 03:59:52 2008 194.24.x.y:20955 Re-using SSL/TLS context
Mon Dec  8 03:59:52 2008 194.24.x.y:20955 LZO compression initialized
Mon Dec  8 03:59:54 2008 194.24.x.y:20955 [client1] Peer Connection Initiated with 122.23.x.y:20955
  • In der Windows Taskleiste erscheint ein neues Symbol (zwei rote, bzw. grüne Bildschirme) über die sich openVPN künftig per Rechtsklick steuern lässt.
  • In Windows wird eine weitere LAN-Verbindung erzeugt, die eine Adresse aus dem 10.8.0.0 Adressraum hat.

Die Verbindung prüfen

  • In der Windows Konsole eingeben:
# ping 10.8.0.1

Es sollten vier korrekte Antworten des servers erfolgen.

  • Ein ping vom server an den client (ip-Adresse herausfinden durch Rechtsklick auf die neue LAN-Verbindung -->Status -->Netzwerkunterstützung) würde nur dann funktionieren, wenn die windows-firewall für diese Verbindung geöffnet wird. Für den normalen Betrieb kann und soll die firewall geschlossen bleiben.
  • win-explorer auf dem client PC öffnen
  • IP-Adresse des NAS eingeben (in diesem Szenario wäre das \\192.168.4.7)
  • Die shares (Windowsfreigaben) des NAS sollten nun angezeigt werden und erreichbar sein.
  • Wenn das alles geklappt hat, ist es Zeit für ein Bier.

Endkonfiguration

Server config anpassen

  • Ein zweites PuTTY-Fenster öffnen
# killall openvpn

beendet den server

  • Nun die easy.config öffnen und die Anweisung daemon auskommentieren (";" entfernen), also aktivieren.
  • Falls eine Log-Datei gewünscht ist log-append auskommentieren. Die Log-Datei wird dann immer weitergeführt.
  • Falls bei jedem serverstart die Log-Datei neu angelegt (und überschrieben) werden soll, log-append in log umändern.

Autostart

Wenn du willst, kannst du OpenVPN beim booten der Box automatisch mitstarten lassen.

  • QNAP: Die Datei autorun.sh wie vorher beschrieben zum editieren öffnen. (umount am Ende wieder durchfühen.)
  • Raidsonic: /public/applications/openvpn/init. zum editieren öfnnen.
  • Füge diese Zeile am Ende dazu (bzw. kommentiere sie aus, also das #-Zeichen entfernen)
(sleep 12; /opt/sbin/openvpn /opt/etc/openvpn/easy.conf)&
  • Falls nach einem reboot das Kommando ps in PuTTY nicht eine Zeile ähnlich dieser ausgibt
 1108 admin      1800 S   /opt/sbin/openvpn /opt/etc/openvpn/easy.conf

läuft OpenVPN nicht. Probiere es mit einer längeren Zeit beim sleep Kommando im script. sleep 60 sollte auf jeden Fall funktionieren, es dauert dann aber eine knappe Minute, bis OpenVPN läuft, also etwas Geduld bei der Abfrage.


Du hast nun einen VPN-Server auf dem NAS laufen, der es dir erlaubt, dich aus der Ferne mit dem NAS zu verbinden. Du kannst auf alle Dienste und die Freigaben zugreifen.


Mehr OpenVPN

Administration

Telnet Management Interface

Das Management Interface ist ein kommandozeilenorientiertes management tool und bietet (falls aktiviert) die Möglichkeit, den laufenden VPN-Server zu kontrollieren.

  • ssh-Verbindung zum server aufbauen
  • telnet localhost 7505 eingeben
  • help listet die verfügbaren Kommandos auf, status zeigt die verbundenen clients und ihre Parameter an.

GUI

  • OpenVPN GUI ist ein kleines, schlankes windows-tool, um einen Tunnel per Mausklick zu öffnen / schließen.
  • gopenvpn kann das selbe für Linux. Siehe auch hier.
  • Tunnelblick ist ein kompletter, grafischer OpenVPN-client für Mac.
OpenVPN-Control

OpenVPN-Control ist ein kleines, schlankes, grafisches OpenVPN-Server control tool für Windows, Linux und Mac. Mittels VPN/ssh kann es sich auch mit einem remote server verbinden.
Es zeigt die Status-Informationen aus dem Management Interface übersichtlich an und bietet die Möglichkeit, clients vom server zu trennen. OpenVPN-control kann den status von mehreren servern gleichzeitig anzeigen.

OpenVPN Admin

OpenVPN Admin ist eine sehr benutzerfreundliche, komplette OpenVPN client-Installation mit einem grafischen Administrationstool um Zertifikate und Schlüssel zu erzeugen und zu verwalten und Konfigurationen per Mausklick zu erstellen und zu verändern. Die Verbindung mit einem server kann natürlich ebenso leicht hergestellt werden. OpenVPN Admin ist für Windows und Linux erhältlich und benötigt mono.

XCA

XCA ist eine schlanke CA mit grafischem userinteface um Schlüssel zu erzeugen und zu verwalten.

Extras

OpenVPN Extras

Probleme und Lösungen

OpenVPN auf QNAP - Troubleshooting

OpenVPN client side - Troubleshooting

Weiterführender Lesestoff

Ich habe mir das hier zusammengetragene Wissen aus diesen Quellen erworben:

  • Michael Kofler: Linux. ISBN 978-3-8273-2478-8. Immer wieder lesenswert.
  • Ein englisches HowTo für eine frühere Version von OpenVPN auf QNAP gibt es hier. Von hier stammt das Kernel-Modul.
  • Alles über OpenVPN erfährt man natürlich beim Hersteller. Empfehlenswert sind u.a. das HOWTO und das Mini-HOWTO.
  • Es gibt auch ein deutschsprachiges OpenVPN-Forum, nebst einem wiki, das eine sehr gut Erklärung der syntax enthält.
  • Gute Erklärungen zu den Konfigurationsparametern finden sich hier.
  • Der Trick mit autorun wird hier erklärt.

Zurück zur Übersicht: Qnap