OpenVPN: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Alphinux (Diskussion | Beiträge)
K Orthografische und stilistische Änderung
 
(43 dazwischenliegende Versionen von 13 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
====OpenVPN====
{{veraltet}}
Ich wollte einfach mal 2 Rechner via Internet verbinden. Über Windows geht das ja relativ easy mit Hamachi. Aber auch unter Linux ist das mit OpenVPN sehr leicht zu realisieren. Als Server läuft ein Archlinux (64bit / Testing). Als Gegenstelle dient ein Windows XP Professional 32bit und ein Gentoo-Linux 32bit. Der Lappy steht ebenfalls im Lan, dient also nur zur Kontrolle, ob es "theoretisch" geht. Der Gentoo-Root wiederum steht in Frankreich und ist optimal zum testen. Inzwischen habe ich noch 2 weitere Windows-Clients zum Testen gehabt. Daher hab ich mich auch mit einer "kleinen Benutzer-Auth" auseinander gesetzt und hier mit reingesetzt.
{{Artikelstil}}
Das verbinden von Comoputern ist unter Windows mit Hamachi gut möglich. Aber auch unter Linux ist das mit OpenVPN ebenfalls sehr leicht zu realisieren.  


Ich gehe hier auf die "relativ" einfache Einrichtung und Installation einer OpenVPN-Bridge mit Client-to-Client Funktion ein.
In diesem Artikel wird das Verbinden mit der OpenVPN-Variante Bridge und ihren Certifikaten beschrieben. Diese ist sehr leicht zu realisieren und zu warten und für einen kleinen Benutzerkreis (Bekanntenkreis) sehr geeignet. Für dieses Beispiel läuft als Server Archlinux (64bit / Testing). Als Gegenstelle dient ein Windows XP Professional 32bit, ein Gentoo (32bit/~x86) und ein MacOS 10.4.11 (Tiger).


==Installation==
==Installation==
Als Erstes installiert man OpenVPN wie gewohnt mit pacman:


Als erstes müssen wir OpenVPN ganz normal installieren.
   # pacman -S openvpn bridge-utils easy-rsa
 
   # pacman -S openvpn  


==Konfiguration==
==Konfiguration==
To-do


===Module===
===Module===


Als erstes laden wir die nötigen Module
Bevor es losgehen kann, müssen die benötigten Module geladen werden:


   # modprobe tun bridge
   # modprobe tun
  # modprobe bridge


zur Kontrolle
um dies zu kontrollieren:


   # lsmod | grep tun; lsmod | grep bridge
   # lsmod | grep -e tun -e bridge


   tun                    10368  1
   tun                    10368  1
Zeile 27: Zeile 29:
===Bridge===
===Bridge===


So die Bridge ist eigentlich relativ einfach einzurichten.
Die Bridge ist eigentlich relativ einfach einzurichten.
Der Author verwendet folgende Konfiguration:


Bei mir siehts folgendermaßen aus:
   # cat /etc/conf.d/bridges
 
   # cat /etc/conf/bridges


   bridge_br0="eth0 tap0"
   bridge_br0="eth0 tap0"
   BRIDGE_INTERFACES=(br0)
   BRIDGE_INTERFACES=(br0)


Dann kommt die /etc/rc.conf dran:
Nun wird die /etc/rc.conf-Datei bearbeitet:


Erstmal fügen wir bei MODULES= tun und bridge hinzu.  
Zuerste bei der Linie MODULES= tun und bridge hinzufügen.  


Dann kommen die eigentlichen Einstellungen:
Dann kommen die eigentlichen Einstellungen:
Zeile 45: Zeile 46:
   tap0="tap0 up"
   tap0="tap0 up"
   br0="br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255"
   br0="br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255"
   INTERFACES=(lo eth0 br0)
   INTERFACES=(lo eth0 br0 tap0)
   gateway="default gw 192.168.1.1"
   gateway="default gw 192.168.1.1"
   ROUTES=(gateway)
   ROUTES=(gateway)


Wir klauen der eth0 (je nach System auch eth1) die IP und geben der br0 die dafür.  
Die IP von eth0 (je nach System auch eth1) in br0 einfügen. Diese danach bei eth0 (eth1) entfernen.


Somit ist die Brücke fast fertig.
Somit ist die Brücke schon fast fertig.


Wir müssen nur noch dafür sorgen das tap0 noch angelegt wird. Dafür habe ich ein kleines rc.d-Script gefunden, welches einfach
Nun muss dafür gesorgt werden, dass tap0 angelegt wird. Dafür dieses rc.d-Script in der Datei rc.conf vor network einfügen:
vor network in der rc.conf kommt.


   #!/bin/bash
   #!/bin/bash
Zeile 81: Zeile 81:
   exit 0
   exit 0


Dieses einfach unter /etc/rc.d/tap0 speichern, dann chmod 755 auf /etc/rc.d/tap0 und schon funktionierts. Dann natürlich eben via /etc/rc.d/tap0 start starten und dann dieses  einfach vor network in der
Dieses Script anschliessend noch unter /etc/rc.d/tap0 speichern, dann chmod 755 auf /etc/rc.d/tap0 und schon funktioniert's. Das Interface wird anschließend über /etc/rc.d/tap0 gestartet. Wie gesagt sollte es vor network in rc.conf in den DAEMONS eingetragen werden.
rc.conf unter DAEMONS= einfügen.


===Keys===
===Keys===


Als nächstes müssen wir die SSL und TLS - Keys erstellen.
Als nächstes müssen wir die SSL und TLS - Keys erstellen.
Dafür gibt es das tolle Tool Easy-RSA was unter /usr/share/openvpn/easy-rsa zufinden ist.
Dafür gibt es das tolle Tool Easy-RSA was unter /usr/share/easy-rsa zu finden ist.


Als erstes bearbeiten wir die Datei vars.
Als erstes bearbeiten wir die Datei vars:


   nano -w vars
   nano -w vars


Ich denke die Sachen da drin sind selbstklärend. Das Verzeichnis am Anfang so lassen.
Ich denke die Einstellungen in vars sind selbstklärend. Das Verzeichnis am Anfang so lassen.


Dann werden nun die Certificate erstellt:
Dann werden nun die Certificates erstellt:


   source vars // Nach jeder Änderung in dieser datei muss sie neu "gesourced" werden
   source vars // Nach jeder Änderung in dieser datei muss sie neu "gesourced" werden
Zeile 114: Zeile 113:
   certificate? [y/n]" -> y / "1 out of 1 certificate requests certified, commit?" -> y
   certificate? [y/n]" -> y / "1 out of 1 certificate requests certified, commit?" -> y


und nun noch die Gegenstücke des Clients
und nun noch die Gegenstücke des Clients. Je nachdem wie ihr $Client benennt, heisen auch die Certs so. Dient der Übersichtlichkeit.


   ./build-key client
   ./build-key-pass $client


Nun kommt noch das Diffie Hellmann
Nun kommt noch das Diffie Hellman


   ./build-dh
   ./build-dh


So und als letztes kommt der TLS-Key
Und als letztes kommt der TLS-Key


   openvpn --genkey --secret /usr/shar/openvpn/easy-rsa/keys/ta.key
   openvpn --genkey --secret ./keys/ta.key


So nun liegen die ganzen Sachen ja im /usr/shar/openvpn/easy-rsa/keys/, ich habe sie nach /etc/openvpn/keys verschoben.
Jetzt liegen die ganzen Sachen unter /usr/share/easy-rsa/keys/, ich habe sie aber nach /etc/openvpn/keys verschoben.


Nun haben wir alle wichtigen Keys und vorbereitungen zusammen.  
Nun haben wir alle wichtigen Keys und Vorbereitungen zusammen.


===Server===
===Server===


Als erstes kopieren wir alles aus /etc/openvpn/examples/ nach /etc/openvpn/
Als erstes kopieren wir alles aus /usr/share/openvpn/examples/ nach /etc/openvpn/


dann  
dann  
Zeile 138: Zeile 137:
   nano -w /etc/openvpn/server.conf
   nano -w /etc/openvpn/server.conf
    
    
   server-bridge 192.168.1.2 255.255.255.0 192.168.2.10 192.168.2.20
   server-bridge 192.168.1.2 255.255.255.0 192.168.1.10 192.168.1.20
   port 1194
   port 1194
   proto udp
   proto udp
Zeile 156: Zeile 155:
   cipher AES-256-CBC
   cipher AES-256-CBC
    
    
  tun-mtu 1500
  fragmente 1300
   resolv-retry infinite
   resolv-retry infinite
    
    
Zeile 167: Zeile 168:
   client-to-client
   client-to-client


So ist meine Configuration. Sie sagt im Endeffekt eigentlich nur, wer der Server ist, und welche Ips die Clienten bekommen, dann noch welche Verschlüsselung und Komprimierung genommen werden soll. Ausführlichere Informationen findet ihr auf der OpenVPN Seite.  
So sieht meine Konfiguration aus. Sie sagt im Endeffekt eigentlich nur, wer der Server ist, und welche IPs die Clienten bekommen, dann noch welche Verschlüsselung und Komprimierung genommen werden soll. Ausführlichere Informationen findet ihr auf der OpenVPN Website.


Da im Arch-OpenVPN-Paket noch kein rc.d-Script dabei ist. Müssen wir das ganze über die /etc/rc.local starten.
Da im Arch-OpenVPN-Paket noch kein rc.d-Script dabei ist. Müssen wir das ganze über die /etc/rc.local starten.
Zeile 175: Zeile 176:


   openvpn --config /etc/openvpn/server.conf --tls-server --daemon
   openvpn --config /etc/openvpn/server.conf --tls-server --daemon
===Benutzer===
===Benutzer===


Zeile 181: Zeile 183:
Einfach für jeden benutzer ein eigenes Certificate erstellen:
Einfach für jeden benutzer ein eigenes Certificate erstellen:


   ./build-key client
   ./build-key-pass client
   ./build-key client2  
   ./build-key-pass client2  


usw.
usw.


Auf die jeweiligen Clienten müssen dann die clientX.* + die ta.key und dann kann er einloggen.
Auf die jeweiligen Clienten müssen dann die clientX.*, die ta.key und das ca.crt liegen und in der client.config angegeben werden.


Achtet nur drauf WEM ihr die Sachen gebt. Ihr könnt keinen User sperren. Daher bei dieser Methode müsst ihr der Gegenseite vertrauen.
Man kann auch Clienten "rauswerfen" und sperren:
 
  http://www.vpnforum.de/wiki/index.php/Zertifikate_sperren


===Client===
===Client===
Wir haben ja 2 Clienten zur Auswahl. Linux und Windows
Wir haben 3 Clienten zur Auswahl. Linux, Windows und MacOS
====Linux====   
====Linux====   
Als erstes nehmen wir uns den Linux-Clienten vor. Ich gehe stark davon aus, das es kein Unterschied macht ob es nun ein Gentoo ist oder ein Arch oder what ever.  
Als erstes nehmen wir uns den Linux-Client vor. Ich gehe stark davon aus, dass es keinen Unterschied macht, ob es nun eine Gentoo- oder eine Arch-Installation ist, oder eine andere Linux Distribution.


Wir nehmen uns nun erstmal die Client-Config vor:
Wir nehmen uns nun erstmal die Client-Config vor:


   remote 192.168.1.2     
   remote 192.168.1.2     
   local 192.111.111.2   
   local 192.111.111.2  # nicht benötigt?
   client               
   client               
   proto udp           
   proto udp           
Zeile 209: Zeile 213:
   cipher AES-256-CBC  
   cipher AES-256-CBC  
   comp-lzo
   comp-lzo
  #tun-mtu 1500
  #fragment 1300
   user openvpn
   user openvpn
   group openvpn
   group openvpn
Zeile 216: Zeile 222:
   verb 3
   verb 3


Nachdem die Config bearbeitet ist, müssen wir uns vom Server noch die Keys holen, die wir gerade erst erstellt haben, und dann in die Configs eingetragen haben.  
Der User OpenVPN und die Gruppe OpenVPN müssen natürlich aufm Clienten vorhanden sein.
 
Was umbedingt zu beachten ist, das /dev/tap0 was oben via rc.script erstellt worden ist, _MUSS_ unter Linux-Clienten _EBENFALLS_ erstellt werden, und dann mit einem beherztem
 
ifconfig tap0 up
 
zum leben erweckt werden.
 
 
Nachdem die Config bearbeitet wurde, müssen wir uns noch vom Server die Keys holen, die wir gerade erst erstellt haben und danach in die Configs eingetragen haben.  


Ich habe es via SCP gemacht.
Ich habe es via SCP gemacht.
Zeile 226: Zeile 241:
   modprobe tun
   modprobe tun


Nun sollte man per ifconfig sehen, das da das tap0-Interface hinzugekommen ist. Mit einer IP zwischen 192.168.1.10 u. 20. Haben wir ja in der Server-Config so eingestellt.
Jetzt sollte man per ifconfig sehen, dass da das tap0-Interface hinzugekommen ist. Mit einer IP zwischen 192.168.1.10 u. 20. Genau so haben wir das ja in der Server-Config eingestellt.


Sollte dies nun sein, können wir den Server pingen:
Sollte alles geklappt haben, können wir den Server pingen:


   ping 192.168.2.1
   ping 192.168.1.2


sollte da nun eine Reaktion kommen, steht das VPN, und ihr könnt mit den Sachen arbeiten.
Hat alles geklappt und der ping wird erfolgreich ausgeführt, steht das VPN und ihr könnt damit arbeiten


Ich habe NFS u. Cups erfolgreich getestet.
Ich habe NFS u. Cups erfolgreich getestet.
Zeile 238: Zeile 253:
====Windows====
====Windows====


Unter Windows habe ich mich für die aktuellen OpenVPN-Clienten entschieden von http://openvpn.se
Unter Windows habe ich mich für die aktuellen OpenVPN-Clients von http://openvpn.se entschieden.


Einfach die aktuelle Version downloaden und Installieren.
Einfach die aktuelle Version herunterladen und installieren.


Vorm ersten Start müssen auch hier wieder die Certificate und Keys vom Server geholt werden. Da hier kein SCP im traditionellen Sinn funktioniert, habe ich WinSCP genommen. Wieder die ca.crt ta.key client.*. Die habe ich nach C.\Programm\OpenVPN\keys kopiert.
Vor dem ersten Start müssen auch hier wieder die Certificates und Keys vom Server geholt werden. Da hier kein SCP im traditionellen Sinn funktioniert, habe ich WinSCP genommen. Wieder die ca.crt ta.key client.*. Die habe ich nach C.\Programm\OpenVPN\keys kopiert.


Dann habe ich unter C:\Programm\OpenVPN\Config die client.opvn erstellt.
Dann habe ich unter C:\Programm\OpenVPN\Config die client.opvn erstellt.
Zeile 252: Zeile 267:
   resolv-retry infinite
   resolv-retry infinite
   nobind
   nobind
  user nobody
  group nobody
   persist-key
   persist-key
   persist-tun
   persist-tun
Zeile 260: Zeile 273:
   key C:\\Programme\\OpenVPN\\keys\\client.key
   key C:\\Programme\\OpenVPN\\keys\\client.key
   tls-auth C:\\Programme\\OpenVPN\\keys\\ta.key 0
   tls-auth C:\\Programme\\OpenVPN\\keys\\ta.key 0
   vomp-lzo
   comp-lzo
  tun-mtu 1500
  fragment 1300
  verb 3
  reneg-sec 0
  cipher AES-256-CBC
 
Diese einfach speichern. In der Windows Config fehlen die User und Grup angaben, da Windows das nicht unterstüzt. Anschließend das OpenVPN-GUI starten. Jetzt erscheint ein Symbol in der Taskleiste, dies via Doppelklick öffnen.
 
Dann verbindet er direkt auf den "Standard-VPN"-Server. Man kann auch mehrere Profile im Config-Verzeichnis ablegen, welche man dann auswählen kann.
 
====MacOS X==== 
 
Die Installation vom OpenVPN-Clienten Tunnelblick (http://www.tunnelblick.net/) funktioniert recht einfach. Da gehe ich hier nun selber nicht drauf ein, da sie sehr gut auf der Homepage erklaert ist.
 
Aber auch wie bei Windows und bei Linux müssen die Certificate erstellt werden und zum MacOS kopiert werden. Und die Config ist identisch mit der Windows / Linux Version.
 
  client
  dev tap0
  proto udp
  remote 192.168.1.2 1194
  resolv-retry infinite
  nobind
  persist-key
  persist-tunca /Users/$USER/Library/openvpn/ca.crt
  cert /Users/$USER/Library/openvpn/client.crt
  key /Users/$USER/Library/openvpn/client.key
  tls-auth /Users/$USER/Library/openvpn/ta.key 1
  comp-lzo
  tun-mtu 1500
  fragment 1300
   verb 3
   verb 3
   reneg-sec 0
   reneg-sec 0
   cipher AES-256-CBC
   cipher AES-256-CBC


Diese dann einfach Speichern. Dann die OpenVPN-Gui starten. Dann erscheint ein Symbol in der Taskleiste, dies via Doppelklick öffnen.  
Die tun-mtu und fragment werte _müssen_ so bleiben. Sonst kann man zwar ggf. im NFS browsen, aber nix downloaden.


Dann verbindet er direkt auf den "Standard-VPN"-Server. Man kann auch mehrer Profile in das Config-Verzeichniss speichern. Diese kann man dann auswählen.
====Feste IPs====
 
Man kann jedem Clienten auch eine feste IP geben:
 
Einfach die server.conf mit:
 
  client-config-dir /etc/openvpn/ip/
 
erweitern.
 
Diese Verzeichnisse anlegen und dort folgendes machen:
 
  touch client1  (die Datei muss wie das Cert heisen, was ihr für den Clienten erstellt habt, zb heist das Cert client1.crt dann
  muss die Datei einfach client1 heißen)
 
Das könnt ihr für jeden Clienten so machen.
 
diese Datein dann mit einem Editor öffnen und folgendes eintragen:
 
  ifconfig-push IP_DIE_DER_CLIENT_BEKOMMT_IM_LAN NETMASK
 
Dann den OpenVPN-Server neustarten, und schon bekommen die Clients die IP die ihr wollt.


==Abschluss==
==Abschluss==


Diese Art des VPN sollte man nur nutzen, wenn man die anderen Benutzer kennt, sehr gut kennt. Da sie kein Password brauchen um ins VPN zu kommen. Auf vpnforum.de werden einige andere Auth-Methoden erklärt. U.a. via MySQL-Datenbank etc.
Diese Art der Auth und Handhabung der VPN ist super dazu geeignet um ein VPN aufzubauen, mit Leuten die man kennt. Da keine große Userverwaltung genutz wird und im Endeffekt jeder alles darf ;) Man kann das ganze ab er auch erweitern mit Auth via MYSQL oder so.


Ich hoffe ich konnte euch mit diesem HowTo weiterhelfen. Es ist nicht ganz Fehlerfrei, aber wer ist das schon.
Ich hoffe ich konnte euch mit diesem HowTo weiterhelfen. Es ist nicht ganz Fehlerfrei, aber wer ist das schon.
Zeile 281: Zeile 345:




 
[[Kategorie:Netzwerk]]
[[Kategorie:Installation]]
[[en:OpenVPN]]

Aktuelle Version vom 4. August 2021, 07:38 Uhr

Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.


Dieser Artikel oder Artikelabschnitt bedarf einer stilistischen Überarbeitung laut Empfehlungen in Artikelstil.


Das verbinden von Comoputern ist unter Windows mit Hamachi gut möglich. Aber auch unter Linux ist das mit OpenVPN ebenfalls sehr leicht zu realisieren.

In diesem Artikel wird das Verbinden mit der OpenVPN-Variante Bridge und ihren Certifikaten beschrieben. Diese ist sehr leicht zu realisieren und zu warten und für einen kleinen Benutzerkreis (Bekanntenkreis) sehr geeignet. Für dieses Beispiel läuft als Server Archlinux (64bit / Testing). Als Gegenstelle dient ein Windows XP Professional 32bit, ein Gentoo (32bit/~x86) und ein MacOS 10.4.11 (Tiger).

Installation

Als Erstes installiert man OpenVPN wie gewohnt mit pacman:

  # pacman -S openvpn bridge-utils easy-rsa

Konfiguration

To-do

Module

Bevor es losgehen kann, müssen die benötigten Module geladen werden:

 # modprobe tun
 # modprobe bridge

um dies zu kontrollieren:

 # lsmod | grep -e tun -e bridge
  tun                    10368  1
  bridge                 56488  0

Bridge

Die Bridge ist eigentlich relativ einfach einzurichten. Der Author verwendet folgende Konfiguration:

 # cat /etc/conf.d/bridges
  bridge_br0="eth0 tap0"
  BRIDGE_INTERFACES=(br0)

Nun wird die /etc/rc.conf-Datei bearbeitet:

Zuerste bei der Linie MODULES= tun und bridge hinzufügen.

Dann kommen die eigentlichen Einstellungen:

  eth0="eth0 up"
  tap0="tap0 up"
  br0="br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255"
  INTERFACES=(lo eth0 br0 tap0)
  gateway="default gw 192.168.1.1"
  ROUTES=(gateway)

Die IP von eth0 (je nach System auch eth1) in br0 einfügen. Diese danach bei eth0 (eth1) entfernen.

Somit ist die Brücke schon fast fertig.

Nun muss dafür gesorgt werden, dass tap0 angelegt wird. Dafür dieses rc.d-Script in der Datei rc.conf vor network einfügen:

  #!/bin/bash
  
  . /etc/rc.conf
  . /etc/rc.d/functions
  
  case "$1" in
    start)
      stat_busy "Creating tap0 interface"
      /usr/sbin/openvpn --mktun --dev tap0 >/dev/null
      if [ $? -eq 0 ]; then
        stat_done
      else
        stat_fail
      fi
      ;;
    stop)
      stat_busy "Destroying tap0 interface"
      /usr/sbin/openvpn --rmtun --dev tap0 >/dev/null
      stat_done
      ;;
    *)
     echo "usage: $0 {start|stop}"
 esac
 exit 0

