Angepinnt How To: OpenVPN

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Hallo Leute,



      ich bin gerade dabei meine neue vu+ zero aufzusetzen. Ich habe mir mal das vti image drauf gehauen und wollte nun OpenVPN einrichten. Nach ner ärgerlichen Stunde, habe ich die Scheiße dann zum laufen gebracht. Ich bin mir aber jetzt nicht sicher ob ich wirklich alles abgesichert bzw richtig eingerichtet habe.

      Hier mal meine Configs:

      Spoiler anzeigen

      Quellcode

      1. proto udp
      2. tun-mtu 1500
      3. fragment 1300
      4. mssfix
      5. cipher AES-256-CBC
      6. remote amsterdam1.perfect-privacy.com 149
      7. remote amsterdam1.perfect-privacy.com 1151
      8. remote amsterdam1.perfect-privacy.com 1150
      9. remote amsterdam1.perfect-privacy.com 1149
      10. remote amsterdam1.perfect-privacy.com 151
      11. remote amsterdam1.perfect-privacy.com 150
      12. remote amsterdam1.perfect-privacy.info 149
      13. remote amsterdam1.perfect-privacy.org 1151
      14. remote amsterdam1.perfect-privacy.org 150
      15. remote amsterdam1.perfect-privacy.org 151
      16. remote amsterdam1.perfect-privacy.info 150
      17. auth SHA512
      18. auth-user-pass password.txt
      19. client
      20. comp-lzo
      21. dev tun
      22. #float
      23. hand-window 120
      24. inactive 604800
      25. mute-replay-warnings
      26. nobind
      27. ns-cert-type server
      28. persist-key
      29. persist-remote-ip
      30. persist-tun
      31. ping 5
      32. ping-restart 120
      33. redirect-gateway def1
      34. remote-random
      35. reneg-sec 3600
      36. resolv-retry 60
      37. route-delay 2
      38. route-method exe
      39. script-security 2
      40. tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
      41. tls-timeout 5
      42. verb 4
      43. ca ca.crt
      44. cert Amsterdam_cl.crt
      45. key Amsterdam_cl.key
      46. tls-auth Amsterdam_ta.key 1
      47. # This updates the resolvconf with dns settings
      48. up /etc/openvpn/update-resolv-conf.sh
      49. down /etc/openvpn/update-resolv-conf.sh
      Alles anzeigen


      Die update-resolv-conf.sh:

      Spoiler anzeigen

      Shell-Script

      1. #!/bin/bash
      2. #
      3. # Parses DHCP options from openvpn to update resolv.conf
      4. # To use set as 'up' and 'down' script in your openvpn *.conf:
      5. # up /etc/openvpn/update-resolv-conf
      6. # down /etc/openvpn/update-resolv-conf
      7. #
      8. # Used snippets of resolvconf script by Thomas Hood <jdthood@yahoo.co.uk>
      9. # and Chris Hanson
      10. # Licensed under the GNU GPL. See /usr/share/common-licenses/GPL.
      11. # 07/2013 colin@daedrum.net Fixed intet name
      12. # 05/2006 chlauber@bnc.ch
      13. #
      14. # Example envs set from openvpn:
      15. # foreign_option_1='dhcp-option DNS 193.43.27.132'
      16. # foreign_option_2='dhcp-option DNS 193.43.27.133'
      17. # foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
      18. # foreign_option_4='dhcp-option DOMAIN-SEARCH bnc.local'
      19. ## You might need to set the path manually here, i.e.
      20. RESOLVCONF=/etc/network/if-down.d/resolvconf
      21. case $script_type in
      22. up)
      23. for optionname in ${!foreign_option_*} ; do
      24. option="${!optionname}"
      25. echo $option
      26. part1=$(echo "$option" | cut -d " " -f 1)
      27. if [ "$part1" == "dhcp-option" ] ; then
      28. part2=$(echo "$option" | cut -d " " -f 2)
      29. part3=$(echo "$option" | cut -d " " -f 3)
      30. if [ "$part2" == "DNS" ] ; then
      31. IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
      32. fi
      33. if [[ "$part2" == "DOMAIN" || "$part2" == "DOMAIN-SEARCH" ]] ; then
      34. IF_DNS_SEARCH="$IF_DNS_SEARCH $part3"
      35. fi
      36. fi
      37. done
      38. R=""
      39. if [ "$IF_DNS_SEARCH" ]; then
      40. R="search "
      41. for DS in $IF_DNS_SEARCH ; do
      42. R="${R} $DS"
      43. done
      44. R="${R}
      45. "
      46. fi
      47. for NS in $IF_DNS_NAMESERVERS ; do
      48. R="${R}nameserver $NS
      49. "
      50. done
      51. #echo -n "$R" | $RESOLVCONF -p -a "${dev}"
      52. echo -n "$R" | $RESOLVCONF -a "${dev}.inet"
      53. ;;
      54. down)
      55. $RESOLVCONF -d "${dev}.inet"
      Alles anzeigen


      Damit, bekomme ich auf jeden Fall mal die IP von PP-Amsterdam und DNS von PP-Deutschland(IP: 217.114.218.1). Was passiert aber wenn die Verbindung abbricht? Wird damit wirklich der komplette Traffic durch den VPN
      gezogen. Oder gibt es noch andere Leaks die ich beachten muss?



      Für jeden Hinweis bzw. Hilfe bin ich sehr dankbar!
    • Das Umbiegen nach Amsterdam ist nur aktiv, solange der Tunnel korrekt verbunden ist. Sobald (oder solange) der Tunnel nicht (mehr) aktiv ist, sind die Einstellungen wieder zurückgesetzt.

      Durch den Eintrag "redirect-gateway def1" werden alle Pakete durch das VPN versendet, die nicht zum lokalen Netzwerk gehören.

      Generell gilt: mit einem Tunnel öffnet man ein Scheunentor zur Gegenstelle; Bildlich ausgedrückt: genauso gut könntest du ein Netzwerkkabel in deinen Receiver stecken und das andere Ende einem wildfremden Passanten in Amsterdam in die Hand drücken. Idealerweise sollte man daher den Tunnel mit Firewall (iptables) schützen.

      Außerdem macht es Sinn, die aktuelle Rechtsprechung des Betreiberlandes zu beobachten. Auch in den Niederlanden wird regelmäßig über Vorratsdatenspeicherung usw. diskutiert. Die Anonymisierung wäre ausgehebelt, sobald ein Dienstanbieter verpflichtet wird, tonnenweise (Verbindungs-)Daten zu sammeln...

      Beim überfliegen der Konfig ist mit noch aufgefallen: die Option "route-method exe" ist für Windows und kann ersatzlos entfernt werden.
    • Ich krieg es irgendwie nicht hin, vielleicht kann mir irgendjemand sagen was ich falsch mache....

      config sieht wie folgt aus:

      client
      dev tun
      proto udp
      remote free-ca.hide.me 3478
      cipher AES-128-CBC
      resolv-retry infinite
      nobind
      persist-key
      persist-tun
      mute-replay-warnings
      ca TrustedRoot.pem
      verb 3
      auth-user-pass hide.login
      reneg-sec 0


      log /etc/openvpn/LOG.txt

      die Datei "hide.login" enthält benutzernamen und Passwort, das log zeigt dann aber dies...

      Sat Sep 19 17:24:33 2015 [UNDEF] Inactivity timeout (--ping-restart), restarting
      Sat Sep 19 17:24:33 2015 SIGUSR1[soft,ping-restart] received, process restarting
      Sat Sep 19 17:24:33 2015 Restart pause, 2 second(s)
      Sat Sep 19 17:24:35 2015 WARNING: No server certificate verification method has been enabled. See openvpn.net/howto.html#mitm for more info.
      Sat Sep 19 17:24:35 2015 Socket Buffers: R=[163840->131072] S=[163840->131072]
      Sat Sep 19 17:24:35 2015 UDPv4 link local: [undef]
      Sat Sep 19 17:24:35 2015 UDPv4 link remote: [AF_INET]74.120.223.130:3478
      Sat Sep 19 17:24:35 2015 TLS: Initial packet from [AF_INET]74.120.223.130:3478, sid=4f69dc76 d1edcf78
      Sat Sep 19 17:24:36 2015 VERIFY OK: depth=2, C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA
      Sat Sep 19 17:24:36 2015 VERIFY OK: depth=1, C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3
      Sat Sep 19 17:24:36 2015 VERIFY OK: depth=0, C=MY, ST=Wilayah Persekutuan, L=Labuan, O=eVenture Limited, CN=*.hide.me
      Sat Sep 19 17:24:39 2015 Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
      Sat Sep 19 17:24:39 2015 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
      Sat Sep 19 17:24:39 2015 Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
      Sat Sep 19 17:24:39 2015 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
      Sat Sep 19 17:24:39 2015 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 4096 bit RSA
      Sat Sep 19 17:24:39 2015 [*.hide.me] Peer Connection Initiated with [AF_INET]74.120.223.130:3478
      Sat Sep 19 17:24:41 2015 SENT CONTROL [*.hide.me]: 'PUSH_REQUEST' (status=1)
      Sat Sep 19 17:24:41 2015 AUTH: Received control message: AUTH_FAILED
      Sat Sep 19 17:24:41 2015 SIGTERM[soft,auth-failure] received, process exiting

      also falls jemand eine Idee hat immer raus damit
    • Windows Editor funktioniert nicht.

      z.B. Notepad++ (Bearbeiten -> Zeilenende -> Konvertiere zu UNIX (LF) )
      oder Proton (Datei -> Zeilenunbruchformat -> UNIX)

      oder Telnet auf die Box und dann

      Quellcode

      1. mcedit /etc/openvpn/hide.login

      Speichern mit F2
      Beenden mit F10
    • stell mal sicher, ob deine zugangsdaten funktionieren.

      bist du in der lage das vpn von der console zu starten? in der config, dazu hinter dem parameter "auth-user-pass" alle angaben entfernen.
      du wirst dann auf der console aufgefordert, die daten per hand einzugeben.

      das commando "tr -d '\r' < file.old > file.new" sollte die passwort-datei datei auch funktionsfähig machen.
    • goldenbear schrieb:

      goldenbear schrieb:

      Hi, geht jetzt auch wieder bei mir. Lag wohl irgendwie am VPN. Ich habe weder neu installiert noch irgendwas neu gestartet. Nur an den VPN-Einstellungen probiert, da es ohne VPN ging (zumindestens die Liste der Serien wurde angezeigt).

      Nochmal schönen Dank!


      Leider wohl zu früh gefreut. Heute gehts wieder nicht. Das muss irgendwie an den VPN-Einstellungen liegen. Hier mal meine openvpn.conf

      dev tun0
      proto udp
      remote xxxx.xxx.xx 443
      cipher AES-128-CBC
      auth SHA1
      resolv-retry infinite
      nobind
      persist-tun
      persist-key
      client
      verb 3
      ns-cert-type server
      auth-user-pass /etc/openvpn/auth.txt
      auth-nocache
      log /etc/openvpn/LOG2.txt

      Im Log von BS gibt es dann diese Fehlermeldung:
      bsSerien::dataError [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.TimeoutError'>: User timeout caused connection failure.

      Fehlt in der Config noch irgendwas oder muss was geändert werden? Andere Seiten funktionieren mit dieser Einstellung.


      Hallo, hatte das gerade im MediaPortal Thread gepostet. Das ist dort aber nicht gewünscht. deshalb hier im OpenVPN-Thread nochmal. Vielleicht hat ja jemand eine Idee?
    • tls-version-min 1.2

      Ich wollte mit meiner VU auf einen Server mit aktiviertem 'tls-version-min 1.2' verbinden.
      Die Imageversion ist ein voll gepatchtes 8.2.3 - doch die Verbindung ist dann anschliessend nicht moeglich.

      Serverseitig sehe ich:

      Quellcode

      1. TLS_ERROR: BIO read tls_read_plaintext error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol

      Sobald ich das 'tls-version-min 1.2' auskommentiere klappt die Verbindung.

      Kann es sein, dass die im Image verfuegbare openvpn-Version nicht in der Lage ist eine TLS 1.2-Verbindung aufzubauen ?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von HansWuast ()

    • Hallo Leute,

      bin sagen wir mal ziemlich neu in der ganzen Linux-Receiver Geschichte, aber bilde mich gern weiter und komm auch immer wieder auf interessante Dinge drauf die diese Box so kann..
      Ich hab auf meiner Vu+ Solo SE mit VTI 8.2.3 das OpenVPN mit Autostart zum Laufen gebracht, soweit so gut... Ich wollte jetzt noch absichern, dass der Traffic wirklich nur über den Tunnel geht und wenn dieser abbricht gibt es einfach keinen Zugang ins Internet.
      Der Zugriff auf das lokale Netzwerk soll immer funktionieren, ins Internet soll allerdings nur zugegriffen werden können, solange der VPN-Tunnel (tun0) aktiv ist.

      Wie setze ich sowas am Besten um? Ich hab mich ein wenig in iptables eingelesen aber keine richtig vollständige Lösung gefunden. Gibt es eine Liste welche Kernel-Module ich dort noch nachinstallieren muss, wenn ich iptables nachinstalliert habe?
      Oder gibt es eine bessere bzw. einfachere Lösung um mein Vorhaben umzusetzen?

      Danke schon mal im Voraus, wäre echt über jegliche Hilfe erfreut...

      EDIT: bitte beachten, ich hab noch nie mit Firewalls in der Commandline zu tun gehabt, sorry ;-)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von greg9r ()

    • eigentlich sollte banane längst da sein... der bummelt aba heute.

      @HansWuast: tls-version-min 1.0 geht nur.

      @greg9r:
      gesammten traffic über das vpn....
      route add -net 0.0.0.0 netmask 0.0.0.0 dev %tun-device%

      denk daran, die vpn-server, die server für das vpn über das lan-interface zu ballern...
      route add -host %vpn-server%/32 eth0

      für persistent den parameter "-p" verwenden.

      glaube das sind glaube alle existierenden pakete für vti...
      opkg install iptables
      opkg install kernel-module-nf-defrag-ipv4
      opkg install kernel-module-nf-conntrack
      opkg install kernel-module-ipt-masquerade
      opkg install kernel-module-x-tables
      opkg install kernel-module-nf-nat
      opkg install kernel-module-nf-conntrack-ipv4
      opkg install kernel-module-iptable-nat
      opkg install kernel-module-ip-tables
      opkg install kernel-module-iptable-filter
      opkg install kernel-module-ipt-reject
      opkg install kernel-module-ipt-netmap
      opkg install kernel-module-ipt-ah
      opkg install kernel-module-ipt-redirect
      opkg install kernel-module-iptable-mangle
      opkg install kernel-module-iptable-nat
      opkg install kernel-module-iptable-raw
      opkg install kernel-module-xt-owner
      opkg install kernel-module-xt-state
      opkg install kernel-module-xt-conntrack
      opkg install kernel-module-ipheth
      opkg install kernel-module-xt-tcpudp kernel-module-xt-state kernel-module-xt-netmap kernel-module-xt-iprange kernel-module-nf-conntrack-ipv4
      opkg install kernel-module-ip-tunnel kernel-module-ipt-rpfilter kernel-module-ipt-reject kernel-module-ipt-masquerade

      der ip-filter hat teilweise nur absolute basic-features. nimm immer einen router.
      es gibt wesentlich bessere und einfachere lösungen. schau dir mal pfsense an. das ist sogar enterprise-liga. und die firewall-regeln erklären sich von selbst. es gibt eigentlich nix besseres.

      nimm nicht die vu zum anonymisieren. die vu kann das zwar, der schwerpunkt liegt aber woanders.
    • Vergiss iptables, das führt in dem Fall nur zu Flickschusterei; du müsstest genau das sperren, was du vorher über die Routen explizit erreichbar gemacht hast.

      Wie pillepallus bereits schrieb, kannst das einfach über Routen steuern.
      In deinem Fall würde ich die Netzwerkkonfig der Box manuell einrichten, also DHCP aus, IP selber vergeben (ausserhalb des DHCP Pools) und Gateway leer lassen.
      Jetzt nur noch eine Host-Route für den VPN Server angeben:

      Quellcode

      1. route add -host <vpnserverIP> gw <deinrouterIP> dev eth0


      Die Defaultroute für den Tunnel setzt und löscht openvpn dann selbstständig.

      Wenn das wie gewünscht funktioniert, muss die Host-Route noch statisch beim Booten gesetzt werden z.B. in /etc/network/interfaces, die Zeile müsste dann so aussehen:

      Quellcode

      1. up route add -host <vpnserverIP> gw <deinrouterIP> dev eth0


      Edit: vertippfehlert

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Banana Joe ()

    • @'Banana Joe

      Mahlzeit,
      danke für diesen Weg, klingt schon mal weniger kompliziert. Noch kleine Verständnisfragen dazu:
      - funktioniert -host auch mit DNS-Namen? Da ich nicht immer auf einen dezidierten VPN-Server zugreife, sondern zufällig den bestvorhanden aus z.B. NL, dies ist auch in der opvenvpn .conf-Datei so eingetragen (mit DNS-Name)
      - was passiert in diesem Fall, wenn der VPN Tunnel abbricht? Verbindung ins Internet dürfte dadurch einfach nicht möglich sein, oder?
      - und letzte Frage: bei dev hast du eth0 angegeben, passt das so oder müsste hier der tun0 stehen?

      Sorry falls dies total logische Fragen sind und ich einfach nicht durchblicke D: Wenn ich am Abend zu Hause bin, werd ichs auf jeden Fall mal ausprobieren!

      @pillepallus: ebenfalls Danke für deine Antwort. Wenn der Weg von Banana Joe funktioniert, wäre dies allerdings mit weniger Aufwand verbunden und ich könnte mir den neuen Router sparen.
    • greg9r schrieb:

      - funktioniert -host auch mit DNS-Namen? Da ich nicht immer auf einen dezidierten VPN-Server zugreife, sondern zufällig den bestvorhanden aus z.B. NL, dies ist auch in der opvenvpn .conf-Datei so eingetragen (mit DNS-Name)


      Der Route Befehl löst den Namen auf und verwendet dann die IP. Sollte also funktionieren, allerdings darf es sich nicht um eine dyndns Adresse handeln, da sich hier die IP hier ändern können (aber der Route Eintrag statisch bleibt)

      greg9r schrieb:

      - was passiert in diesem Fall, wenn der VPN Tunnel abbricht? Verbindung ins Internet dürfte dadurch einfach nicht möglich sein, oder?

      Richtig. Internet geht bei dem Setup gar nicht, solange kein Tunnel aktiv ist.
      Eine Ausnahme stellt wahrscheinlich dein DNS Server dar, wenn du als DNS Server deinen lokalen Router im Heimnetz verwendest. Dieser leitet Anfragen weiter an den ISP, also benutzt nicht den Tunnel. Wenn du das nicht möchtest, musst du ggf. einen anderen, also externen DNS bei der VTI Netzwerk-Konfig eintragen. Das hat dann allerdings den Nachteil, dass die VU Box alle lokale Namen im Heimnetzwerk nicht mehr auflösen kann. Abhilfe entweder mit: /etc/hosts Datei per Hand pflegen
      oder: eigenen DNS Server aufbauen
      -> DNS ist etwas trickreich.

      greg9r schrieb:

      - und letzte Frage: bei dev hast du eth0 angegeben, passt das so oder müsste hier der tun0 stehen?

      Nein, mit dem tun-Device musst du gar nichts machen, darum kümmert sich openvpn völlig automatisch.
      Das eth0 in meinem Beispiel ist das Device, welches an deinem Netzwerk hängt. Bei wlan entsprechend in "wlan0" ändern.

      @pillepallus: Auf was bezieht sich die Frage, was ich denn nutze?