Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Ein eigener OpenVPN Server, über den der gesamte Internet-Traffic geleitet wird, hat viele Vorteile: Unsichere, freie WLANs werden für einen selbst abhörsicher, Geräte lassen sich – egal ob sie sich Zuhause im Festnetz oder im Mobilfunknetz befinden –  zu einem eigenen Subnetz inkl. eigener IPs zusammenfassen und das verbrauche Datenvolumen aller angemeldeter Geräte lässt sich zentral kontrollieren.

Meine beiden Ziele sind hauptsächlich die Verschlüsselung in unsicheren Umgebungen und die Möglichkeit, meinen gesamten Verbrauchten Traffic aller Geräte zentral am Server kontrollieren zu können (Z.B. mit vnstat). Es hieß, ein OpenVPN Server sei einfach einzurichten und unkompliziert. Hab mich dann also an die Arbeit gemacht und meinen eigenen VPN Server aufgesetzt. Dabei habe ich mich an diverse Anleitungen im Internet gehalten, aber mein Server wollte lange Zeit kaum funktionieren. Vor allem mit den Clients für Ubuntu hatte ich Probleme. Ich kam nicht ins Internet.

Also habe ich eine Menge recherchiert und Experten im ubuntuusers.de Forum befragt… und jetzt steht ich da mit einem gut funktionierendem OpenVPN Server. :) Ich will in diesem Artikel erklären, wie ich zu meinem OpenVPN Server gekommen bin. Vielleicht hilft er ja dem ein oder anderen, der auch gerade Probleme bei der Konfiguration hat.

Hinweis: Mit IPv6 funktioniert das Gateway nicht. Ich versuche, das Problem zu beheben. Sobald eine Lösung gefunden ist, wird der Beitrag aktualisiert.

OpenVPN Server installieren

Zuerst loggen wir uns ins Terminal ein und verschaffen uns Root-Rechte – Ohne die geht nix…

sudo -s

Die Installation von OpenVPN erledigen wir mit dieser Befehlskette:

apt-get update && apt-get install openvpn easy-rsa

Das OpenVPN Paket ermöglicht sowohl die Einrichtung eines Clients wie auch eines Servers. Was wir letztendlich erhalten, bestimmt die Konfigurationsdatei, die wir später anlegen. Außerdem wird easy-rsa installiert, welches wir im nächsten Schritt benötigen werden.

Vorbereitung

Zuerst legen wir aber die Standardattribute für die Zertifikate fest, denn bei OpenVPN geschieht die Authentifizierung der Benutzer / Clients am Server mit Zertifikaten.

cd /etc/openvpn

Zum generieren der Zertifikate gibt es bereits fertige Scripts, die wir uns aus dem Beispielverzeichnis kopieren:

cp -R /usr/share/easy-rsa ./easy-rsa

Jetzt wechseln wir in den easy-rsa Ordner, wo wir zunächst die Standardattribute unserer Zertifikate anpassen:

cd easy-rsa
nano vars

Weil wir doch alle ein bisschen paranoid sind, wird diese Stelle auch noch so abgeändert. Das verschafft uns höhere Sicherheit:

# Increase this to 2048 if you
# are paranoid.  This will slow
# down TLS negotiation performance
# as well as the one-time DH parms
# generation process.
export KEY_SIZE=2048

Dieser Abschnitt:

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="DE"
export KEY_PROVINCE="BY"
export KEY_CITY="Landshut"
export KEY_ORG="meinserver.net"
export KEY_EMAIL="kjjasdhshdf@gmx.de"
export KEY_EMAIL=kjjasdhshdf@gmx.de
export KEY_CN="meinserver.net"
export KEY_NAME="Max Muster"
export KEY_OU=changeme
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Muss an die eigenen Daten angepasst werden. (Land, Bundesland, Stadt, Organisation, zweimal E-Mail, Domain, unter welcher der Server erreichbar ist!, Name des Besitzers)

CA / Serverzertifikate generieren

