OpenVPN: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Konfigurationsdatei (opennet.conf): redirect ohne local)
(Hardware Performance Messungen)
(30 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Vorwort ==
 
== Vorwort ==
Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen. Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem Accesspoint nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden.
+
Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen (ein sog. Virtuelles Privates Netz). Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem [[Accesspoint]] nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden.
  
 
<div style="background-color:#EEEEEE;">
 
<div style="background-color:#EEEEEE;">
 
'''DISCLAIMER - Keine öffentliche Zertifizierungsstelle!'''
 
'''DISCLAIMER - Keine öffentliche Zertifizierungsstelle!'''
  
Diese Seite beschreibt die Einrichtung eines openvpn-clients zur Verbindung mit einem Gateway der [[Hauptseite|Opennet-Initiative e.V.]].
+
Die Nutzung der auf Anfrage von der Opennet Initiative ausgestellten Zertifikate ist nur für Opennet-interne Zwecke sinnvoll.  
Die Nutzung der auf Anfrage von der Opennet-Initiative ausgestellten Zertifikate ist nur für Opennet-interne Zwecke sinnvoll.  
+
 
An uns gestellte Anfragen für Zertifikate für Nutzung '''für Opennet-fremde Zwecke''' demonstrieren ein grundlegendes Unverständnis der benutzten Algorithmen und Technologien beim Anfragesteller, und werden von uns nicht bearbeitet.
 
An uns gestellte Anfragen für Zertifikate für Nutzung '''für Opennet-fremde Zwecke''' demonstrieren ein grundlegendes Unverständnis der benutzten Algorithmen und Technologien beim Anfragesteller, und werden von uns nicht bearbeitet.
Die Aufnahme der für derartige Anfragen verantwortlichen Personen und Organisationen in eine Hall of Shame bleibt vorbehalten.
 
 
</div>
 
</div>
  
Zeile 20: Zeile 18:
 
'''Linux''': http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw.  "Universal TUN/TAP device driver support").
 
'''Linux''': http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw.  "Universal TUN/TAP device driver support").
  
'''Mac OS''': http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle)
+
'''Mac OS''': http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle, kann auch per Homebrew installiert werden)
  
 
== Zertifikat erstellen ==
 
== Zertifikat erstellen ==
  