Dieses Script anschliessend noch unter /etc/rc.d/tap0 speichern, dann chmod 755 auf /etc/rc.d/tap0 und schon funktioniert's. Das Interface wird anschließend über /etc/rc.d/tap0 gestartet. Wie gesagt sollte es vor network in rc.conf in den DAEMONS eingetragen werden.

Keys

Als nächstes müssen wir die SSL und TLS - Keys erstellen. Dafür gibt es das tolle Tool Easy-RSA was unter /usr/share/easy-rsa zu finden ist.

Als erstes bearbeiten wir die Datei vars:

 nano -w vars

Ich denke die Einstellungen in vars sind selbstklärend. Das Verzeichnis am Anfang so lassen.

Dann werden nun die Certificates erstellt:

 source vars // Nach jeder Änderung in dieser datei muss sie neu "gesourced" werden

dann

 ./clean-all // löscht vorab alle evtl. vorhandenen Keys / Certs. 

und dann

  ./build-ca --pass // Passwort -> kein triviales Kennwort verwenden!  "Organizational Unit Name" -> leer lassen

Somit haben wir schon mal die CA-Certificates.

Nun kommen die Server-Certificate.

  ./build-key-server IRGEND_EIN_NAME // "challenge password" -> leer lassen / "An optional company name" -> leer lassen / "Sign the  
  certificate? [y/n]" -> y / "1 out of 1 certificate requests certified, commit?" -> y