Dann kann es ja jetzt los gehen mit dem Generieren der Certificate Authority und den Serverzertifikaten. Dazu wird der Editor beendet und unsere gerade geänderte vars-Datei „gesourced“:

source ./vars

Erst mal aufräumen:

./clean-all

Diffie-Hellman-Datei generieren:

./build-dh

Server-CA bauen:

./build-ca

Die Felder sollten bereits die passenden Standardwerte besitzen (Stehen in Klammern), sodass man die Eingabe mit [ENTER] überspringen kann.
Damit wäre die CA erstellt und die Serverzertifikate können erstellt werden:

./build-key-server meinserver.net

meinserver.net muss natürlich mit der eigenen Domain ersetzt werden, unter der der Server verfügbar ist.
Wieder können alle Felder mit [ENTER] übersprungen werden. Ein „Challenge Password“ wird nicht gesetzt; zum Schluss muss noch zweimal mit „y“ bestätigt werden. Das Serverzertifikat haben wir jetzt also auch. Alle generierten Zertifikate mit den zugehörigen Keys liegen jetzt in /etc/openvpn/easy-rsa/keys/

Den Server konfigurieren

Als nächstes wird die Serverkonfiguration vorgenommen:

nano /etc/openvpn/server.conf

Diese Konfiguration könnt ihr direkt übernehmen:

port 1194

proto udp

dev tun

ca easy-rsa/keys/ca.crt
cert easy-rsa/keys/meinserver.net.crt
key easy-rsa/keys/meinserver.net.key  # This file should be kept secret

dh easy-rsa/keys/dh2048.pem

server 10.8.0.0 255.255.255.0

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

push "topology subnet"
topology subnet

route 10.8.0.0 255.255.255.0

keepalive 10 120

comp-lzo

user nobody
group nogroup

persist-key
persist-tun

Nur die Namen der Zertifikatsdateien müsst ihr noch an die Dateinamen / bzw. die Domain eures Servers anpassen, dann ist die Konfiguration fertig.

Iptables korrekt setzen

Damit die Clients Internetzugriff haben und sich nicht nur untereinander in ihrem Subnetz 10.8.0.0/24 verbinden können, müssen jetzt noch ein paar iptables Regeln erstellt werden. Dazu gebt ihr einfach folgende Befehlszeilen nacheinander in euer Terminal ein:

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -o eth0 -i tun0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Da diese Regeln beim nächsten Neustart des Servers nicht mehr gelten, lassen wir die Befehle automatisch bei jedem Serverstart ausführen. Öffnet die Datei /etc/rc.local (nano /etc/rc.local) und schreibt die oben stehenden Befehle vor das „exit 0“.

Diese Befehle werden bei jedem Start ausgeführt.

Mit der Serverkonfiguration sind wir jetzt fertig. Damit die Einstellungen angewendet werden, folgt jetzt noch ein abschließendes

service openvpn restart

Clientzertifikate erstellen

Jetzt sind die Clients dran.

Jeder Client benötigt 3 Dateien, um sich am Server anmelden zu können: Die Dateien ca.crt, clientname.crt und clientname.key. Der „clientname“ kann variieren. „ca.crt“ haben wir bereits erstellt, jetzt werden noch die Clientzertifikate generiert. Mit unserem Terminal sollten wir uns immer noch im Verzeichnis /etc/openvpn/easy-rsa/ befinden. Falls das nicht der Fall ist, wechselt in dieses Verzeichnis.

Ein neues Clientzertifikat wird mit folgendem Befehl erstellt:

./build-key thomas-nb

