Ankündigung

Einklappen
Keine Ankündigung bisher.

HOWTO: VPN on demand unter iOS mit OpenVPN Connect

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HOWTO: VPN on demand unter iOS mit OpenVPN Connect

    Hallo Kollegen,

    aufgrund mehrerer Zuschriften, versuche ich doch mal kurz zu skizzieren, wie man einen OpenVPN Server und die OpenVPN Connect App einrichten muss, um VPN on demand unter iOS nutzen zu können.

    Schritt 1: Server einrichten

    Im Prinzip habe ich mich dabei an folgender Anleitung entlang gehangelt:
    https://help.ubuntu.com/14.04/serverguide/openvpn.html

    In Kürze:
    - OpenVPN und easy-rsa installieren
    - Certificate Authority (CA) erstellen
    - Server Zertifikat erstellen
    - Client Zertifikat erstellen, allerdings brauchen wir diese für iOS im PKCS12 Format, daher folgenden Befehl verwenden:

    Code:
    ./build-key-pkcs12 client1
    Ihr müsst dabei einen Export-Passwort vergeben. Dieses bitte merken, das brauchen wir später nochmal!

    - Für zusätzliche Sicherheit erstellen wir noch einen TLS-Auth Key mit:

    Code:
    openvpn --genkey --secret ta.key
    Zum Schluss noch ca.crt, dh2048.pem, server.crt, server.key und ta.key in das /etc/openvpn Verzeichnis kopieren und ca.crt, client1.crt, client1.csr, client1.key, client1.p12 und ta.key auf den Rechner, von dem aus später das iOS Device aus eingerichtet werden soll.

    Danach kopiert man die Beispielkonfiguration für den Server und passt sie entsprechend an. Fragt mich bitte nicht, für was die einzelnen Optionen stehen. Um es euch etwas leichter zu machen, hier meine server.conf:

    Code:
    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert server1.crt
    key server1.key
    dh dh2048.pem
    server 192.168.179.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "route 192.168.178.0 255.255.255.0"
    push "redirect-gateway def1"
    push "dhcp-option DNS 192.168.178.1"
    keepalive 10 120
    tls-auth ta.key 0
    cipher AES-256-CBC
    comp-lzo
    max-clients 10
    user nobody
    group nogroup
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    Eure IP Adressbereiche müsst ihr natürlich entsprechend anpassen. 192.168.178.0 ist mein Heimnetz, 192.168.179.0 sind die Adressen, die VPN Clients zugewiesen bekommen.

    Damit die Clients nicht nur auf den Server kommen, sondern auch in euer Netzwerk, müsst ihr noch IP Forwarding auf dem Server aktivieren. Für Ubuntu wäre das:

    Code:
    sudo sysctl -w net/ipv4/ip_forward=1
    Um diese Änderung permanent zu machen, kann man sie in die Datei /etc/sysctl.conf eintragen:

    Code:
    net.ipv4.ip_forward=1
    Außerdem müsst ihr eurem Router erklären, wo er das VPN Client Netzwerk 192.168.179.0 findet. Das ist je nach Router unterschiedliche. Bei einer Fritzbox findet ihr das ganze unter Heimnetz > Netzwerk > Netzwerkeinstellungen > Statische Routingtabelle > IPv4 Routen > Neue IPv4 Route und dann die Maske ausfüllen:

    IPv4-Netzwerk: 192.168.179.0
    Subnetzmaske: 255.255.255.0
    Gateway: 192.168.178.<<openvpn_host>>
    IPv4-Route aktiv: Haken gesetzt

    Wenn wir schon in der Fritzbox sind, können wir auch gleich noch den Port 1194 freigeben und auf den OpenVPN Host weiterleiten. Und zwar unter Internet > Freigaben > Neue Portfreigabe muss die Maske wie folgt ausgefüllt werden:

    Haken bei -> Portfreigabe aktiv für: Andere Anwendung
    Bezeichnung: OpenVPN
    Protokoll: UDP
    von Port: 1194
    bis Port: 1194
    an Computer: <<OpenVPN Host auswählen>>
    an IP-Adresse: <<OpenVPN Host IP>>
    an Port: 1194

    Damit sollte die Serverseite fertig konfiguriert sein und ihr könnt den Server mit

    Code:
    sudo service openvpn start
    starten.

    iOS Client Konfiguration

    Auf dem iOS Gerät ladet ihr euch zuerst einmal die "OpenVPN Connect" App runter: https://itunes.apple.com/de/app/open...590379981?mt=8

    Dann besorgt ihr euch das iPhone Konfigurationsprogramm bzw. iPhone Configuration Utility (eine Sorge, damit kann man auch ein iPad usw. konfigurieren) und startet es. Unter Konfigurationsprofile legt ihr mit "Neu" ein neues Profil an. Siehe auch die angehängten Screenshots.

    - Füllt zuerst unter Allgemein alles aus, die Angaben hier sind beliebig
    - Unter Zertifikat wählt ihr euer client.p12 aus und gebt das Export-Passwort ein, das ihr euch oben gemerkt habt
    - Dann geht es weiter auf dem Eintrag "VPN". Verbindungsname ist beliebig, den Rest (bis auf "Eigene Daten") könnt ihr den Screenshots entnehmen

    Bei eigene Daten fügen wir nun die Client Konfiguration hinzu. Ich gebe euch hier die Key/Value Paare, die bei mir stehen:

    Code:
    ca = -----BEGI...
    cipher = AES-256-CBC
    client = NOARGS
    comp-lzo = NOARGS
    dev = tun
    key-direction = 1
    persist-key = NOARGS
    persist-tun = NOARGS
    proto = udp
    remote = irgendwas.dyn-dns.org 1194
    tls-auth = -----BEGI...
    verb = 3
    ganz wichtig ist hierbei das Schlüsselpaar tls-auth und ca. Hier muss der Inhalt der ta.key und der ca.key eingefügt werden. Allerdings müsst ihr Zeilenumbrüche in der Datei durch "\n" (ohne Anführungszeichen) ersetzen. Hab ihr also in der Datei folgenden Inhalt:

    Code:
    ------BEGIN ...------
    zeile1
    zeile2
    zeile3
    ------END ....--------
    müsst ihr alle Zeilenumbrüche am Ende entfernen und durch \n ersetzen. Das Ergebnis sollte dann in etwa so aussehen:

    Code:
    ------BEGIN ...------\nzeile1\nzeile2\nzeile3\n------END ....--------
    Das macht ihr mit der ta.key für tls-auth und mit der ca.crt für ca.

    Dann setzt ihr den Haken bei "VPN On Demand aktivieren" und fügt die entsprechenden Domainnamen (im Falle der FritzBox einfach fritz.box), die Hostnamen oder IP Adressen (Adressbereiche gehen leider nicht) hinzu, für die später eine automatische VPN Verbindung aufgebaut werden soll.

    Wenn ihr nun euer iOS Device an den Computer ansteckt, erscheint es unter Geräte. Dort könnt ihr es auswählen, das Profil installieren und auf dem Gerätedisplay die Installation bestätigen. Ab diesem Zeitpunkt sollte das Profil sowohl in der Einstellungs-App unter VPN als auch in der OpenVPN Connect App gelistet werden und ihr solltet erstens in den Einstellungen ein VPN aufbauen können und zweitens sollte sich das VPN in Zukunft bei Verwendung einer der oben genannten Domains oder Hostnamen automatisch aufbauen. Wenn ihr das iOS Device noch per Kabel mit dem Rechner verbunden habt, seht ihr auch im iPhone Konfigurationstool unter Diagnose, was da gerade im Hintergrund abläuft. So könnt ihr bei evtl. Problemen noch nachsehen, an was es hakt.

    ---

    ACHTUNG!!!! Ich bin kein Spezialist, was OpenVPN und alles hier gezeigte anbelangt. Ich habe das so bei mir am Laufen und es funktioniert. Ich übernehme aber keinerlei Garantie oder Gewähr, dass ihr euch damit nicht irgendwas kaputt macht oder euch angreifbar macht!

    ---

    EDIT1: vergessene Screenshots hinzugefügt
    Angehängte Dateien
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    #2
    Hi Nico...

    bin am WE jetzt endlich mal zum testen gekommen... leider funktioniert es bei mir noch nicht so ganz..
    muss noch schauen woran es da genau liegt.. grundsätzlich aber eine sehr gute Beschreibung !

    Danke !!

    kleine Anmerkung.. es sollte
    sudo service openvpn start heißen.. nicht services !

    Vielleicht kann ja jemand mit dem Fehlerlog von mir was anfangen
    und mir beim Fehler eingrenzen helfen...

    Gruß Martin
    Angehängte Dateien
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    Kommentar


      #3
      Zitat von Brick Beitrag anzeigen
      kleine Anmerkung.. es sollte
      sudo service openvpn start heißen.. nicht services !
      Danke, ist geändert.

      Mit dem OpenVPN Fehlerlog kann man leider nicht viel anfangen. Wenn du aber das iPhone am Rechner hängen lässt, gibt es in dem iPhone Config Utility ein Diagnose Tap, das ziemlich detailliert ausgibt, was auf dem iPhone gerade abgeht. Da bekommst du normalerweise sehr gute Hinweise darauf, warum die Verbindung nicht geklappt hat.
      Mit freundlichen Grüßen
      Niko Will

      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

      Kommentar


        #4
        ja.. das hab ich auch schon probiert.. leider hab ich da noch nicht viel rauslesen
        können.. bin da auch kein Profi..

        grundsätzlich scheint das "on-Demand" schon zu funktionieren.. hab div. Seiten geladen und immer wenn ich auf eine von mir definierte Seite gegangen bin,
        hat er OpenVPN gestartet.. nur die Verbindung klappt eben noch nicht so recht..
        na mal schaun..

        Gruß Martin
        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

        Kommentar


          #5
          Dann poste doch einfach mal den Output der Diagnose Seite. Da müsstest du auch sehen, wenn das iPhone mittels OpenVPN versucht die Verbindung aufzubauen.
          Mit freundlichen Grüßen
          Niko Will

          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

          Kommentar


            #6
            Hi,

            hab hier mal das Log.. aber ich find da erkenn ich noch weniger..
            nur da eben der OpenVPN Server nicht reagiert..
            Angehängte Dateien
            Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

            Kommentar


              #7
              @ Martin: Rückroute in der Fritzbox gelegt und Ports auf der FB freigegeben für das VPN?

              Kommentar


                #8
                Jap, wenn die dyndns Adresse passt, vermute ich auch den Fehler entweder bei der statischen Route der FB oder beim Port Forwarding. Vielleicht zusätzlich noch prüfen, ob OpenVPN läuft und ob es auf den richtigen Port lauscht.
                Mit freundlichen Grüßen
                Niko Will

                Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                Kommentar


                  #9
                  Hi.. Anfängerfehler.. hatte zuvor OpenVPN auf einem anderen Server
                  und die IP beim Portforwarding ging noch auf diesen..

                  leide geht es jetzt immer noch nicht.. hier das neue Log:
                  Angehängte Dateien
                  Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                  Kommentar


                    #10
                    die restlichen Punkte hast du geklärt? Also statische Rückroute? OpenVPN Server läuft?

                    Ansonsten mal von einem entfernten Rechner mit einem normalen OpenVPN Client testen. Das ist wesentlich einfacher und wenn das funktioniert, kann man sich immer noch an die iPhone VoD Geschichte wagen.
                    Mit freundlichen Grüßen
                    Niko Will

                    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                    Kommentar


                      #11
                      hmm.. also ich hab noch ein paar Screenshots gemacht...
                      Routing sollte passen, Portforwarding auch.. gestartet ist der Service auch..

                      vielleicht fang ich auch einfach nochmal komplett von vorn an.. so langwierig ist das ja nun auch wieder nicht... trotzdem komisch..
                      Angehängte Dateien
                      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                      Kommentar


                        #12
                        nur mal so testweise... trag doch auch mal einen "bis Port" ein (1194).
                        Mit freundlichen Grüßen
                        Niko Will

                        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                        Kommentar


                          #13
                          Noch was... das Ding läuft in einer VM? Zumindest lässt das der Hostname in dem ifconfig Screenshot vermuten. Das kann auch teil des Problems sein. Hatte z.B. mit ESXi auch Probleme mit OpenVPN weil ESXi es nicht mochte, dass OpenVPN an dem Promiscous Mode rumfummelt.
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar


                            #14
                            Jup.. läuft in einer VM... mit ESXi... richtig..

                            also das "bis 1194" hat nichts gebracht..

                            ich hab eine VM mit XPEnology.. dort konnte ich recht easy ein
                            VPN Paket installieren (OpenVPN) .. dort hab ich mir eine Config
                            exportiert und aufs Handy geladen, mit der hat er.. von Hand
                            das VPN aufgebaut.. (wie gesagt, anderer Server, aber auch virtuell)..
                            also denk ich das ESXi das an sich schon zulässt..

                            evtl. muss ich mir das auch nochmal ansehen.. wenn auf XPenology
                            eh ein OpenVPN Server läuft.. vielleicht kann ich den irgendwie konfigurieren..
                            hab da nur beim "grob drüberschauen" nix gefunden...
                            Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                            Kommentar


                              #15
                              Dann kannst du aber auch dieses Profil für VoD nehmen. Du musst nur die entsprechende Profildatei öffnen und die Key/Value Paare entsprechend setzen. Probleme könnte es lediglich beim PKCS12 Zertifikat geben... da du dir dass dann irgendwie aus den Werten des Profils generieren lassen musst.
                              Mit freundlichen Grüßen
                              Niko Will

                              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                              Kommentar

                              Lädt...
                              X