und nun noch die Gegenstücke des Clients. Je nachdem wie ihr $Client benennt, heisen auch die Certs so. Dient der Übersichtlichkeit.

  ./build-key-pass $client

Nun kommt noch das Diffie Hellman

  ./build-dh

Und als letztes kommt der TLS-Key

  openvpn --genkey --secret ./keys/ta.key

Jetzt liegen die ganzen Sachen unter /usr/share/easy-rsa/keys/, ich habe sie aber nach /etc/openvpn/keys verschoben.

Nun haben wir alle wichtigen Keys und Vorbereitungen zusammen.

Server

Als erstes kopieren wir alles aus /usr/share/openvpn/examples/ nach /etc/openvpn/

dann

  nano -w /etc/openvpn/server.conf
  
  server-bridge 192.168.1.2 255.255.255.0 192.168.1.10 192.168.1.20
  port 1194
  proto udp
  dev tap0
  
  
  ca /etc/openvpn/keys/ca.crt
  dh /etc/openvpn/keys/dh2048.pem
  cert /etc/openvpn/keys/EUER_SERVER.crt
  key /etc/openvpn/keys/EUER_SERVER.key
  tls-auth /etc/openvpn/keys/ta.key 0
  
  
  user openvpn
  group openvpn
  
  cipher AES-256-CBC
  
  tun-mtu 1500
  fragmente 1300
  resolv-retry infinite
  
  persist-key
  persist-tun
  
  keepalive 10 120
  comp-lzo
  verb 3
  
  client-to-client

So sieht meine Konfiguration aus. Sie sagt im Endeffekt eigentlich nur, wer der Server ist, und welche IPs die Clienten bekommen, dann noch welche Verschlüsselung und Komprimierung genommen werden soll. Ausführlichere Informationen findet ihr auf der OpenVPN Website.

Da im Arch-OpenVPN-Paket noch kein rc.d-Script dabei ist. Müssen wir das ganze über die /etc/rc.local starten.


  nano -w /etc/rc.local
  openvpn --config /etc/openvpn/server.conf --tls-server --daemon

Benutzer

Die Benutzer-Wahl ist bei diesem Verfahren recht einfach.

Einfach für jeden benutzer ein eigenes Certificate erstellen:

 ./build-key-pass client
 ./build-key-pass client2 

usw.

Auf die jeweiligen Clienten müssen dann die clientX.*, die ta.key und das ca.crt liegen und in der client.config angegeben werden.

Man kann auch Clienten "rauswerfen" und sperren:

  http://www.vpnforum.de/wiki/index.php/Zertifikate_sperren

Client

Wir haben 3 Clienten zur Auswahl. Linux, Windows und MacOS

Linux

Als erstes nehmen wir uns den Linux-Client vor. Ich gehe stark davon aus, dass es keinen Unterschied macht, ob es nun eine Gentoo- oder eine Arch-Installation ist, oder eine andere Linux Distribution.

Wir nehmen uns nun erstmal die Client-Config vor:

 remote 192.168.1.2     
 local 192.111.111.2  # nicht benötigt?
 client              
 proto udp           
 dev tap0
 ca /etc/openvpn/ca.crt
 cert /etc/openvpn/client.crt
 key /etc/openvpn/client.key
 tls-auth /etc/openvpn/ta.key 1  
 keepalive 10 120
 cipher AES-256-CBC 
 comp-lzo
 #tun-mtu 1500
 #fragment 1300
 user openvpn
 group openvpn
 persist-key
 persist-tun
 resolv-retry infinite
 verb 3

Der User OpenVPN und die Gruppe OpenVPN müssen natürlich aufm Clienten vorhanden sein.

Was umbedingt zu beachten ist, das /dev/tap0 was oben via rc.script erstellt worden ist, _MUSS_ unter Linux-Clienten _EBENFALLS_ erstellt werden, und dann mit einem beherztem

ifconfig tap0 up 

zum leben erweckt werden.


Nachdem die Config bearbeitet wurde, müssen wir uns noch vom Server die Keys holen, die wir gerade erst erstellt haben und danach in die Configs eingetragen haben.

Ich habe es via SCP gemacht.

  scp ca.crt ta.key client.* 192.111.111.2:/etc/openvpn/

nun sollten wir auch hier noch das TUN-Modul laden.

  modprobe tun

Jetzt sollte man per ifconfig sehen, dass da das tap0-Interface hinzugekommen ist. Mit einer IP zwischen 192.168.1.10 u. 20. Genau so haben wir das ja in der Server-Config eingestellt.

Sollte alles geklappt haben, können wir den Server pingen:

  ping 192.168.1.2

Hat alles geklappt und der ping wird erfolgreich ausgeführt, steht das VPN und ihr könnt damit arbeiten

Ich habe NFS u. Cups erfolgreich getestet.

Windows

Unter Windows habe ich mich für die aktuellen OpenVPN-Clients von http://openvpn.se entschieden.

Einfach die aktuelle Version herunterladen und installieren.

Vor dem ersten Start müssen auch hier wieder die Certificates und Keys vom Server geholt werden. Da hier kein SCP im traditionellen Sinn funktioniert, habe ich WinSCP genommen. Wieder die ca.crt ta.key client.*. Die habe ich nach C.\Programm\OpenVPN\keys kopiert.

Dann habe ich unter C:\Programm\OpenVPN\Config die client.opvn erstellt.

  client
  dev tap0
  proto udp
  remote 192.168.1.2 1194
  resolv-retry infinite
  nobind
  persist-key
  persist-tun
  ca C:\\Programme\\OpenVPN\\keys\\ca.crt
  cert C:\\Programme\\OpenVPN\\keys\\client.crt
  key C:\\Programme\\OpenVPN\\keys\\client.key
  tls-auth C:\\Programme\\OpenVPN\\keys\\ta.key 0
  comp-lzo
  tun-mtu 1500
  fragment 1300
  verb 3
  reneg-sec 0
  cipher AES-256-CBC

Diese einfach speichern. In der Windows Config fehlen die User und Grup angaben, da Windows das nicht unterstüzt. Anschließend das OpenVPN-GUI starten. Jetzt erscheint ein Symbol in der Taskleiste, dies via Doppelklick öffnen.

Dann verbindet er direkt auf den "Standard-VPN"-Server. Man kann auch mehrere Profile im Config-Verzeichnis ablegen, welche man dann auswählen kann.

MacOS X

Die Installation vom OpenVPN-Clienten Tunnelblick (http://www.tunnelblick.net/) funktioniert recht einfach. Da gehe ich hier nun selber nicht drauf ein, da sie sehr gut auf der Homepage erklaert ist.

Aber auch wie bei Windows und bei Linux müssen die Certificate erstellt werden und zum MacOS kopiert werden. Und die Config ist identisch mit der Windows / Linux Version.

  client
  dev tap0
  proto udp
  remote 192.168.1.2 1194
  resolv-retry infinite
  nobind
  persist-key
  persist-tunca /Users/$USER/Library/openvpn/ca.crt
  cert /Users/$USER/Library/openvpn/client.crt
  key /Users/$USER/Library/openvpn/client.key
  tls-auth /Users/$USER/Library/openvpn/ta.key 1
  comp-lzo
  tun-mtu 1500
  fragment 1300
  verb 3
  reneg-sec 0
  cipher AES-256-CBC

Die tun-mtu und fragment werte _müssen_ so bleiben. Sonst kann man zwar ggf. im NFS browsen, aber nix downloaden.

Feste IPs

Man kann jedem Clienten auch eine feste IP geben:

Einfach die server.conf mit:

  client-config-dir /etc/openvpn/ip/

erweitern.

Diese Verzeichnisse anlegen und dort folgendes machen:

 touch client1  (die Datei muss wie das Cert heisen, was ihr für den Clienten erstellt habt, zb heist das Cert client1.crt dann 
 muss die Datei einfach client1 heißen)

Das könnt ihr für jeden Clienten so machen.

diese Datein dann mit einem Editor öffnen und folgendes eintragen:

  ifconfig-push IP_DIE_DER_CLIENT_BEKOMMT_IM_LAN NETMASK

Dann den OpenVPN-Server neustarten, und schon bekommen die Clients die IP die ihr wollt.

Abschluss

Diese Art der Auth und Handhabung der VPN ist super dazu geeignet um ein VPN aufzubauen, mit Leuten die man kennt. Da keine große Userverwaltung genutz wird und im Endeffekt jeder alles darf ;) Man kann das ganze ab er auch erweitern mit Auth via MYSQL oder so.

Ich hoffe ich konnte euch mit diesem HowTo weiterhelfen. Es ist nicht ganz Fehlerfrei, aber wer ist das schon.

Sollten Fragen auftauchen, ich bin im freenode in #archlinux.de zu erreichen (PampersBomba)

So Long