„thomas-nb“ ist der Clientname, der beliebig wählbar ist. (Keine Sonderzeichen und Leerzeichen!). Die erstellten Zertifikatsdateien werden in diesem Fall thomas-nb.crt und thomas-nb.key heißen. Wählt also einen Namen, der möglichst aussagekräftig ist, sodass ihr die Zertifikate wiedererkennt und führt den Befehl damit aus.
Wieder werdet ihr nach den verschiedenen Attributen für das Zertifikat gefragt… und wieder könnt ihr die Felder überspringen, da die vars-Datei noch gesourced ist, in der bereits unsere Vorgaben stehen. An Schluss muss wieder zweimal mit „y“ bestätigt werden. Sollten mal keine Vorgaben bereitstehen, muss die vars Datei wieder gesourced werden. Dazu einfach ein

source ./vars

eingeben, wie ihr es bereits zu Beginn dieser Anleitung getan habt. Die Vorgaben für die Zertifikatsfelder sind dann wieder verfügbar.
Als nächstes müsst ihr jeden eurer Clients mit seinen 3 Zertifikatsdateien versorgen, d.h. die Dateien müssen auf irgendeine Art und Weise auf die Clients übertragen werden. Welches Übertragungsmittel ihr benutzt, ist egal. Es bieten sich z.B. FTP und USB Sticks an. Alternativ könnt ihr natürlich auch jede der 3 Dateien öffnen und den Inhalt abschreiben ;)

Hier nochmal die Dateinamen, die jeder Client braucht:

  • ca.crt (CA Rootzertifikat)
  • clientname.crt (Clientzertifikat)
  • clientname.key (Schlüssel für das Clientzertifikat, geheim!)

Sobald wir diese Dateien vom Server auf den Client übertragen haben, können wir die Finger vom Server lassen und wenden und nun der Konfiguration der Clients zu.

OpenVPN Client konfigurieren

Installiert euch auch auf euren Clients openvpn:

sudo apt-get install openvpn

Grafische Konfiguration über Network-Manager Plugin

Im folgenden gehe ich davon aus, dass unter Ubuntu (Unity-Desktop) mit dem OpenVPN Plugin des Network-Managers eine Verbindung hergestellt werden soll. So ähnlich funktioniert die Einrichtung auch auf anderen Plattformen und Desktops.

Installieren wir zuerst das OpenVPN Plugin:

sudo apt-get update && sudo apt-get install network-manager-openvpn

Neben dem Plugin wird auch gleich der Rest des OpenVPN Servers / Clients mitinstalliert. Interessiert uns aber nicht weiter. Nach der Installation erstellen wir eine neue OpenVPN Verbindung. (Netzwerk-Symbol oben rechts => Verbindungen bearbeiten => Hinzufügen => OpenVPN => Erzeugen). Dann gebt ihr der Verbindung einen Namen, gebt die Serveradresse ein und sagt dem Programm, wo eure Zertifikatsdateien zu finden sind. (Zertifikat des Benutzers: clientname.crt | Zertifikat der Zertifizierungsstelle: ca.crt | Privater Schlüssel: clientname.key)

Unbedingt LZO Komprimierung aktivieren!

Jetzt ist noch wichtig, dass ihr unter „Erweitert“ „LZO-Komprimierung verwenden“ aktiviert, denn unser OpenVPN Server komprimiert die Daten. Wird dieser Haken nicht gesetzt, kommen wir nicht ins Internet. Das war mit ein Grund, warum OpenVPN bei mir lange Zeit nicht funktionieren wollte.

Danach alles bestätigen und schließen und:

Im Verbindung-Menü kann jetzt unter „VPN-Verbindungen“ die gerade erstellte Verbindung aktiviert werden. Es dauert ein paar Sekunden, bis die verschlüsselte Verbindung aufgebaut ist. Danach könnt ihr z.B. unter wieistmeineip.de kontrollieren, ob ihr jetzt mit der IP eures Servers unterwegs seid. Das sollte jetzt der Fall sein ;) Wer die VPN Verbindung automatisch starten will, kann das in den Einstellungen seiner aktuellen WLAN- oder Kabelverbindung im Reiter „Allgemein“ aktivieren.

Wenn ihr jetzt im Terminal eines Clients

ip addr show

eingebt, müsste eine neue Schnittstelle „tun0“ zu sehen sein und die IP (10.8.0.x) eures Clients.

