OpenVPN: Unterschied zwischen den Versionen

Aus Freifunk Potsdam | Wiki
Zur Navigation springen Zur Suche springen
(ungepflegt?)
 
(52 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Überblick ==
{{Ungepflegt|Diese Seite ist > 10 Jahre alt und vermutlich nicht mehr aktuell}}
OpenVPN leitet IP-Verbindungen durch unsichere Netze mithilfe kryptographisch gesicherter Tunnel. Die Nutzdaten werden mit SSL / TLS verschlüsselt, wodurch eine hohe Abhörsicherheit erzielt wird. Die OpenVPN-Software läuft als Hintergrundprozeß ("Daemon"), die Anbindung an den IP-Stack des jeweiligen Betriebssystemes wird durch einen Tunnel-Driver hergestellt.
[[Kategorie:Ungepflegt]]


Der Vorzüge von OpenVPN gegenüber PPTP oder IPsec sind Portabilität, offene Standards und einfache Konfiguration. Für folgende Systeme ist OpenVPN verfügbar:
Ein  [http://de.wikipedia.org/wiki/Virtual_Private_Network VPN] (virtuelles privates Netzwerk) baut einen verschlüsselter Tunnel von Deinem Rechner zu einer vertrauenswürdigen Gegenstelle im Internet auf. Sämtlicher Datenverkehr von Deinem Rechner wird durch den Tunnel geschickt. Damit ist automatisch '''alles''' verschlüsselt, auf der WLAN-Strecke sind die Daten also sicher.
* Linux: In den meisten Distributionen vorhanden.
* Windoze: [http://openvpn.se/ GUI + Installer]  
* Mac OS X: [http://tunnelblick.net/ Tunnelblick]
* allen BSD Derivaten
* Solaris


Ein VPN besteht aus:
== Windows ==
* Einem '''Server''', der den Zugang zum virtuellen Netz kontrolliert und das Routing zwischen den Clients und Nicht-VPN-Netzen regelt,
=== OpenVPN runterladen und installieren ===
* Mehreren '''Clients''', die durch einen VPN-Tunnel mit dem Server kommunizieren. Mit Umweg über den Server ist so auch eine Client-zu-Client-Kommunikation möglich, sofern die Routing-Regeln des Servers dies zulassen. Im Freifunk will man das aber eher nicht.
* Lade Dir von [http://openvpn.se/ http://openvpn.se/] die [http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe letzte stabile Version der  OpenVPN GUI] herunter.
* Den Installer <code>openvpn-2.0.5-gui-1.0.3-install-auto_xp64.exe</code> starten
:[[Bild:Open vpn gui installation 1.png]]
* Lizenzen akzeptieren
:[[Bild:Open vpn gui installation 2.png]]
* Alle Optionen anwählen, bis auf "Hide the TAP-Win32 Virtual Ethernet Adapter". '''"My Certificate Wizard" wird unbedingt gebraucht.
:[[Bild:Open vpn gui installation 3.png]]
* Installationsordner auswählen
:[[Bild:Open vpn gui installation 4.png]]
* Ein bisschen warten ...
:[[Bild:Open vpn gui installation 5.png]]
* Der Treiber muss installiert werden, sonst funktioniert OpenVPN nicht...
:[[Bild:Open vpn gui installation 6.png]]
* Fertig :)
:[[Bild:Open vpn gui installation 7.png]]
:[[Bild:Open vpn gui installation 8.png]]


Im üblichen Aufbau von OpenVPN-Netzen melden sich die Clients über ein SSL-Zertifikat am Server an, wobei der CN (''Canonical Name'') des Zertifikates als Rechnername verwendet wird, um die korrekte Netzwerk-Konfiguration des Client zu bestimmen. Mehrere Clients können dasselbe Zertifikat benutzen, sofern der Server passend konfiguriert ist.
=== Schlüssel und Zertifikat ===
Für die sichere Kommunikation benötigst Du einen privaten Schlüssel und ein [http://de.wikipedia.org/wiki/Digitales_Zertifikat Zertifikat]. Den Schlüssel erzeugst Du Dir auf Deinem Computer, das Zertifikat schicken wir Dir.


== Einrichtung ==
Starte die Schlüsselerzeugung unter '''Programme -> OpenVPN -> My Certificate Wizard'''. In trage in den Feldern folgendes ein:
Für ein einfaches Client / Server-Setup wird benötigt:
:[[Bild:Openvpn certificate wizard 1.png]]
* SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen.
* Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (''Melle, bitte ergänzen''):
** Welche LAN-Adressen (nach RFC 1918) sollen für das VPN verwendet werden? Im Folgenden sei <tt>10.0.0.x</tt> für das VPN angenommen.
** Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt? Bis auf weiteres sei davon ausgegangen, daß Clients Verbindungen ins Internet nutzen dürfen, aber nicht untereinander kommunizieren sollen.
** Welche Namen haben die VPN-Teilnehmer? Nachfolgend sei <code>vpn-client.freifunk-potsdam.de</code> bzw. <code>vpn-server.freifunk-potsdam.de</code> angenommen.
** Wo soll der Server laufen? Auf einem AP nahe einem schnellen Uplink oder ganz weit draußen im Internet? Die folgenden Configs gehen von einem AP auf der IP <tt>192.168.1.2</tt> aus, der über das Gateway <tt>192.168.1.1</tt> mit dem Internet verbunden ist.


=== SSL-Certs ===
* Common Name (e.g. your name): '''vorname_nachname.vpn.freifunk-potsdam.de'''. Bitte trage Deinen richtigen Namen ein. Lasse unbedingt den Teil <code>vpn.freifunk-potsdam.de</code> intakt. Wenn Du mehrere Computer absichern willst, brauchst Du für jeden einzelnen Computer ein eigenes Zertifikat.
Benötigt werden mindestens ein Server-Cert, und mindestens ein Client-Cert.  
* Mail-Address: '''deine@mail-adresse.de'''
Um ein Cert zu erstellen, wird ein Key benötigt. Mit OpenSSL geht das so:
* Country Name: '''DE'''
openssl genrsa -out vpn.key 2048
* State or Province: '''Brandenburg'''
* Locality Name: '''Potsdam'''
* Organisation Name: '''Freifunk Potsdam e.V.'''
* Organisational Unit Name: '''VPN'''


Um ein Cert zu erzeugen, braucht man zunächst ein CSR (''Certificate Signing Request''):
* Im Feld '''Passphrase''' musst Du ein Passwort für Deinen Schlüssel angeben. Damit wird der Schlüssel vor dem Zugriff anderer geschützt. Nur mit dem Passwort kannst Du Deinen Schlüssel benutzen.
openssl req -new -key vpn.key -out vpn.csr


Es folgt ein Frage-und-Antwort-Spiel. Dabei ist die einzig wichtige Frage: <code>Common Name (eg, YOUR name)</code>. Dort den jeweiligen Rechnernamen eintragen, z.B. <code>vpn-server.freifunk-potsdam.de</code> bzw. <code>vpn-client.freifunk-potsdam.de</code>.
* Gib als Output Folder das Config-Verzeichnis von OpenVPN an, das ist i.d.R. '''C:\Programme\OpenVPN\config'''.


Die CSRs klebt man der Reihe nach in das Eingabefeld bei [http://www.cacert.org/ CaCert] (unter <tt>Server Certificates</tt> &rarr; <tt>New</tt>). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das [http://www.cacert.org/certs/root.crt Root-Cert] von CACert.
Jetzt kannst Du mit '''Create Request''' Deinen Schlüssel und einen Zertifikatsrequest erzeugen. Ein neues Fenster enthält den Request.
:[[Bild:Openvpn certificate wizard 2.png]]


Die Gültigkeitsdauer der Zertifikate beträgt 6 Monate bis 2 Jahre, abhängig von den ''Assurance''-Punkten des Antragstellers. Herrmann kann Punkte vergeben; dk kann Certs bis zu 2 Jahren ausstellen.  
Wie im Fenster zu lesen ist, findest Du
* Deinen '''privaten Schlüssel''' unter <code>C:\Programme\OpenVPN\config\vorname_nachname_vpn_freifunk-potsdam_de.key</code>
* Deinen '''Zertifikatsrequest''' unter <code>C:\Programme\OpenVPN\config\vorname_nachname_vpn_freifunk-potsdam_de.req</code>


Für die Clients kann man entweder individuelle Zertifikate benutzen, oder aber ein Sammel-Zertifikat für alle VPN-Nutzer. Da der Verwaltungsaufwand für individuelle Zertifikate höher ist, und diese in einem prinzipiell offenen Netz nicht wirklich benötigt werden, sei im Folgenden von einem Sammelzertifikat ausgegangen.
Kopiere den Request in die Zwischenablage (Knopf '''Copy to clipboard''') und schicke uns diesen per [http://wiki.freifunk-potsdam.de/Kontakt E-Mail]. Du kannst auch direkt die Datei <code>vorname_nachname_vpn_freifunk-potsdam_de.req</code> als Attatchment schicken. '''Schicke uns nicht Deinen privaten Schlüssel (*.key)!!!'''


Man kann unterschiedliche Keys für Server- und Client-Zertifikate nutzen, aber das bringt nicht wirklich etwas.  
'''Komm zu unserem [[Treffen]] und bring Deinen Personalausweis mit.''' Dort erhältst Du von uns eine Datei <code>vorname_nachname_vpn_freifunk-potsdam_de.crt</code>. Kopiere die in das Verzeichnis <code>C:\Programme\OpenVPN\config\</code>.


=== Server-Config ===
=== Konfiguration ===
''Noch nicht final, weil kein VPN-Plan vorhanden''
Erstelle eine Textdatei <code>C:\Programme\OpenVPN\config\'''freifunk-vpn.ovpn'''</code> mit folgendem Inhalt (die Dateiendung muss .'''ovpn''' sein, nicht .'''txt'''!). Achte darauf den korrekten Dateinamen des Zertifikats und des Schlüssels anzugeben.


Die Server-Config besteht aus:
* Der globalen Konfiguration <code>/etc/openvpn/server.conf</code>
* Einer Konfigurationsdatei pro Client in <code>/etc/openvpn/ccd</code>. Diese muß so heißen wir der Common Name im Client-Cert, in unserem Fall also <code>vpn-client.freifunk-potsdam.de</code>.
Die globale Config in <code>/etc/openvpn/server.conf</code> sieht dann so aus:
port 33469
proto udp
dev tun0
ca /etc/ssl/certs/cacert.org.pem
cert /etc/openvpn/vpn-server.crt
key /etc/openvpn/vpn.key
dh dh1024.pem
server 10.0.0.0 255.255.255.0
user nobody
group nogroup
client-config-dir ccd
ccd-exclusive
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
In <code>/etc/openvpn/ccd</code> befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also  <code>/etc/openvpn/ccd/vpn-client.freifunk-potsdam.de</code>:
push "redirect-gateway"
=== Client-Config ===
Die Clients werden alle identisch konfiguriert, wobei die Zertifikate in <code>client.crt</code> alle denselben CNs <code>vpn-client.freifunk-potsdam.de</code> haben:
client
dev tun
proto udp
remote vpn-server.freifunk-potsdam.de 33469
nobind
persist-key
persist-tun
ca root.crt
cert client.crt
key vpn.key
comp-lzo
verb 3
mute 20
=== Routing / Firewall ===
Der Server sollte prinzipiell routen können. Klingt blöd, wird aber gerne vergessen:
echo 1 > /proc/sys/net/ipv4/ip_forward
Die Server-Config (oben) setzt die richtigen Routing-Einträge. Es fehlen nur noch ein paar <tt>iptables</tt>-Regeln, damit Clients nicht untereinander kommunizieren, und für das Masquerading der VPN-Adressen. Als Runlevel-Skript, z.B. in <code>/etc/init.d/firewall</code> sieht das so aus:
#!/bin/sh
IPTABLES="/sbin/iptables"
MODPROBE="/sbin/modprobe"
LOCAL_IP="192.168.1.2"
case "$1" in
  start)
        # load modules
        ${MODPROBE} ip_tables
        ${MODPROBE} ip_conntrack
        # VPN internet route
        ${IPTABLES} -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
       
        # masquerading
        ${IPTABLES} -t nat -A POSTROUTING -o eth0 -j SNAT --to-source ${LOCAL_IP}
        # Do not allow connections into the tunnels
        ${IPTABLES} -A OUTPUT -o tun0 -d 10.0.0.0/8 -m state --state ESTABLISHED,RELATED -j ACCEPT
        ${IPTABLES} -A OUTPUT -o tun0 -j REJECT
        ;;
  stop)
        ${IPTABLES} -F INPUT
        ${IPTABLES} -F FORWARD
        ${IPTABLES} -F OUTPUT
        ${IPTABLES} -t nat -F POSTROUTING
        ${IPTABLES} -P INPUT ACCEPT
        ${IPTABLES} -P FORWARD ACCEPT
        ${IPTABLES} -P OUTPUT ACCEPT
        ;;
  restart)
        $0 stop
        $0 start
        ;;
esac
== Client-Anleitung ==
* Von [http://openvpn.se/ http://openvpn.se/] die letzte stabile Version der [http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe OpenVPN GUI] runterladen.
*Erzeuge Dir einen privaten Schlüssel
openssl genrsa -out vorname_nachname.key 2048
*Erzeuge Dir einen Certificate Request
openssl req -new -key vorname_nachname.key -out vorname_nachname.csr
* Schicke uns die Datei <cite>vorname_nachname.csr</cite>
* Du bekommst von uns eine Datei <code>vorname_nachname.cert</code>
* kopiere die Dateien <code>vorname_nachname.cert</code> und <code>vorname_nachname.key</code> in das Verzeichnis <code>c:\Programme\OpenVPN\config\</code> (oder wo Du OpenVPN hin installiert hast).
* erstelle eine je nach Betriebssystem eine Config-Datei <code>/etc/openvpn/'''client.ovpn'''</code> bzw. <code>c:\Programme\OpenVPN\config\'''client.ovpn'''</code> folgendem Inhalt.


<pre>client
<pre>client
dev tun
dev tun
proto udp
proto udp
remote vpn.freifunk-potsdam.de 1194
remote vpn.freifunk-potsdam.de 1192
resolv-retry infinite
resolv-retry infinite
nobind
nobind
persist-key
persist-key
persist-tun
persist-tun
ca '''ca.crt'''
ca ca.crt
cert '''vorname_nachname.cert'''
cert vorname_nachname_vpn_freifunk-potsdam_de.crt
key '''vorname_nachname.key'''
key vorname_nachname_vpn_freifunk-potsdam_de.key
ns-cert-type server
comp-lzo
comp-lzo
verb 3</pre>
verb 3</pre>


* Lade das [https://www.cacert.org/certs/class3.crt class3] und [https://www.cacert.org/certs/root.crt class1] Root-Zertifikat von [http://www.cacert.org/index.php?id=3 cacert.org] herunter. Kopiere beide Zertifikate hintereinander in eine Textdatei <code>c:\Programme\OpenVPN\config\ca.crt</code>.
* Erstelle mit einem Texteditor eine Datei ca.crt und kopiere das CA-Zertifikat unten dort hinein. Die Datei gehört in das Verzeichnis <code>c:\Programme\OpenVPN\config\</code>.
** unter Linux kannst du alternativ auch im Verzeichnis ''/etc/openvpn/'' <code>wget https://www.bastla.net/config/ca.crt</code> eingeben. Bitte bedenke allerdings diese Datei (die Zertifikate darin) noch einmal mit denen von CaCert zu vergleichen.
 
Der Inhalt der Datei <code>c:\Programme\OpenVPN\config\ca.crt</code> sollte dieser sein:
 
<pre>-----BEGIN CERTIFICATE-----
MIIEQDCCA6mgAwIBAgIJAMvturRGeNfbMA0GCSqGSIb3DQEBBQUAMIHHMQswCQYD
VQQGEwJTSTERMA8GA1UECBMIU2xvdmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEg
MB4GA1UEChMXdnBuLmZyZWlmdW5rLXBvdHNkYW0uZGUxITAfBgNVBAsUGGluZm9A
ZnJlaWZ1bmstcG90c2RhbS5kZTEjMCEGA1UEAxMadnBuLmZyZWlmdW5rLXBvdHNk
YW0uZGUgQ0ExJzAlBgkqhkiG9w0BCQEWGGluZm9AZnJlaWZ1bmstcG90c2RhbS5k
ZTAeFw0xMDA5MTgxOTE5MTRaFw0yMDA5MTUxOTE5MTRaMIHHMQswCQYDVQQGEwJT
STERMA8GA1UECBMIU2xvdmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEgMB4GA1UE
ChMXdnBuLmZyZWlmdW5rLXBvdHNkYW0uZGUxITAfBgNVBAsUGGluZm9AZnJlaWZ1
bmstcG90c2RhbS5kZTEjMCEGA1UEAxMadnBuLmZyZWlmdW5rLXBvdHNkYW0uZGUg
Q0ExJzAlBgkqhkiG9w0BCQEWGGluZm9AZnJlaWZ1bmstcG90c2RhbS5kZTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqa8rQJMIjBXGAt9piGCJQGPPcMFqABHa
AoYdoiGsw4hpwyUzwwiV8CDfrCCrcYqHe3dl5KJjqnPaTUafDDyAobRnlli8/vbe
sVNtrhljYCGlGeEs+LYtB3O5VsFVEojPHV7ta8AEiNliT/kryUmgwp0JKglJAv1S
orijYZbW9J8CAwEAAaOCATAwggEsMB0GA1UdDgQWBBRF6wX9Z+7jV66UFCAxw0Mn
yKo5xTCB/AYDVR0jBIH0MIHxgBRF6wX9Z+7jV66UFCAxw0MnyKo5xaGBzaSByjCB
xzELMAkGA1UEBhMCU0kxETAPBgNVBAgTCFNsb3ZlbmlhMRIwEAYDVQQHEwlManVi
bGphbmExIDAeBgNVBAoTF3Zwbi5mcmVpZnVuay1wb3RzZGFtLmRlMSEwHwYDVQQL
FBhpbmZvQGZyZWlmdW5rLXBvdHNkYW0uZGUxIzAhBgNVBAMTGnZwbi5mcmVpZnVu
ay1wb3RzZGFtLmRlIENBMScwJQYJKoZIhvcNAQkBFhhpbmZvQGZyZWlmdW5rLXBv
dHNkYW0uZGWCCQDL7bq0RnjX2zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA
A4GBAJeCZO4IcvcimpvCiohWzolAoYBV4mga2/ZcKcRjQNXYfuepVu1nPjDJzfVd
kT1XzCesLvlJK2ulcxdOgh6J/ULwStmu2zdOYD7Het4o2pFAewZacqA8y2FXKIVo
xFjvkROmtYrz53VXXkkpPuSbnS51M9JBT3Vwx3v1gokJogpW
-----END CERTIFICATE-----
</pre>


=== Verbindungsaufbau ===
* Wähle im Kontextmenü der OpenVPN GUI die Option '''connect'''.
* Wähle im Kontextmenü der OpenVPN GUI die Option '''connect'''.
:[[Bild:Openvpn connecting.png]]
* Nach ein paar Sekunden sollte die Farbe des OpenVPN-Icons von gelb nach grün wechseln und das Fenster ausgeblendet werden. Du bist jetzt sicher im Freifunk-Netz unterwegs :-)
:[[Bild:Openvpn connected.png]]
=== Fehlersuche ===
* Nur das Root-Zertifikat:
<code>VERIFY ERROR: depth=0, error='''unable to get local issuer certificate''': /CN=vpn.freifunk-potsdam.de</code>
* Nur das class3-Zertifikat
<code>VERIFY ERROR: depth=1, error='''unable to get issuer certificate''': /O=CAcert_Inc./OU=http://www.CAcert.org/CN=CAcert_Class_3_Root</code>


* wenn du unter Linux den Konsolen OpenVPN Client nutzt, kann es sein, dass er die Routen nicht automatisch setzen kann - gebe dazu folgendes in die Shell ein:
=== Windows ===
* Unbedingt darauf achten, daß alle Config-/Zertifikats-/Text-Dateien "without Byte Order Mark (BOM)" (also am besten als reines UTF-8) im Editor abgespeichert werden, sonst regnet's unplausibel klingende Fehlermeldungen.


  # lösche alte default Route (in dem Beispiel ppp0, was eine Modemschnittstelle ist)
== Mac OS X ==
# wenn ihr nicht wisst was eure default Route ist schaut mit 'route -n' nach
... bitte die Doku für Mac OS ergänzen :)
 
* [http://www.tunnelblick.net/ Tunnelblick] ist der Client der Wahl unter Mac OS X
 
== Linux ==
=== Konfiguration ===
* Erzeuge Dir einen privaten Schlüssel
$ openssl genrsa -out vorname_nachname.key 2048
* Erzeuge Dir einen Certificate Request
$ openssl req -new -key vorname_nachname.key -out vorname_nachname.req
* Die Konfiguration liegt unter <code>/etc/openvpn/'''client.ovpn'''</code>
* kopiere die Dateien <code>vorname_nachname.cert</code> und <code>vorname_nachname.key</code> in dieses Verzeichnis
* Lade das [https://www.cacert.org/certs/class3.crt class3] und [https://www.cacert.org/certs/root.crt class1] Root-Zertifikat von [http://www.cacert.org/index.php?id=3 cacert.org] herunter:
$ wget http://www.cacert.org/certs/root.crt
$ wget https://www.cacert.org/certs/class3.crt
* Kopiere beide Zertifikate in eine Textdatei:
  $ cat root.crt class3.crt > ca.crt
 
=== Routing ===
* wenn du unter Linux den Konsolen OpenVPN Client nutzt, kann es sein, dass er die Routen nicht automatisch setzen kann. Falls das so ist, ändere die Konfigurationszeile <code>remote vpn.freifunk-potsdam.de 1194</code> durch <code>remote 78.47.210.100 1194</code> (halt die IP von iggy) und gebe folgendes in die Shell ein:
 
* lösche alte default Route (in dem Beispiel ppp0, was eine Modemschnittstelle ist). wenn ihr nicht wisst was eure default Route ist schaut mit 'route -n' nach
  route del default ppp0  
  route del default ppp0  
* Den Weg zu iggy (VPN Server) weisen:  
# Den Weg zu iggy (VPN Server) weisen:  
  route add -host 78.47.210.100 dev ppp0  
  route add -host 78.47.210.100 dev ppp0  
* Nun das VPN starten (yourConfig ist eure Konfigurationsdatei):
# Nun das VPN starten (yourConfig ist eure Konfigurationsdatei):
  openvpn --config [yourConfig].ovpn   
  openvpn --config [yourConfig].ovpn   
* Default Route für alle INet Anfragen auf den VPN Tunnel zeigen lassen:
route add default tun0
* Wenn man wie in meinem Fall durch Einwählen über das Handy im VPN des Netzbetreibers seid, dann ist dessen DNS natürlich nicht mehr erreichbar. Damit der Rechner weiterhin Domains auflösen kann gibt man ein:
echo "nameserver 141.1.1.1" > /etc/resolv.conf
Nun sollte es funktionieren. Bei Problemen meldet euch bei uns - am Besten bei einem [[Treffen]] oder auf der [[Kontakt#Mailingliste|Mailingliste]]


# Default Route für alle INet Anfragen auf den VPN Tunnel zeigen lassen:
== Eigener Server ==
route add default tun0
Das Funktionsprinzip und einige Hinweise zum Aufsetzen eines eigenen Servers erfahrt ihr unter [[OpenVPN-Server]]
 
[[Kategorie:Technik]]


# Wenn man wie in meinem Fall durch Einwählen über das Handy im VPN des
[[Kategorie:Technik]]
# Netzbetreibers seid, dann ist dessen DNS natürlich nicht mehr erreichbar.
# Damit der Rechner weiterhin Domains auflösen kann gibt man ein:
echo "nameserver 141.1.1.1" >> /etc/resolv.conf

Aktuelle Version vom 7. Februar 2021, 23:19 Uhr

Achtung, diese Seite ist als „ungepflegt“ markiert. Das heißt, dass die Inhalte dieser Seite nicht mehr vollständig aktuell erscheinen und daher mit Vorsicht behandelt werden sollten

Es tut uns leid, dass nicht immer alles aktuell ist, prinzipiell wissen wir ja um den Mehrwert guter Dokumentation. Bitte hilf mit, die Seite aktuell zu halten, indem du sie bearbeitest oder uns per Mail oder auf einem Treffen darauf hinweist.

Diese Seite ist > 10 Jahre alt und vermutlich nicht mehr aktuell

Ein VPN (virtuelles privates Netzwerk) baut einen verschlüsselter Tunnel von Deinem Rechner zu einer vertrauenswürdigen Gegenstelle im Internet auf. Sämtlicher Datenverkehr von Deinem Rechner wird durch den Tunnel geschickt. Damit ist automatisch alles verschlüsselt, auf der WLAN-Strecke sind die Daten also sicher.

Windows

OpenVPN runterladen und installieren

Open vpn gui installation 1.png
  • Lizenzen akzeptieren
Open vpn gui installation 2.png
  • Alle Optionen anwählen, bis auf "Hide the TAP-Win32 Virtual Ethernet Adapter". "My Certificate Wizard" wird unbedingt gebraucht.
Open vpn gui installation 3.png
  • Installationsordner auswählen
Open vpn gui installation 4.png
  • Ein bisschen warten ...
Open vpn gui installation 5.png
  • Der Treiber muss installiert werden, sonst funktioniert OpenVPN nicht...
Open vpn gui installation 6.png
  • Fertig :)
Open vpn gui installation 7.png
Open vpn gui installation 8.png

Schlüssel und Zertifikat

Für die sichere Kommunikation benötigst Du einen privaten Schlüssel und ein Zertifikat. Den Schlüssel erzeugst Du Dir auf Deinem Computer, das Zertifikat schicken wir Dir.

Starte die Schlüsselerzeugung unter Programme -> OpenVPN -> My Certificate Wizard. In trage in den Feldern folgendes ein:

Openvpn certificate wizard 1.png
  • Common Name (e.g. your name): vorname_nachname.vpn.freifunk-potsdam.de. Bitte trage Deinen richtigen Namen ein. Lasse unbedingt den Teil vpn.freifunk-potsdam.de intakt. Wenn Du mehrere Computer absichern willst, brauchst Du für jeden einzelnen Computer ein eigenes Zertifikat.
  • Mail-Address: deine@mail-adresse.de
  • Country Name: DE
  • State or Province: Brandenburg
  • Locality Name: Potsdam
  • Organisation Name: Freifunk Potsdam e.V.
  • Organisational Unit Name: VPN
  • Im Feld Passphrase musst Du ein Passwort für Deinen Schlüssel angeben. Damit wird der Schlüssel vor dem Zugriff anderer geschützt. Nur mit dem Passwort kannst Du Deinen Schlüssel benutzen.
  • Gib als Output Folder das Config-Verzeichnis von OpenVPN an, das ist i.d.R. C:\Programme\OpenVPN\config.

Jetzt kannst Du mit Create Request Deinen Schlüssel und einen Zertifikatsrequest erzeugen. Ein neues Fenster enthält den Request.

Openvpn certificate wizard 2.png

Wie im Fenster zu lesen ist, findest Du

  • Deinen privaten Schlüssel unter C:\Programme\OpenVPN\config\vorname_nachname_vpn_freifunk-potsdam_de.key
  • Deinen Zertifikatsrequest unter C:\Programme\OpenVPN\config\vorname_nachname_vpn_freifunk-potsdam_de.req

Kopiere den Request in die Zwischenablage (Knopf Copy to clipboard) und schicke uns diesen per E-Mail. Du kannst auch direkt die Datei vorname_nachname_vpn_freifunk-potsdam_de.req als Attatchment schicken. Schicke uns nicht Deinen privaten Schlüssel (*.key)!!!

Komm zu unserem Treffen und bring Deinen Personalausweis mit. Dort erhältst Du von uns eine Datei vorname_nachname_vpn_freifunk-potsdam_de.crt. Kopiere die in das Verzeichnis C:\Programme\OpenVPN\config\.

Konfiguration

Erstelle eine Textdatei C:\Programme\OpenVPN\config\freifunk-vpn.ovpn mit folgendem Inhalt (die Dateiendung muss .ovpn sein, nicht .txt!). Achte darauf den korrekten Dateinamen des Zertifikats und des Schlüssels anzugeben.


client
dev tun
proto udp
remote vpn.freifunk-potsdam.de 1192
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vorname_nachname_vpn_freifunk-potsdam_de.crt
key vorname_nachname_vpn_freifunk-potsdam_de.key
ns-cert-type server
comp-lzo
verb 3
  • Erstelle mit einem Texteditor eine Datei ca.crt und kopiere das CA-Zertifikat unten dort hinein. Die Datei gehört in das Verzeichnis c:\Programme\OpenVPN\config\.

Der Inhalt der Datei c:\Programme\OpenVPN\config\ca.crt sollte dieser sein:

-----BEGIN CERTIFICATE-----
MIIEQDCCA6mgAwIBAgIJAMvturRGeNfbMA0GCSqGSIb3DQEBBQUAMIHHMQswCQYD
VQQGEwJTSTERMA8GA1UECBMIU2xvdmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEg
MB4GA1UEChMXdnBuLmZyZWlmdW5rLXBvdHNkYW0uZGUxITAfBgNVBAsUGGluZm9A
ZnJlaWZ1bmstcG90c2RhbS5kZTEjMCEGA1UEAxMadnBuLmZyZWlmdW5rLXBvdHNk
YW0uZGUgQ0ExJzAlBgkqhkiG9w0BCQEWGGluZm9AZnJlaWZ1bmstcG90c2RhbS5k
ZTAeFw0xMDA5MTgxOTE5MTRaFw0yMDA5MTUxOTE5MTRaMIHHMQswCQYDVQQGEwJT
STERMA8GA1UECBMIU2xvdmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEgMB4GA1UE
ChMXdnBuLmZyZWlmdW5rLXBvdHNkYW0uZGUxITAfBgNVBAsUGGluZm9AZnJlaWZ1
bmstcG90c2RhbS5kZTEjMCEGA1UEAxMadnBuLmZyZWlmdW5rLXBvdHNkYW0uZGUg
Q0ExJzAlBgkqhkiG9w0BCQEWGGluZm9AZnJlaWZ1bmstcG90c2RhbS5kZTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqa8rQJMIjBXGAt9piGCJQGPPcMFqABHa
AoYdoiGsw4hpwyUzwwiV8CDfrCCrcYqHe3dl5KJjqnPaTUafDDyAobRnlli8/vbe
sVNtrhljYCGlGeEs+LYtB3O5VsFVEojPHV7ta8AEiNliT/kryUmgwp0JKglJAv1S
orijYZbW9J8CAwEAAaOCATAwggEsMB0GA1UdDgQWBBRF6wX9Z+7jV66UFCAxw0Mn
yKo5xTCB/AYDVR0jBIH0MIHxgBRF6wX9Z+7jV66UFCAxw0MnyKo5xaGBzaSByjCB
xzELMAkGA1UEBhMCU0kxETAPBgNVBAgTCFNsb3ZlbmlhMRIwEAYDVQQHEwlManVi
bGphbmExIDAeBgNVBAoTF3Zwbi5mcmVpZnVuay1wb3RzZGFtLmRlMSEwHwYDVQQL
FBhpbmZvQGZyZWlmdW5rLXBvdHNkYW0uZGUxIzAhBgNVBAMTGnZwbi5mcmVpZnVu
ay1wb3RzZGFtLmRlIENBMScwJQYJKoZIhvcNAQkBFhhpbmZvQGZyZWlmdW5rLXBv
dHNkYW0uZGWCCQDL7bq0RnjX2zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA
A4GBAJeCZO4IcvcimpvCiohWzolAoYBV4mga2/ZcKcRjQNXYfuepVu1nPjDJzfVd
kT1XzCesLvlJK2ulcxdOgh6J/ULwStmu2zdOYD7Het4o2pFAewZacqA8y2FXKIVo
xFjvkROmtYrz53VXXkkpPuSbnS51M9JBT3Vwx3v1gokJogpW
-----END CERTIFICATE-----

Verbindungsaufbau

  • Wähle im Kontextmenü der OpenVPN GUI die Option connect.
Openvpn connecting.png
  • Nach ein paar Sekunden sollte die Farbe des OpenVPN-Icons von gelb nach grün wechseln und das Fenster ausgeblendet werden. Du bist jetzt sicher im Freifunk-Netz unterwegs :-)
Openvpn connected.png

Fehlersuche

  • Nur das Root-Zertifikat:

VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /CN=vpn.freifunk-potsdam.de

  • Nur das class3-Zertifikat

VERIFY ERROR: depth=1, error=unable to get issuer certificate: /O=CAcert_Inc./OU=http://www.CAcert.org/CN=CAcert_Class_3_Root

Windows

  • Unbedingt darauf achten, daß alle Config-/Zertifikats-/Text-Dateien "without Byte Order Mark (BOM)" (also am besten als reines UTF-8) im Editor abgespeichert werden, sonst regnet's unplausibel klingende Fehlermeldungen.

Mac OS X

... bitte die Doku für Mac OS ergänzen :)

Linux

Konfiguration

  • Erzeuge Dir einen privaten Schlüssel
$ openssl genrsa -out vorname_nachname.key 2048
  • Erzeuge Dir einen Certificate Request
$ openssl req -new -key vorname_nachname.key -out vorname_nachname.req
  • Die Konfiguration liegt unter /etc/openvpn/client.ovpn
  • kopiere die Dateien vorname_nachname.cert und vorname_nachname.key in dieses Verzeichnis
  • Lade das class3 und class1 Root-Zertifikat von cacert.org herunter:
$ wget http://www.cacert.org/certs/root.crt
$ wget https://www.cacert.org/certs/class3.crt
  • Kopiere beide Zertifikate in eine Textdatei:
$ cat root.crt class3.crt > ca.crt

Routing

  • wenn du unter Linux den Konsolen OpenVPN Client nutzt, kann es sein, dass er die Routen nicht automatisch setzen kann. Falls das so ist, ändere die Konfigurationszeile remote vpn.freifunk-potsdam.de 1194 durch remote 78.47.210.100 1194 (halt die IP von iggy) und gebe folgendes in die Shell ein:
  • lösche alte default Route (in dem Beispiel ppp0, was eine Modemschnittstelle ist). wenn ihr nicht wisst was eure default Route ist schaut mit 'route -n' nach
route del default ppp0 
  • Den Weg zu iggy (VPN Server) weisen:
route add -host 78.47.210.100 dev ppp0 
  • Nun das VPN starten (yourConfig ist eure Konfigurationsdatei):
openvpn --config [yourConfig].ovpn  
  • Default Route für alle INet Anfragen auf den VPN Tunnel zeigen lassen:
route add default tun0
  • Wenn man wie in meinem Fall durch Einwählen über das Handy im VPN des Netzbetreibers seid, dann ist dessen DNS natürlich nicht mehr erreichbar. Damit der Rechner weiterhin Domains auflösen kann gibt man ein:
echo "nameserver 141.1.1.1" > /etc/resolv.conf

Nun sollte es funktionieren. Bei Problemen meldet euch bei uns - am Besten bei einem Treffen oder auf der Mailingliste

Eigener Server

Das Funktionsprinzip und einige Hinweise zum Aufsetzen eines eigenen Servers erfahrt ihr unter OpenVPN-Server