Open VPN
Server und Client installieren
yum install openvpn
hierfür ist die Quelle rpmforge nötig.
Konfiguration Server
Die Konfiguration des Servers kann bequem in Webmin durchgeführt werden. Dazu benötigen wir von www.webmin.com das openvpn Modul openvpn-2.5.wbm.gz, welches wir in Webmin installieren.
Neue CA (Zertifizierungsstelle) generieren
Es wird eine neue Root-CA generiert:
openssl dhparam -out /etc/openvpn/keys/meteosat-vpn/dh2048.pem 2048 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ..........................................................................................+........ ..................................+................................................................. ..++*++* openssl dhparam -out /etc/openvpn/keys/meteosat-vpn/dh2048.pem 2048 OK /usr/bin/openssl req -batch -days 3650 -nodes -new -x509 -keyout "ca.key" -out "ca.crt" -config /etc/openvpn/openvpn-ssl.cnf Generating a 2048 bit RSA private key .................................................+++ .............................................................................+++ writing new private key to 'ca.key' ----- /usr/bin/openssl req -batch -days 3650 -nodes -new -x509 -keyout "ca.key" -out "ca.crt" -config /etc/openvpn/openvpn-ssl.cnf OK /usr/bin/openssl ca -gencrl -keyfile "ca.key" -cert "ca.crt" -out "crl.pem" -config /etc/openvpn/openvpn-ssl.cnf Using configuration from /etc/openvpn/openvpn-ssl.cnf /usr/bin/openssl ca -gencrl -keyfile "ca.key" -cert "ca.crt" -out "crl.pem" -config /etc/openvpn/openvpn-ssl.cnf OK
Neue Schlüssel generieren
einen Server-Key
openssl req -days 3650 -batch -new -keyout /etc/openvpn/keys/meteosat-vpn/meteosat_server.key -out /etc/openvpn/keys/meteosat-vpn/meteosat_server.csr -nodes -extensions server -config /etc/openvpn/openvpn-ssl.cnf Generating a 2048 bit RSA private key ..+++ ................................................................................................... ................+++ writing new private key to '/etc/openvpn/keys/meteosat-vpn/meteosat_server.key' ----- openssl req -days 3650 -batch -new -keyout /etc/openvpn/keys/meteosat-vpn/meteosat_server.key -out /etc/openvpn/keys/meteosat-vpn/meteosat_server.csr -nodes -extensions server -config /etc/openvpn/openvpn-ssl.cnf OK openssl ca -days 3650 -batch -out /etc/openvpn/keys/meteosat-vpn/meteosat_server.crt -in /etc/openvpn/keys/meteosat-vpn/meteosat_server.csr -extensions server -config /etc/openvpn/openvpn-ssl.cnf Using configuration from /etc/openvpn/openvpn-ssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'DE' stateOrProvinceName :PRINTABLE:'Bayern' localityName :PRINTABLE:'Muenchen' organizationName :PRINTABLE:'Meteosat' organizationalUnitName:PRINTABLE:'Office' commonName :T61STRING:'meteosat_server' emailAddress :IA5STRING:'vpnadmin@meteosat.de' Certificate is to be certified until Feb 4 09:16:55 2023 GMT (3650 days) Write out database with 1 new entries Data Base Updated openssl ca -days 3650 -batch -out /etc/openvpn/keys/meteosat-vpn/meteosat_server.crt -in /etc/openvpn/keys/meteosat-vpn/meteosat_server.csr -extensions server -config /etc/openvpn/openvpn-ssl.cnf OK openssl pkcs12 -export -passout pass:"******" -inkey meteosat_server.key -in meteosat_server.crt -certfile ca.crt -out meteosat_server.p12 openssl pkcs12 -export -passout pass:"******" -inkey meteosat_server.key -in meteosat_server.crt -certfile ca.crt -out meteosat_server.p12 OK
für jeden VPN Client einen eigenen Key erstellen
openssl req -days 3650 -batch -new -keyout /etc/openvpn/keys/meteosat-vpn/peter.key -out /etc/openvpn/keys/meteosat-vpn/peter.csr -passout pass:"******" -config /etc/openvpn/openvpn-ssl.cnf Generating a 2048 bit RSA private key .............................................+++ ....+++ writing new private key to '/etc/openvpn/keys/meteosat-vpn/peter.key' ----- openssl req -days 3650 -batch -new -keyout /etc/openvpn/keys/meteosat-vpn/peter.key -out /etc/openvpn/keys/meteosat-vpn/peter.csr -passout pass:"******" -config /etc/openvpn/openvpn-ssl.cnf OK openssl ca -days 3650 -batch -out /etc/openvpn/keys/meteosat-vpn/peter.crt -in /etc/openvpn/keys/meteosat-vpn/peter.csr -config /etc/openvpn/openvpn-ssl.cnf Using configuration from /etc/openvpn/openvpn-ssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'DE' stateOrProvinceName :PRINTABLE:'Bayern' localityName :PRINTABLE:'Muenchen' organizationName :PRINTABLE:'Meteosat' organizationalUnitName:PRINTABLE:'Office' commonName :PRINTABLE:'peter' emailAddress :IA5STRING:'vpnadmin@meteosat.de' Certificate is to be certified until Feb 4 09:19:43 2023 GMT (3650 days) Write out database with 1 new entries Data Base Updated openssl ca -days 3650 -batch -out /etc/openvpn/keys/meteosat-vpn/peter.crt -in /etc/openvpn/keys/meteosat-vpn/peter.csr -config /etc/openvpn/openvpn-ssl.cnf OK openssl pkcs12 -export -passout pass:"******" -inkey peter.key -passin pass:"******" -in peter.crt -certfile ca.crt -out peter.p12 openssl pkcs12 -export -passout pass:"******" -inkey peter.key -passin pass:"******" -in peter.crt -certfile ca.crt -out peter.p12 OK
Einen neuen VPN Server erstellen
In die Mitte auf „VPN-List“ klicken
Hier den richtigen CA Server auswählen und auf „New VPN-Server“ klicken
Einstellungen
Setting | Wert | Kommentar |
---|---|---|
Name | Meteosat-VPN | Selbst wählen |
Port | 1194 | Dies wird der VPN Port über den alle VPN-Clients miteinander kommunizieren |
Protocol | TCP-Server | UDP ermöglicht eine schnellere Verbindung, TCP ist wichtig für die Verwendung hinter Proxys |
Device | TUN | TUN lässt sich einfacher routen |
Local host name or IP address | ALL | Die Serverconfig benötigt keinen Servernamen |
Net IP assigns | 10.0.0.0 | Netz-IP des VPN Netzwerk |
Netmask | 255.255.255.0 | Bestimmt die Netzwerkklasse (Subnet) |
Alle weiteren Einstellungen müssen nicht verändert werden. Nach dem Speichern der Daten können die Einstellungen des VPN-Server über das rote „changeme“ links oben geändert werden (außer Name und Port). Besser ist es die Einstellungen an der Konfigurationsdatei selbst vorzunehmen:
vim /etc/openvpn/Meteosat-VPN.conf
port 1194 # VPN Port proto udp # Übertragungsart innerhalb des VPN dev tun0 # Art des virtuellen VPN-Devices ca keys/meteosat-vpn/ca.crt # Pfad zum CA Zertifikat cert keys/meteosat-vpn/meteosat_server.crt # Pfad zum CA-Schlüssel key keys/meteosat-vpn/meteosat_server.key # Pfad zum Serverschlüssel dh keys/meteosat-vpn/dh2048.pem # Pfad zum Diffie-Hellman-Schlüssel server 10.0.0.0 255.255.255.0 # VPN Netzwerkeinstellungen crl-verify keys/meteosat-vpn/crl.pem # Pfad zum X.509 Zertifikat cipher DES-CFB # Verschlüsselungsart user nobody # Benutzerberetigung des Dienst openvpn group AundB # Gruppenberechtigung des Dienst openvpn status servers/Meteosat-VPN/logs/openvpn-status.log # Pfad zur Statusdatei log-append servers/Meteosat-VPN/logs/openvpn.log # Pfad zum Fehlerlog verb 2 # Gesprächigkeit der Logdateien mute 20 max-clients 100 # Maximal erlaubte VPN Clients keepalive 10 120 client-config-dir /etc/openvpn/servers/Meteosat-VPN/ccd # Pfad zu den Clientdateien comp-lzo # Art der Komprimierung persist-key persist-tun ccd-exclusive
VPN Server starten
Es gibt zwar ein Startscript:
/etc/init.d/openvpn start
doch ist es aktuell nicht brauchbar. Der Dienst kann aber auch als root so gestartet werden:
cd /etc/openvpn openvpn Meteosat-VPN.conf # Servername jeweils anpassen
mit der Tastenkombination [Strg] [c] wird der Dienst beendet.
Ein Startscript selbst erstellen
vim /root/startvpn.sh
und mit diesem Inhalt füllen:
#! /bin/bash VPNSERVER=`ls /etc/openvpn |grep .conf |cut -d . -f 1` cd /etc/openvpn openvpn $VPNSERVER.conf & echo Der Openvpnserver $VPNSERVER hat die PID: pgrep openvpn echo Ab hier beginnt das Log von $VPNSERVER tail -f /etc/openvpn/servers/$VPNSERVER/logs/openvpn.log #Ende
Ausführbar machen
chmod +x /root/startvpn.sh
und so verwenden
sh /root/startvpn.sh
mit der Tastenkombination [Strg] [c] wird der Dienst beendet.
Routen in weitere Netze
Damit man auch ins Internet gelangen kann, muss man der Server-Firewall (in diesem Fall iptables) noch eine Regel mit geben und das IP-Forwarding aktivieren. Damit folgende Änderungen auch nach dem Reboot bestehen, sollte man sie am besten in die /etc/rc.local eintragen.
iptables -t nat -F POSTROUTING echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADENun sollte man problemlos ins Internet gelangen können
Konfiguration Client
Über das blaue „Client List“, und dann „New VPN Client“ einen neuen Client anlegen. Es können nur Clients angelegt werden, für die es einen gültigen Schlüssel gibt.
Name | Wert | Kommentar |
---|---|---|
Name | peter | Der Name ist durch den Clientschlüssel vorgegeben |
remote (Remote IP) | 192.168.4.94 | VPN im LAN: Lokale Adesse des VPN Servres VPN im Internet: die dynDNS Adresse angeben |
Alle weiteren Einstellungen können wieder bleiben.
Dann die Informationen verbreiten. Damit kann man ein komprimiertes Datenpaket speichern, welches an den Benutzer gemailt werden kann. Dieser kann es in seinem Client laut Anleitung verwenden.
Ein openvpn Client erstellen
- yum install openvpn
- Vom VPN Admin die Client Zipdatei username.zip anfordern
- diese nach /etc/openvpn/ entpacken
- als root starten mit /etc/openvpn/username.conf
Der Client verbindet sich mit dem VPN-Server, erhällt eine virtuelle Netzwerkkarte mit einer IP-Adresse aus den VPN-Netzwerk. Alle IP-Pakete werden ab jetzt nur noch innerhalb des VPN Netzwerkes verschlüsselt versendet.
Fehlerbehebung
Eine Fehlerbeschreibung des instalierten VPN Servers kann unter /etc/openvpn/servers/Meteosat-VPN/logs/openvpn.log für den VPN Server „Meteosat-VPN“ betrachtet werden.
the current --script-security setting may allow this configuration to call user-defined scripts Wed Feb 6 14:13:54 2013 WARNING: file 'keys/changeme/gerri.key' is group or others accessible Wed Feb 6 14:13:54 2013 TLS-Auth MTU parms [ L:1539 D:138 EF:38 EB:0 ET:0 EL:0 ] Wed Feb 6 14:13:54 2013 TCP/UDP: Socket bind failed on local address [undef]:500: Permission deniedPorts unter 1000 düefen nur vom System und root verwendet werden. Der in der Conf-Datei angegebene User darf offensichtlich diesen Port nicht belegen.
Open VPN-Client
Für Linux ist kein besonderer Open-VPN-Client nötig das Paket Openvpn ist sowohl Server als aich Clinet.
Windows
Den Windows OpenVPN Client unter http://openvpn.se/download.html laden und installieren. Jetzt das Client Datenpaket nach …Programme\openvpn\config\ auspacken und den Client starten.
Eine ausführliche Anleitung gibt es hier: https://community.openvpn.net/openvpn/wiki/OpenVPN-GUI
Android
Für den Android-Client gibt es zwei sehr brauchbare Anleitungen:
iPhone
Dies ist das HowTo des Openvpn-Client für iPhones:
MAC OSx
Für dem MAC heisst der Openvpn-Client Tunnelblick
Weitere Infos
http://wiki.freifunk.net/OpenVPN_Howto#Installation_unter_Linux
http://www.linuxforen.de/forums/showthread.php?t=169354
https://po2.uni-stuttgart.de/~ruslucas/openvpn-howto/
http://www.backenhoernchen.de/dokuwiki/computer/howtos/openvpn_howto
http://wiki.openvpn.eu/index.php/Hauptseite Sehr gute Anleitung
OpenVPN für WinCE Handys und PDA
http://www.rus.uni-stuttgart.de/nks/netzdienste/wlan_beschreibung/vpn_pda/openvpn/index.html
http://duncanbrown.org/index.php/OpenVPN_With_CentOS
http://wiki.nefarius.at/linux/mit_openvpn_ins_internet