Textdatei-basierte Konfiguration über client.conf

In den Kommentaren wurde ich nach einen Textdatei-basierten Beispielkonfiguration gefragt, hier seht ihr eine ;)

client

remote meinserver.net

ca /home/user/openvpn/ca.crt
cert /home/user/openvpn/client.crt
key /home/user/openvpn/client.key

comp-lzo yes

dev tun
proto udp

nobind
auth-nocache
script-security 2

persist-key
persist-tun

user openvpn
group openvpn

Diese Konfiguration passt ihr an euren Rechner an (Pfade zu Zertifikaten und Servername) und schreibt sie in /etc/openvpn/client.conf

Danach könnt ihr den OpenVPN Client starten:

sudo service openvpn start

Das war’s auch schon! Glückwunsch zu deinem OpenVPN Server! :)

Wer an seine Clients immer die selben IP Adresssen vergeben will (Erkennung basierend auf dem Zertifikat), sollte sich diesen Beitrag ansehen: OpenVPN: Statische IP Adressen an Clients vergeben

Für Android kann ich übrigens die App „OpenVPN für Android“ empfehlen: https://play.google.com/store/apps/details?id=de.blinkt.openvpn


Post published on 25. Juni 2013 | Last updated on 13. September 2014
Tags:         

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

48 thoughts on “OpenVPN Server als Internet-Gateway unter Ubuntu Server 14.04

  • Hallo Thomas,

    vielen Dank für den gelungenen Beitrag.

    Genau an der Baustelle sitze ich gerade und versuche mir aus ubuntuusers und dem OpenVPN Forum einen Reim zu machen.

    Eine Bitte hätte ich, könntest exemplarisch die Client Konfigurationsdatei ebenfalls dem Beitrag hinzufügen? Da ich kein Linux als Client verwende und der Windows OpenVPN GUI nicht dieselben Einstellmöglichkeiten besitzt wie der Network-Manager. Zumal der Screenshot nicht alle Einstellungen erklärt.

    BG Oliver

    • Hi Oliver,

      ich habe meinen Beitrag noch um eine Textdatei-basierte Konfiguration ergänzt. :)
      Für die Basiskonfiguration musst du eigentlich nur Serveradresse und die 3 Zertifikate angeben sowie LZO-Komprimierung aktivieren.

      Gruß, Thomas

  • Helmut Achenbach

    Vielen Dank für dieses herausragende HowTo!

  • Hey sehr schönes How-to… allerdings bekomme ich beim routing immer folgende Fehlermeldung:

    iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
    iptables: No chain/target/match by that name.

  • Hallo erst mal ein sehr guter Artikel,

    jedoch kam ich nicht umhin doch noch weitere Literatur hinzuziehen z.B. den Ubuntu Server Guide, wegen dem ein oder anderem Verständnisproblem. Dort wird unter anderem empfohlen die folgenden Dateien:

    ca.crt
    meinserver.net.crt
    meinserver.net.key

    in das Verzeichnis /etc/openvpn zu kopieren. Und in der /etc/openvpn/server.conf wie folgt anzugeben:

    ca ca.crt
    cert meinserver.net.crt
    key meinserver.net.key # This file should be kept secret

    Erst danach hatte ich eine Verbindung mit dem OpenVPN-Server.

    Und das Internetgateway habe ich aber erst dann zum Laufen bekommen als ich folgenden Befehl eingegeben habe.

    echo „1“ > /proc/sys/net/ipv4/ip_forward

    Natürlich habe ich das auch in die /etc/rc.local einfügen müssen.

    Meine verwendete Version ist die oben erwähnte Ubuntu LTS 12.04.
    Leider kann ich mit meinen bescheidenen Linuxkenntnissen nicht die Ursache ergründen aber ich dachte ich muss das hier noch loswerden, zumindest für mich, falls ich mal wieder ein OpenVPN einrichten muss :-).

  • Bei mir hats die Weiterleitung der Packets erst funktioniert, nachdem ich:

    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to

    am Server eingegeben habe…

    vielleicht hilfts wem (evtl mir selbst, beim nächsten Mal)

  • Die Anleitung hat mir geholfen, innerhalb von 10min einen OpenVPN Server zu erstellen der auch noch funktioniert :-) Taaaaaaaausend dank!!!!!!!!!

    Ich musste nur den Befehl:

    cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa

    ersetzen mit:

    apt-get install easy-rsa && cp -R /usr/share/easy-rsa ./easy-rsa

    da easy-rsa nicht mehr in den openvpn paketen enthalten ist.

    Beste Grüße
    Zinni

    P.s.: Meine Hardware:

    – Ubuntu 12.04 LTS als VPN Server
    – Speedport W 723v mit Portweiterleitung „500,1701,1723,4500“
    – Client = Android und Mac 10.9

  • Hallo an alle ,

    danke für dieses erstklassige Anleitung. Jedoch habe ich ein Problem und ich hoffe Ihr könnt mir dabei behilflich sein.
    Habe einen OpenVPN Server auf einem Debian Server aufgesetzt. Verbindung kommt zu stande ..ABER ..egal welche iptables regel oder route ich einrichte ich bekomme keine Internetverbindung. Sobald ich über den Windows Clienten verbunden bin setzt die I-Net Verbundung aus ..weiß jemand warum ?

    Gruß Marc

    • Hi,

      hast du auch die Möglichkeit, einen Linux Client zu testen?
      Hab schon öfter gehört, dass es Probleme mit den Windows Clients gibt, vor allem mit der Internetverbindung.
      Irgendetwas mit dem Routing wird nicht stimmen – was genau, weiß ich nicht. Aber ich schaue mich mal um. Dachte ich hätte für dieses Problem vor ein paar Tagen eine Lösung gelesen.

      LG Thomas

  • Ich möchte 2 Netzwerke miteinander verbinden, das eine ist 192.168.0:24 und das andere 192.168.3.0:24, auf dem ersten läuft auf dem Server schon Ubuntu 12.04.

    Ich möchte in dem zweiten Netzwerk auf einem Raspberry Pi OpenVPN einrichten und ihn als „Verteiler“ für die Windows- und DOS-Clients nutzen (3x W2k, 1x W98 und 1x MSDOS!!!), da es für DOS kein OpenVPN gibt.

    Hat jemand eine Idee, wie man das einrichtet?

  • Hallo Thomas,
    habe nach dieser Anleitung ein VPN unter Ubuntu Server 12.04 erfolgreich eingerichtet. Nun habe ich einen Ubuntu Server 14.04
    installiert und wieder diese Anleitung verwendet. Leider nicht erfolgreich. Im Log erscheint folgender Fehler:
    OpenVPN ROUTE: OpenVPN needs a gateway parameter for a –route option and no default was specified by either –route-gateway or –ifconfig options
    OpenVPN ROUTE: failed to parse/resolve route for host/network: 10.8.0.0
    netstat -atulpen ergibt –>
    Aktive Internetverbindungen (Server und stehende Verbindungen)
    Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 11477 978/sshd
    tcp 0 272 10.0.0.250:22 10.0.0.1:38628 VERBUNDEN 0 30825 4370/sshd: jks [pri
    udp 0 0 0.0.0.0:1194 0.0.0.0:* 0 34950 7147/openvpn
    Es gibt kein LISTEN auf Port 1194.
    Hast Du eine Idee. Besten Dank.
    MfG Johann

    • Ich habe genau das selbe Problem. Jemand da der uns weiterhelfen kann ?

      Gruß Björn

      • Ich habe ebenfalls dieses Problem. Aufgesetzt auf einem frischen Ubuntu 14.04 LTS und genau der Anleitung gefolgt. Es scheint, als ob irgendetwas verändert wurde.
        Ich kann vom Client den Server unter der 10.8.0.1 pingen sowie vom Server den Client unter 10.8.0.2. Eine SSH Verbindung vom Client zur 10.8.0.1 kommt manchmal zustande.

  • Hallo Thomas,

    vielen Dank für den guten Artikel. Damit ist es mir (endlich) gelungen, eine funktionierende Installation mit einem Linux als VPN-Server und Windows als VPN-Client einzurichten. Allerdings habe ich mit meinem Linux VPN-Client ein Problem: Obwohl ich die Direktive „push „dhcp-option DNS …. „“ in die server.conf eingetragen habe, übernimmt der Linux-Client diesen DNS-Server nicht. Erst wenn ich den DNS-Server per Hand in meine „/etc/resolv.conf“ eintrage, wird der DNS-Server benutzt.
    Für mich ist das unverständlich, da doch die push-Direktive genau dazu da ist, dass der Client den gewünschten DNS-Server verwendet. Hast Du hierfür einen Rat?

    Gruß Alexander

  • Hi,

    vielen Dank für die Anleitung. Das ging sehr schnell und klappte auf Anhieb (anders als manch andere Anleitung im Netz), sogar für mich als Anfänger. ;)

    Allerdings trat ein Problem auf bei ./build-ca, da kam folgende Meldung:
    error on line 198 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
    140224783447712:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198

    Lösung ist, folgende Zeile in vars reinzuschreiben:
    export KEY_ALTNAMES=“irgendwas“

    Warum der Fehler überhaupt auftrat, keine Ahnung (habe mich genau an die Anleitung gehalten). Aber vielleicht kannst Du das ja als Tipp hinzufügen.

  • Hallo Thomas,

    ist wirklich ein echt gelungener super Beitrag. Hast mir damit riesig geholfen!

    Vielen Dank,

    Jan

  • Hallo Thomas,

    erstmal muss ich sagen, dass du tolle Tutoriols hast.
    Habe jedoch gerade ein Problem. Wenn ich das Server-CA erstellen möchte, dann kommt folgende Meldung,

    error on line 198 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
    140381937788576:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198

    Hast du eine Idee was hier das Problem ist?

    Gruß Matthias

  • Hallo,
    ich bin mir unsicher bei der Wahl des Subnetzes. DSL-Router hat 192.168.1.1, Netzmaske 255.255.255.0. Passt das Subnetz aus der Anleitung dazu?

  • Eine sehr gute und sehr schöne Anleitung und es hat auf Anhieb funktioniert. Vielen Dank. Zum Abschluss hätte ich noch eine Frage. Ist es möglich meine Samba Freigabe, die sich auf der selben physischen Maschine wie der VPN Server befindet, über den VPN Tunnel ein zu binde? Theoretisch müsste es möglich sein, doch es will nicht funktionieren. Über Hilfe würde ich mich sehr freuen.

  • Danke für das Tutorial. Hat ein paar Lücken meinerseits geschlossen. Läuft bei mir zusammen mit SSLH (Port Multiplexer) auf einer Debian Maschine.

  • Hallo Thomas,
    Vielen Dank für dieses gute Tutorial. Es hat nahezu auf Anhieb geklappt (Ubuntu 14.10).
    Weiter so – deine Website ist Oberklasse!!

  • Ich musste folgende Freischaltung noch hinzufügen:
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT –to HIER_SERVERIPADRESSE

  • Vielen Dank für diese beispielhafte Anleitung. Ich bin neugierig, ob ich damit meinen VPN-Server ebenso problemlos hin bekommen werde, wie von manch einem hier berichtet.

  • Hey sehr gute Anleitung,

    ich habe ein Problem :( wie bekommt man es hin.

    Das wir die 2 IP unseres VPS Server in den Tunnel vollständig umleiten können? Sprich alle TCP und UDP Ports.

    Der Grund wir haben Unitymedia und nur ne IPv6er :(

    Mit iptables schaffen wir nur einzelne Ports…

    Server IP | Lokale Tunnel IP des Client
    eth0:1 80.70.60.50 —>>> tun0 192.168.10.5

    Vielen Vielen Dank… Ralle

  • KabelBWs IPv4-Gateway ist einfach Schrott. Vor ein paar Tagen war mal wieder bei denen der komplette IPv4-Stack kaputt. Flugs deine Anleitung befolgt und auf einmal „geht“ IPv4 wieder. Da ist es dann auch nicht so schlimm, dass IPv6 bei deinem Tutorial noch nicht unterstützt wird, denn das funktioniert ja irgendwie. Meine IPv4-Verbindungen werden jetzt übers VPN geroutet und die IPv6 über nativ über meine Leitung.

    Vielen Dank für dieses Tutorial!

  • Kleiner Tip für User die ufw benutzen: http://www.gaggl.com/2013/04/openvpn-forward-all-client-traffic-through-tunnel-using-ufw/

    mit ufw allow 1194 die FW öffnen.
    Hat bei mir zumindest geholfen ;)

  • Super Tutorial. Funktioniert sofort einwandfrei, Ubuntu 14.04. Danke.

  • Hallo zusammen.

    Dies ist wirklich eine fabelhafte Anleitung, vielen Dank, Thomas!

    Hiermit ist es mir nun endlich gelungen, einen VPN Server auf meinem Raspberry Pi 2 mit dem Ubuntu Mate Image zu installieren. Die Anleitung ist aktuell und bedarf (derzeit) keiner Anpassung.

    Allerdings: die manuelle Eingabe der iptables hat bei mir nicht funktioniert. Die Shell ist eingefroren. Macht aber nix! Einfach die rc.local wie oben angegeben anpassen und das Gerät neustarten. Dann läuft’s.

    Hier noch eben schnell die Anleitung, wie Ihr Euch mit einem Android Gerät auf dem Server anmelden könnt:

    In der Eingabeaufforderung des Servers eingeben:

    sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn

    Damit habt Ihr Euch eine Kopie des ovpn Templates schon mal in Euer key-Verzeichnis kopiert. Die muss nun noch kurz angepasst werden:

    sudo nano /etc/openvpn/easy-rsa/keys/client.ovpn

    Im Block

    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote MEINEDOMAIN.net 1194
    ;remote my-server-2 1194

    müsst Ihr MEINEDOMAN.net durch Eure ersetzen.

    Im Block

    # SSL/TLS parms.
    # See the server config file for more
    # description. It’s best to use
    # a separate .crt/.key file pair
    # for each client. A single ca
    # file can be used for all clients.
    ca ca.crt
    cert EURE.crt
    key EURE.key

    müsst Ihr „EURE“ Dateinamen entsprechend wie oben angegeben anpassen. Speichern (Strg+O + Strg X).

    Dann müsst Ihr die client.ovpn (Die Ihr natürlich auch umbenennen könnt) mitsamt den 3 .crt Dateien (ca ca.crt , cert EURE.crt ,key EURE.key) irgendwo auf dem Android Gerät speichern.
    Dann die von Thomas empfohlene App herunterladen und installieren und starten.
    Einstellungen (die 3 Punkte oben rechts) -> Import -> Import Profile from SD card.

    Da wählt Ihr die die client.ovpn aus und fertig. Nur den „Connect“ button drücken und Ihr habt einen Tunnel von Eurem Android ins lokale Heimnetzwerk gegraben. Nun lassen sich, egal wo Ihr seid, alle Geräte zu hause mit den lokalen IP-Adressen ansteuern.

    Viel Spass…

  • Hey Thomas,

    eine sehr schöne Anleitung, mit der war es ohne Probleme möglich, den VPN-Server einzurichten mit Ubuntu 14.04.
    Mit meinem Mac und Tunnelblick kann ich mich mit dem VPN-Server einloggen, ohne dass eine Fehlermeldung erscheint, allerdings besteht keine Internetverbindung. Die Einstellungen an den iptables habe ich vorgenommen. Allerdings bietet mir Tunnelblick nicht die Möglichkeit mit der „LZO-Komprimierung“ an. Leider weiß ich gerade nicht mehr weiter, habe auch schon einige andere Lösungsvorschläge versucht, jedoch ohne Erfolg…
    Weißt du diesbezüglich etwas bzw. hatte jemand schon das gleiche Problem und konnte dies lösen?

    Besten Dank schon einmal für die Antworten! :)

    Liebe Grüße,
    Jan

  • Hallo und dickes Lob an Thomas!

    Frage an den Experten:

    wenn ich den Eintrag: push „dhcp-option DNS 208.67.222.222“ in der server.conf aktiviere, bekomme ich nach einem Neustart des openvpn.service kein tun-device mehr.
    Manchmal steht im Log, dass es wieder geschlossen wird. Was kann denn das für ein Fehler sein??

    Gruß, Burkhard.

    • beisst sich hiermit: push „redirect-gateway def1 bypass-dhcp“ oder hiermit: push „redirect-gateway def1“ !

      Gruß, Burkhard.

  • Hi,

    eine Frage zum ipv4 forwarding.
    Mit sysctl -w net.ipv4.ip_forward=1 aktiviert man ja generell das forwarding.
    Ist das nicht generell riskant?

    Ok ich hab vorher noch ein
    iptables -P FORWARD DROP
    in meienm iptables script. Aber trotzem: Muss man das forwarding noch weiter speziell absichern? So dass nicht jeder Pakete über den Server routen kann?

    Vielen Dank! :-)

  • Bei Meine Debain Mit openVpn Kein keien Trauf Join er läst sich Nicht anpinen was mus ich machen

  • hi,
    danke für die Anleitung. Hat mir sehr geholfen.
    Wollte aber mal fragen ob es schon news bezüglich den ipv6 support gibt. Scheinbar unterstütz opnevpn das. vlt. blickst du da ja durch.
    Danke

  • Hallo Thomas,

    vielen Dank für die Klasse Anleitung. Hat mir mir wirklich sehr geholfen. Nur zwei kleine Verbesserungsvorschläge:
    – ich hatte die Iptables-Konfiguration as-is übernommen und nicht daran gedacht, dass mein Adapter nicht eth0 heisst; da wäre ein kleiner Hinweis vielleicht ganz hilfreich
    – da der Server per Default relativ wenig loggt und alles nach syslog schreibt wäre ein Hinweis auf die Loggin-Einstellungen ganz hilfreich (für die Fehlersuche). Ich habe folgendes gesetzt:
    log /var/log/openvpn.log
    verb 4

    VG
    Martin

  • Hallo,

    Ich erhalte den Fehler …
    MANAGEMENT: Socket bind failed on local address [AF_INET]127.0.0.1:25340: Address already in use (WSAEADDRINUSE)
    Können sie mir da weiter Helfen ?

    lg

  • Man kann übrigens alle Dateien in eine .ovpn Datei packen (wird u.a. für OpenVPN Connect für Android gebraucht)


    client
    remote dein.server
    port 1234
    comp-lzo yes
    dev tun
    proto udp
    nobind
    auth-nocache
    script-security 2
    persist-key
    persist-tun
    user openvpn
    group openvpn

    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----

    ...

    ...

    • Das mit der Formatierung hat nicht geklappt…
      Vor CA-Cert, Client-Cert und PrivateKey muss in kleiner bzw. größer Zeichen sein. (Also unten Leerzeichen entfernen)

      • Letzter Versuch…

        client
        remote dein.server
        port 1234
        comp-lzo yes
        dev tun
        proto udp
        nobind
        auth-nocache
        script-security 2
        persist-key
        persist-tun
        user openvpn
        group openvpn
        <!–

        <!–
        <!–

        <!–
        <!–

        <!–

        P.S Ich hoffe jetzt klappts… Blöde WordPress HTML Formatierung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.