Für die Verschlüsselung und Authentifizierung innerhalb des Opennets ist ein digitales Zertifikat (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das Zertifikat erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine ''Request''-Datei (Certificate Sign Request - '''.csr''') erstellt. Diese ''Request''-Datei wird an [mailto:csr@opennet-initiative.de csr@opennet-initiative.de] geschickt.  
+
Für die [[Verschlüsselung]] und Authentifizierung innerhalb des Opennets ist ein digitales [[Zertifikat]] (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das '''Zertifikat für das Opennet''' erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine ''Request''-Datei (Certificate Sign Request - '''.csr''') erstellt. Diese ''Request''-Datei wird an [mailto:csr@opennet-initiative.de csr@opennet-initiative.de] geschickt.  
  
Hier wird daraus dann mit hilfe des [http://de.wikipedia.org/wiki/Digitales_Zertifikat Stamm-Zertifikates] vom Opennet oder einem davon abgeleitetem Intermediate-CA Zertifikat Dein Zertifikat ('''.crt''' Datei) erstellt. Das ist dann durch die Opennet [http://de.wikipedia.org/wiki/Certification_Authority CA] beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets.
+
Hier wird daraus dann mit Hilfe des [http://de.wikipedia.org/wiki/Digitales_Zertifikat Stamm-Zertifikates] vom Opennet Dein Zertifikat ('''.crt''' Datei) erstellt. Das ist dann durch die [[Opennet- CA]] beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets.
  
 
=== Windows ===
 
=== Windows ===
Zeile 68: Zeile 66:
 
State or Province Name (full name) [CA]: Mecklenburg-Vorpommern
 
State or Province Name (full name) [CA]: Mecklenburg-Vorpommern
 
Locality Name (eg, city) [SanFrancisco]: Rostock
 
Locality Name (eg, city) [SanFrancisco]: Rostock
Organization Name (eg, company) [FortFunston]: VornameNachname
+
Organization Name (eg, company) [FortFunston]: Vorname Nachname
Organizational Unit Name (eg, section) []: OUN
+
Organizational Unit Name (eg, section) []: Opennet User
Common Name (eg, your name or your server's hostname) []: 99.aps.on
+
Common Name (eg, your name or your server's hostname) []: 1.99.aps.on
 
Email Address [mail@host.domain]: du@provider.de
 
Email Address [mail@host.domain]: du@provider.de
  
Zeile 83: Zeile 81:
 
</pre>
 
</pre>
  
Im Verzeichnis keys/ liegt dann dein eigener Schlüssel '''VornameNachname.key''' und die ''Request''-Datei namens '''VornameNachname.csr'''. Diese Datei (und nur diese Datei) schickst du jetzt an [mailto:csr@opennet-initiative.de csr@opennet-initiative.de] - gib in der mail bitte den zur CSR-Erstellung eingegebenen CN ('''XX.aps.on''' oder '''XX.mobile.on''') an. Das signierte Zertifikat kommt dann per E-Mail zurück: '''?_XX.crt'''. Da es manuell erzeugt werden muss, bitte etwas Geduld. Wenn es erzeugt wurde, steht das Zertifikat in dieser [http://titan.www.opennet-initiative.de/openvpn/user_cn_valid_list/ Liste].
+
Im Verzeichnis keys/ liegt dann dein eigener Schlüssel '''VornameNachname.key''' und die ''Request''-Datei namens '''VornameNachname.csr'''. Diese Datei (und nur diese Datei) schickst du jetzt an die [[Opennet CA]] Das '''nur für Opennet Zwecke gültige''' signierte Zertifikat kommt dann per E-Mail zurück. Da es manuell erzeugt werden muss, bitte etwas Geduld.
  
Dazu musst du dir noch die Opennet-CA Datei [http://titan.www.opennet-initiative.de/openvpn/ca.crt ca.crt] downloaden und du kommst insgesamt auf vier Dateien:
+
Dazu musst du dir noch die Opennet-CA Datei downloaden und du kommst insgesamt auf vier Dateien:
 
* ca.crt
 
* ca.crt
 
* VornameNachname.key
 
* VornameNachname.key
Zeile 119: Zeile 117:
 
dev tun
 
dev tun
 
proto udp
 
proto udp
ns-cert-type server
+
remote-cert-tls server
 
remote 192.168.0.247 1600
 
remote 192.168.0.247 1600
nobind
+
nobind  
user nobody
+
group nobody
+
 
persist-key
 
persist-key
 
persist-tun
 
persist-tun
Zeile 129: Zeile 125:
 
cert C:/Programme/OpenVPN/easy-rsa/keys/XX.crt
 
cert C:/Programme/OpenVPN/easy-rsa/keys/XX.crt
 
key C:/Programme/OpenVPN/easy-rsa/keys/XX.key
 
key C:/Programme/OpenVPN/easy-rsa/keys/XX.key
comp-lzo
+
compress
 
redirect-gateway local
 
redirect-gateway local
 
</pre>
 
</pre>
Zeile 156: Zeile 152:
 
=== MacOS ===
 
=== MacOS ===
  
 +
* Tunnelblick z.B. per [https://brew.sh Homebrew] installieren: ''brew cask install tunnelblick''
 
* in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten)
 
* in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten)
* Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist stets ''~/Libary/openvpn/''
+
* Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist ''~/Libary/openvpn/''
 
* Verbindung über Tunnelblick starten/stoppen
 
* Verbindung über Tunnelblick starten/stoppen
  
 
=== Konfigurationsdatei (opennet.conf) ===
 
=== Konfigurationsdatei (opennet.conf) ===
 
+
====Zusammenfassung====
 
<pre>
 
<pre>
 
client
 
client
 
dev tun
 
dev tun
 
proto udp
 
proto udp
ns-cert-type server
+
remote-cert-tls server
 
remote <gateway> 1600
 
remote <gateway> 1600
 
nobind
 
nobind
user nobody
+
#user nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat
group nobody
+
#group nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat
 
persist-key
 
persist-key
 
persist-tun
 
persist-tun
Zeile 176: Zeile 173:
 
cert <cert-filepath>
 
cert <cert-filepath>
 
key <key-filepath>
 
key <key-filepath>
comp-lzo
+
compress
 +
route 192.168.0.0 255.255.0.0 net_gateway
 
redirect-gateway
 
redirect-gateway
 
</pre>
 
</pre>
Zeile 183: Zeile 181:
 
* <*-filepath> durch den Pfad zu den Dateien ersetzen
 
* <*-filepath> durch den Pfad zu den Dateien ersetzen
  
=== Beschreibung der Konfigurationsdatei ===
+
==== Beschreibung der Konfigurationsdatei ====
  
 
Ein paar Erläuterungen, für die Interessierten:
 
Ein paar Erläuterungen, für die Interessierten:
Zeile 201: Zeile 199:
 
* UDP Protokoll
 
* UDP Protokoll
 
<pre>
 
<pre>
ns-cert-type server
+
remote-cert-tls server
 
</pre>
 
</pre>
 
* Bestehe auf ein server-type certificate beim peer
 
* Bestehe auf ein server-type certificate beim peer
 
<pre>
 
<pre>
remote 192.168.0.254 1600
+
remote 192.168.0.<gw-ip> 1600
 
</pre>
 
</pre>
* Server 192.168.0.254 (Titan)
+
* einen Gatewayserver entsprechend [[Opennet Server]] eintragen
 
* UDP-Port 1600
 
* UDP-Port 1600
 
<pre>
 
<pre>
Zeile 220: Zeile 218:
 
* Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses
 
* Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses
 
* Wird von der windows-version grundsätzlich ignoriert
 
* Wird von der windows-version grundsätzlich ignoriert
 +
* Bei der naiven Anwendung unter linux entsteht das Problem das beim Verbindungsabbau, die "ip route add/del" Kommandos fehlschlagen, weil der User nobody keine Rechte hat. Dies resultiert in z.B. einer fehlenden Default Route nach Verindungsabbau. Als Lösung kann man entweder diese Zeilen auskommentieren oder dem nobody User Rechte verschaffen (siehe https://community.openvpn.net/openvpn/wiki/HOWTO#UnprivilegedmodeLinuxonly).
 
<pre>
 
<pre>
 
persist-key>
 
persist-key>
Zeile 229: Zeile 228:
 
key <key-filepath>
 
key <key-filepath>
 
</pre>
 
</pre>
* ''<*-filepath>'' Ist mit Pfaden zu den relevanten Dateien erstzen
+
* ''<*-filepath>'' Ist mit Pfaden zu den relevanten Dateien ersetzen
* Das Zertifikat der Opennet-CA [http://titan.www.opennet-initiative.de/openvpn/ca.crt ca.crt]
+
* Das Zertifikat der Opennet-CA [http://ca.opennet-initiative.de/server_certchain.crt server_certchain.crt]
 
* Das Zertifikat gibt es als Antwort auf eine mail des ''Certificate Signing Requests'' (CSR) an [mailto:csr@opennet-initiative.de]
 
* Das Zertifikat gibt es als Antwort auf eine mail des ''Certificate Signing Requests'' (CSR) an [mailto:csr@opennet-initiative.de]
 
* Der key wird zusammen mit dem CSR von [[OpenVPN_unter_Windows|openssl]] erzeugt
 
* Der key wird zusammen mit dem CSR von [[OpenVPN_unter_Windows|openssl]] erzeugt
 
<pre>
 
<pre>
comp-lzo
+
compress
 
</pre>
 
</pre>
 
* Datenkomprimierung
 
* Datenkomprimierung
Zeile 242: Zeile 241:
 
* ersetzt die Default-Route durch den Tunnelendpunkt
 
* ersetzt die Default-Route durch den Tunnelendpunkt
 
* sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet
 
* sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet
 
 
  
 
== Portmapping  ==
 
== Portmapping  ==
  
Die offiziellen Opennet Gateways bieten für Nutzer von openvpn-tunneln zur Kommunikation mit dem jeweiligen Gateway Destination Network Address Translation (DNAT) von 10 aufeinanderfolgenden ports, sowohl für tcp als auch für udp, von ihrer globalen (internet) IP Adresse an. Die geforwardeten Ports hängen direkt von der Adresse des OpenVpn Endpunkts (10.1.*.*), und damit momentan auch von der tatsächlichen internen opennet-IP dieses Systems (192.168.*.*) ab. Dieses Dokument beschreibt den Algorithmus zur Ermittlung der zu einer OpenVpn geforwardeten portrange.
+
Die Nutzerdokumentation findet sich unter [[Portforwarding]]. Die technische Umsetzung wird unter [[Server Installation/OpenVPN]] beschrieben.
  
=== Algorithmus ===
+
== Externer VPN Zugang ==
  
* Setze n gleich 10000.
+
Falls man aus dem Internet sich an das Opennet koppeln will, etwa um Wartungsarbeiten durchzuführen oder einen gesicherten Internet Tunnel aufzubauen, geht man wie oben beschrieben vor. Allerdings ist die Konfiguration leicht abweichend:
* Falls der Common Name des client-Certificates weder der Form "*.aps.on" noch der Form "*.mobile.on" entspricht gibt es keine zu diesem System geforwardeten ports. Andernfalls:
+
* Falls der CN der Form "*.mobile.on" entspricht, setze n gleich n+2550
+
* Setze n gleich n+(10*([Systemnummer ("*" in oberen Beispielen)] -1))
+
* Die Portrange ist n bis n+9
+
 
+
''Beispiel:''
+
* CN des Zertifikats ist 14.mobile.on
+
* 10000
+
* 10000 + 255*10 = 12550
+
* 12550 + (10*(14-1)) = 12680
+
* Portbereich wäre dann von 12680 bis 12689
+
 
+
=== Python Skript ===
+
 
<pre>
 
<pre>
#!/usr/bin/env python
+
remote vpn.opennet-initiative.de 1600
BASE_PORT = 10000
+
</pre>
TYPE_AP = 0
+
OLSR wird in diesem Fall nicht benötigt.
TYPE_MOBILE = 1
+
ELEMENT_COUNT = 255
+
PORT_COUNT = 10
+
  
def oontp(target_type, target_no):
+
== Hardware Performance Messungen ==
  if (not (isinstance(target_type,(int,long)))):
+
      raise TypeError('Invalid type %r of value %r for argument target_type.' % (type(target_type), target_type))
+
  if (not (isinstance(target_no,(int,long)))):
+
      raise TypeError('Invalid type %r of value %r for argument target_no.' % (type(target_no), target_no))
+
  if (not (0 <= target_type <= 1)):
+
      raise ValueError('Invalid value %r for argument target_type.' % (target_type,))
+
  if (not (1 <= target_no <= ELEMENT_COUNT)):
+
      raise ValueError('Invalid value %r for argument target_type.' % (target_no,))
+
 
+
  n = BASE_PORT
+
  n += target_type*ELEMENT_COUNT*PORT_COUNT
+
  n += (target_no - 1)*PORT_COUNT
+
  return (n,n+PORT_COUNT-1)
+
  
if (__name__ == '__main__'):
+
Wie gut die verschiedenen Embedded Plattformen mit OpenVPN / AES Encryption arbeiten: https://systemausfall.org/wikis/howto/AES-Performance
  import sys
+
  print oontp(*[int(element) for element in sys.argv[1:3]])
+
  
</pre>
+
<pre>
 +
% openssl speed aes-128-cbc sha256
 +
The 'numbers' are in 1000s of bytes per second processed.
 +
type            16 bytes    64 bytes    256 bytes  1024 bytes  8192 bytes  16384 bytes
 +
aes-128 cbc      7390.15k    8795.19k    9189.21k    9262.12k    9209.62k    9057.68k
 +
sha256            2929.10k    6716.74k    11701.07k    14322.88k    15205.15k    15122.69k
  
Diese Beispiele gehen davon aus, dass sich der o.g. code in der Datei "oontp.py" befindet.<br/>
+
% openssl speed -multi 1 aes-128-cbc sha256
Von einer python Console:
+
aes-128 cbc      7290.00k    8237.89k    8793.94k    8726.53k    8850.09k    8716.29k
<pre>
+
sha256            2016.47k    6366.93k    11212.80k    13582.68k    14816.60k    14559.91k
Python 2.3.5 (#2, May 29 2005, 00:34:43)
+
[GCC 3.3.6 (Debian 1:3.3.6-5)] on linux2
+
Type "help", "copyright", "credits" or "license" for more information.
+
>>> from oontp import *
+
>>> oontp(TYPE_MOBILE,14)
+
(12680, 12689)
+
 
</pre>
 
</pre>
Standalone-Aufruf:
 
<pre>
 
sebastian@pc01$ ./oontp.py 1 14
 
(12680, 12689)
 
</pre>
 
 
=== Portrange-O-Matic ===
 
  
Wenn kein Rechner mit Python zu Verfügung ist kann auch die Opennet [http://www.opennet-initiative.de/portmapper/ Portrange-O-Matic] zum Ausrechnen des Portranges verwendet werden. Einfach IP-Adresse Deines Mobilgerätes eintragen und das Formular abschicken.
+
Damit ergibt sich die Zuordnung aus den Spaltenüberschriften.
  
[[Kategorie:Konfiguration]]
+
[[Category:Dienste]]
 +
[[Category:Anleitungen]]

Version vom 12. Juli 2020, 06:54 Uhr

Inhaltsverzeichnis

Vorwort

Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen (ein sog. Virtuelles Privates Netz). Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem Accesspoint nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden.

DISCLAIMER - Keine öffentliche Zertifizierungsstelle!

Die Nutzung der auf Anfrage von der Opennet Initiative ausgestellten Zertifikate ist nur für Opennet-interne Zwecke sinnvoll. An uns gestellte Anfragen für Zertifikate für Nutzung für Opennet-fremde Zwecke demonstrieren ein grundlegendes Unverständnis der benutzten Algorithmen und Technologien beim Anfragesteller, und werden von uns nicht bearbeitet.

Installation

Nach dem Download die entsprechenden Dateien installieren und den jeweiligen Installationsanleitungen folgen.

Windows: http://openvpn.net/download.html + Graphische Benutzeroberfläche http://openvpn.se/download.html (Unter Windows-XP erscheint eventuell ein Warnhinweis, dass ein Treiber nicht für Windows-XP zertifiziert ist, er kann ignoriert werden.)

Linux: http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw. "Universal TUN/TAP device driver support").

Mac OS: http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle, kann auch per Homebrew installiert werden)

Zertifikat erstellen

Für die Verschlüsselung und Authentifizierung innerhalb des Opennets ist ein digitales Zertifikat (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das Zertifikat für das Opennet erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine Request-Datei (Certificate Sign Request - .csr) erstellt. Diese Request-Datei wird an csr@opennet-initiative.de geschickt.

Hier wird daraus dann mit Hilfe des Stamm-Zertifikates vom Opennet Dein Zertifikat (.crt Datei) erstellt. Das ist dann durch die Opennet- CA beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets.

Windows

Du öffnest unter Windows eine Eingabeaufforderung (Startmenu: Ausführen: cmd) und gibst folgendes ein (jede Zeile mit Enter beenden | OpenVPN wurde hier unter c:\programme\openvpn installiert, also erste Zeile entsprechend anpassen):

cd c:\programme\openvpn\easy-rsa\
init-config.bat
vars.bat
mkdir keys
openssl req -days 3650 -nodes -new -keyout keys\VornameNachname.key -out keys\VornameNachname.csr -config openssl.cnf

Es wurden jetzt die notwendige Konfigurationsdatei erstellt, die Umgebungsvariablen geladen und das Verzeichnis keys im Installationsordner von OpenVPN erstellt. Zuletzt wird eurer Schlüssel und ein Zertifikatsantrag erstellt. Ihr müsst dabei einige Angaben ausfüllen.

An dem Beispiel musst du nur folgendes ändern:

  • Organization Name: deinen Namen (zusammen geschrieben, keine Sonderzeichen)
  • Common Name: muss aus Gründen der eindeutigen Zuordnungsbarkeit der OpenVPN IP Addressen zum verantwortlichen Nutzer der Konvention XX.aps.on oder XX.mobile.on entsprechen - und dem beantragenden Nutzer muss die entsprechende Opennet-IP Adresse (192.168.1.XX bzw. 192.168.7.XX) bereits zugeordnet sein.
  • Email Address: deine E-Mail-Adresse
  • A challenge password: Wenn du hier ein Passwort angibst, wird jedesmal beim Öffnen der OpenVPN-Verbindung danach gefragt. Kann leer gelassen werden.

Beispiel:

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...................++++++
....++++++

writing new private key to 'keys\VornameNachname.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) [US]:de
State or Province Name (full name) [CA]: Mecklenburg-Vorpommern
Locality Name (eg, city) [SanFrancisco]: Rostock
Organization Name (eg, company) [FortFunston]: Vorname Nachname
Organizational Unit Name (eg, section) []: Opennet User
Common Name (eg, your name or your server's hostname) []: 1.99.aps.on
Email Address [mail@host.domain]: du@provider.de

Please enter the following 'extra' attributes
to be sent with your certificate request

A challenge password []:
An optional company name []:

Using configuration from openssl.cnf
Loading 'screen' into random state - done

Im Verzeichnis keys/ liegt dann dein eigener Schlüssel VornameNachname.key und die Request-Datei namens VornameNachname.csr. Diese Datei (und nur diese Datei) schickst du jetzt an die Opennet CA Das nur für Opennet Zwecke gültige signierte Zertifikat kommt dann per E-Mail zurück. Da es manuell erzeugt werden muss, bitte etwas Geduld.

Dazu musst du dir noch die Opennet-CA Datei downloaden und du kommst insgesamt auf vier Dateien:

  • ca.crt
  • VornameNachname.key
  • VornameNachname.csr
  • VornameNachname.crt

Linux / Mac OS

In einem beliebigen Verzeichnis (z.B. Homeverzeichnis) den Request erstellen mit

openssl req -days 3650 -nodes -new -keyout VornameNachname.key \
 -out VornameNachname.csr -config /etc/ssl/openssl.cnf


Wenn das Verzeichnis /etc/ssl nicht existiert, und Openssl installiert ist, liegen die Dateien auch in /usr/share Mit "ln -s /usr/share/ssl /etc/ssl" einen Link erstellen (als root), oder die Dateinamen entsprechend anpassen.

Wenn man bei -keyout und -out kein Verzeichnis angegeben hat, finden sich die Dateien im aktuellen Verzeichnis wieder.

Das übrige Vorgehen ist identisch mit dem vorgegangen Windows-Abschnitt.

Konfiguration

Der folgende Abschnitt beschreibt die für Opennet erforderlichen oder günstigen Einstellungen in der OpenVPN Konfigurationsdatei. Diese lässt sich beim Aufruf von OpenVPN mit der --config Option angeben. Alle der Optionen können auch direkt beim openvpn-Aufruf als Argumente angegeben werden.

Windows

  • config-Ordner öffnen -->c:\programme\openvpn\config
  • rechte Maustaste --> "Neu" --> "Textdokument"
  • Textdokument.txt öffnen --> in den Editor folgende Angaben einfügen
client
dev tun
proto udp
remote-cert-tls server
remote 192.168.0.247 1600
nobind 
persist-key
persist-tun
ca C:/Programme/OpenVPN/easy-rsa/keys/ca.crt
cert C:/Programme/OpenVPN/easy-rsa/keys/XX.crt
key C:/Programme/OpenVPN/easy-rsa/keys/XX.key
compress
redirect-gateway local
  • XX muss nun durch den jeweiligen Dateinamen von der .crt und .key Datei ersetzt werden --> siehe c:\programme\openvpn\easy-rsa\keys
  • "Speichern" und Editor schließen
  • nun muss Textdokument.txt noch umbenannt werden in z.B. client.ovpn

Linux

Die Zertifikate, Schlüssel und Konfigurationsdatei legt mal nach /etc/openvpn/, die sieht dann etwa wie folgt aus

/etc/openvpn/
  opennet.conf  - OpenVPN Konfiguration für Opennet
  21_aps.csr    - Certificate Signing Request (nicht mehr benötigt)
  21_aps.key    - Privater Schlüssel des AP21-Zertifikats
  21_aps.crt    - AP21-Zertifikat (mit öffentlichem Schlüssel)
  ca.crt        - Opennet-CA-Zertifikat (CA = Zertizifierungstelle)

Das Starten und Stoppen der VPN-Tunnel ist denkbar sein, über die Init-Skripte können alle Tunnel gestartet werden, für die im etc-Verzeichniss von OpenVPN eine conf-Datei liegt:

/etc/init.d/openvpn start|stop 

Alternativ kann die Opennet VPN-Verbindung auch mit der Hand gestartet werden:

openvpn --config /etc/opennet.conf

Alle Ausgaben laden standardmäßig in der Console oder im Syslogfile (/var/log/messages). Sie kann aber auch mit appendfile in eine Datei umgeleitet werden, siehe OpenVPN-Manpage.

MacOS

  • Tunnelblick z.B. per Homebrew installieren: brew cask install tunnelblick
  • in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten)
  • Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist ~/Libary/openvpn/
  • Verbindung über Tunnelblick starten/stoppen

Konfigurationsdatei (opennet.conf)

Zusammenfassung

client
dev tun
proto udp
remote-cert-tls server
remote <gateway> 1600
nobind
#user nobody  #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat
#group nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat
persist-key
persist-tun
ca <ca-filepath>
cert <cert-filepath>
key <key-filepath>
compress
route 192.168.0.0 255.255.0.0 net_gateway
redirect-gateway
  • <gateway> durch die IP-Adresse oder DNS-Name des VPN-Servers ersetzen
  • <*-filepath> durch den Pfad zu den Dateien ersetzen

Beschreibung der Konfigurationsdatei

Ein paar Erläuterungen, für die Interessierten:

client
  • tls-client Modus
  • Annahme von begrenzten Konfigurationsbefehlen vom Server
dev tun
  • Nutze ein beliebiges IP-Tunnel device
proto udp
  • UDP Protokoll
remote-cert-tls server
  • Bestehe auf ein server-type certificate beim peer
remote 192.168.0.<gw-ip> 1600
  • einen Gatewayserver entsprechend Opennet Server eintragen
  • UDP-Port 1600
nobind
  • Beliebiger lokaler Port
user nobody
group nobody
  • Wechsle prozess-uid und gid zu der von "nobody" nach Programmstart
  • Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses
  • Wird von der windows-version grundsätzlich ignoriert
  • Bei der naiven Anwendung unter linux entsteht das Problem das beim Verbindungsabbau, die "ip route add/del" Kommandos fehlschlagen, weil der User nobody keine Rechte hat. Dies resultiert in z.B. einer fehlenden Default Route nach Verindungsabbau. Als Lösung kann man entweder diese Zeilen auskommentieren oder dem nobody User Rechte verschaffen (siehe https://community.openvpn.net/openvpn/wiki/HOWTO#UnprivilegedmodeLinuxonly).
persist-key>
  • Versuche nicht key-files nach tunnel-resets erneut zu lesen (eventuell durch user/group Wechsel nicht mehr möglich)
ca <ca-filepath>
cert <cert-filepath>
key <key-filepath>
  • <*-filepath> Ist mit Pfaden zu den relevanten Dateien ersetzen
  • Das Zertifikat der Opennet-CA server_certchain.crt
  • Das Zertifikat gibt es als Antwort auf eine mail des Certificate Signing Requests (CSR) an [1]
  • Der key wird zusammen mit dem CSR von openssl erzeugt
compress
  • Datenkomprimierung
redirect-gateway
  • ersetzt die Default-Route durch den Tunnelendpunkt
  • sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet

Portmapping

Die Nutzerdokumentation findet sich unter Portforwarding. Die technische Umsetzung wird unter Server Installation/OpenVPN beschrieben.

Externer VPN Zugang

Falls man aus dem Internet sich an das Opennet koppeln will, etwa um Wartungsarbeiten durchzuführen oder einen gesicherten Internet Tunnel aufzubauen, geht man wie oben beschrieben vor. Allerdings ist die Konfiguration leicht abweichend:

remote vpn.opennet-initiative.de 1600

OLSR wird in diesem Fall nicht benötigt.

Hardware Performance Messungen

Wie gut die verschiedenen Embedded Plattformen mit OpenVPN / AES Encryption arbeiten: https://systemausfall.org/wikis/howto/AES-Performance

% openssl speed aes-128-cbc sha256
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128 cbc       7390.15k     8795.19k     9189.21k     9262.12k     9209.62k     9057.68k
sha256            2929.10k     6716.74k    11701.07k    14322.88k    15205.15k    15122.69k

% openssl speed -multi 1 aes-128-cbc sha256 
aes-128 cbc       7290.00k     8237.89k     8793.94k     8726.53k     8850.09k     8716.29k
sha256            2016.47k     6366.93k    11212.80k    13582.68k    14816.60k    14559.91k

Damit ergibt sich die Zuordnung aus den Spaltenüberschriften.

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge