Tipps & Tricks: OpenVPN mit pfSense

Discussion in 'Router' started by Gerd, Sep 13, 2014.

  1. G

    Gerd Junior Member

    Vorgegebene/fixe + "In der Gui eingetragene" + Advanced config Befehle kann man im Menü "Diagnostics-> Edit File" und dann im Verzeichnis "/var/etc/openvpn/clientX.conf" auslesen.
    Und ich habe auch nur die Befehle im Advanced Feld angegeben, die in jeder Router Konfigurationsdatei (.ovpn) zu finden sind.

    Feintuning ist immer möglich. Ich selbst kenne mich mit den Syntax Befehlen nicht aus. Da müssten schon Experten ran.
     
  2. F

    FeuerPhoenix New Member

    Vielen Dank für deine Antwort. :)
    Okay alles klar... Aber das beantwortet nicht wirklich meine Frage. :(
    Bei dem Wechsel der privaten virtuellen Adresse für den Tunnel... stürzt da bei dir/euch auch die Verbindung ab für ~30 Sekunden ?

    Hat denn wer eine funktionierende clientX.conf Datei die er mal posten könnte, um zu vergleichen, weil ich ja irgendwas scheinbar offensichtlicher weise übersehe? :/

    Danke Danke
     
  3. G

    Gerd Junior Member

    Das kann ich nicht beantworten, weil ich zur Zeit kein PP Account habe. Ich kann nur sagen, dass wenn die Verbindung abbricht, dass dann etwa bis zu einer Minute vergehen kann, bis eine neue Verbindung hergestellt wird.

    Hier eine funktionierende ClientX.conf Konfiguration vom Pfad "/var/etc/openvpn/":
    Code:
    dev ovpnc3
    verb 4
    dev-type tun
    tun-ipv6
    dev-node /dev/tun3
    writepid /var/run/openvpn_client3.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher AES-256-CBC
    auth SHA512
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    local 192.168.1.2
    tls-client
    client
    lport 0
    management /var/etc/openvpn/client3.sock unix
    remote amsterdam.perfect-privacy.com 1149
    auth-user-pass /var/etc/openvpn/client3.up
    ca /var/etc/openvpn/client3.ca
    cert /var/etc/openvpn/client3.cert
    key /var/etc/openvpn/client3.key
    tls-auth /var/etc/openvpn/client3.tls-auth 1
    comp-lzo adaptive
    resolv-retry infinite
    tun-mtu 1500
    fragment 1300
    mssfix
    #float
    hand-window 120
    inactive 604800
    mute-replay-warnings
    ns-cert-type server
    persist-remote-ip
    redirect-gateway def1
    reneg-sec 3600
    resolv-retry 60
    tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA
    tls-timeout 5
    key-direction 1
    Bevor du aufgibst, würde ich pfSense in VirtualBox ausprobieren. Wie man es einrichtet, steht im ersten Post der Anleitung.
    Wenn die Abbrüche auch mit pfSense da sind, dann kannst du wenigstens ausschließen, das es an OPNsense liegt.
     
  4. F

    FeuerPhoenix New Member

    Dank dir vielmals Gerd. :)
    Deine Config sieht meiner sehr ähnlich.
    Die restlichen Unterschiede werde ich dann nächste Woche mal näher unter die Lupe nehmen.

    Was ich bis jetzt aber schon geändert habe (vielleicht mit Erfolg?) ist folgendes:

    1.) Unter Gateways > VPN_PP_Amsterdam > advanced > Latency thresholds From 750 To 1000
    2.) Server host name resolution - angeschaltet
    3.) persist-local-ip - eingetragen

    Seit dem läuft der VPN seit 4h 30m stabil ohne Abbrüche und auch die private virtuelle IP Adresse ist gleich geblieben.

    Ich hoffe das es das jetzt gewesen ist. :)

    Zum Thema pfSense. Von da komme ich her. Zurück auf pfSense ist daher keine Alternative für mich, nur weil das Problem ganz offensichtlich vor dem Bildschirm sitzt. :p
    Aber vielen vielen dank für die Config zum abgleichen!

    Ich meld mich in einer Woche nochmal und geb bescheid, ob meine Lösung stabil läuft. :)
     
  5. F

    FeuerPhoenix New Member

    Hey hey,

    also Ende vom Lied ist, dass es am ISP lag. Also egal ob mit pfSense oder ohne das Problem wäre geblieben.
    Der Workaround um die hohen kurzen Latenzspitzen am Abend abzufangen ist, wie schon mal gesagt das Latency threshold auf 1000 to 1500 oder ähnliches anzuheben.
    Außerdem hatte ich noch den ominösen Fall, dass nach einem Neustart der VPN Verbindung die Account Daten wohl nicht mehr stimmten (?)
    "Verbindung bricht ab -> OpenVPN versucht zu reconnecten -> PP Server denkt noch das man verbunden ist und lehnt die neue Verbindung aufgrund falscher Zugangsdaten ab. -> OpenVPN stürzt danach ab."
    Dieses Problem löste ich mit der Option "--auth-retry interact" am Ende der Config.

    Seit dem läuft alles glatt und meine Haare wachsen vielleicht wieder nach. Haha :D

    Weitere Themen die man vielleicht mit ins Tutorial aufnehmen könnte:
    1. VPN Verbindung über TCP Port 443 (?) vor dem ISP verstecken und als Webseitentraffic tarnen.
    2. Kaskadieren mit/über Proxy oder einem zweiten VPN

    Falls dazu wer was weiß immer her damit. ;)
     
  6. G

    Gerd Junior Member

    Ich habe nicht die aktuelle Config, aber kann man eine Verbindung über TCP Port 443 herstellen? Was ist nötig um den Webseitentraffic zu tarnen? Oder ist es mit einer Verbindung über den TCP Port 443 gleich erledigt? Wenn du mich aufklärst, falls eine spezielle Konfiguration notwendig ist, dann kann ich es gerne in die Anleitung aufnehmen.

    Eine Kaskade ist in der Anleitung pfSense2.3.X bereits drin, also eine Tunnel in Tunnel Verbindung. Das kann man theoretisch mit so vielen VPN Anbietern machen, wie man will. Das ganze aber halt ohne Proxy. Wie man die Konfiguration am Ende über ein Proxy macht, weiß ich nicht. Hier kann ich die Anleitung auch gerne erweitern, falls du die Konfiguration beschreiben kannst.

    Schon alleine wie man hohen oder kurzen Latenzspitzen ausfindig macht und wie man es über Latency threshold anpasst, ist eine Anleitung wert.

    @FeuerPhoenix. Ich kann dir auch gerne die Anleitung pfSense 2.3.X. (mit Libre Office Writer geschrieben) zur Verfügung stellen, dann kannst du von mir aus auch eigene Anleitungen hinzufügen.
     
    Last edited: Aug 1, 2017
  7. F

    FeuerPhoenix New Member

    Das Ziel ist es über TCP Port 443 dafür zu sorgen, dass HTTPS Webseitentraffic und VPN Tunnel Verbindungen den selben Port nutzen.
    Ein möglicher Schluss den viele ISP's gehen könnten wäre alle "typischen" VPN Ports zu unterbinden für den User. Port 443 zu unterbinden würde aber auch bedeuten das kein User mehr Webseiten aufrufen kann.
    Der ISP weiß also immer noch, dass man sich per VPN zu einem PP Server verbindet, kann dagegen aber nichts mehr machen, weil er Port 443 unterbinden müsste um dich daran zu hindern.
    Ein richtiges "Tarnen" wäre soweit ich weiß also nicht möglich. Bitte korrigiert mich da ob das bei pfSense/OPNsense überhaupt möglich ist mit den PP Servern und falls ich falsch liege und spezielle Konfigurationen notwendig sind, diese bitte nennen! :)

    Okay? Das hatte ich dann wohl übersehen. :) Hatte nur von Failover/Ausfallsicherheit gelesen.

    Ganz ehrlich? Das war reiner Zufall. Ich bin nur drauf gestoßen, weil mir die Lösungsansätze ausgegangen sind. In der Gateway Übersicht muss man also im rechten Moment,
    wenn der VPN abstürzt kurz schauen, ob die Latenz/Ping/XX ms Anzeige sehr hoch ist bei dem WAN_DHCP Gateway zum Provider. Bei mir war die PP Verbindung bei 34ms, aber meine ISP WAN Verbindung halt bei 650ms und in der nächsten Sekunde wieder auf 20ms. Das hatte aber schon ausgereicht die VPN Verbindung abzuschießen, weil zumindest bei OPNsense als Default für eine hohe Latenz die Werte 200/500 vorgegeben werden.
    Man muss halt wissen, dass es sowas überhaupt gibt, ansonsten fummelt man ewig in der OpenVPN Config rum und sucht das Problem vergeblich.

    Vielleicht kann man also als Randnotiz oder Hinweis hinzufügen, dass ISP Störungen auf der WAN Seite auch zu Abbrüchen führen können.
    Bei OPNsense geht das wie folgt:
    System > Gateways > All > WAN_DHCP *klick* >
    - Latency thresholds 1000/1500
    - Packet Loss thresholds 40/50

    Aus Security Sicht können noch ein paar Warnungen/Fehler im Log vermieden werden.
    Problem 1: WARNING: this configuration may cache passwords in memory
    Lösung: in den Advanced OpenVPN Einstellungen auth-nocache eintragen

    Problem 2: WARNING: file 'clientX.up' is group or others acessible
    Lösung: Diese Datei in denen die PP Account Daten stehen nur dem Root zugänglich machen
    # cd /var/etc/openvpn/
    # ls -lisa
    # chmod 700 clientX.up
    # ls -lisa
    // rwx Rechte sind nurnoch für root nutzbar, also -rwx------. Außerdem muss "root" der owner sein, falls nicht ggf. mit chown abändern. (Was hoffentlich so oder so bereits standard ist)

    Problem 3: Obwohl die Account Daten richtig sind kommt dieser Fehler nach einem VPN Abbruch: AUTH: Received AUTH_FAILED control message
    Lösung: in den Advanced OpenVPN Einstellungen auth-retry interact am Ende der advanced Einstellungen eintragen

    Danke für den Vorschlag, aber da ich ausschließlich OPNsense nutze sind meine Wege zum Ziel "etwas" anders, da die Namensgebung in der GUI eine Andere ist. :)

    Ich hoffe jemand kann aus meinen Fehlern und Problemlösungen lernen.
    Ganz wichtig für alle OPNsense Leute: Die pfSense Anleitung ist nach OPNsense Versionsstand "17.1.11" und OpenSSL Versionsstand "1.0.2l 25 May 2017" auch eins zu eins für OPNsense umsetzbar.
    Ebenfalls ist AES-NI-CPU-based Acceleration (aesni) automatisch für OpenVPN aktiviert. Schönes Ding! :)
    Mit LibreSSL klappt das sicher auch.
    An dieser Stelle aber die Warnung: Eingestellte Hardware Crypto Acceleration könnte eventuell dann nicht mehr funktionieren (!).
     
    Last edited: Aug 2, 2017
  8. F

    FeuerPhoenix New Member

    An dieser Stelle noch für alle OPNsense User. Hier meine funktionierende Config zum Vergleich:

    root@OPNsense:/var/etc/openvpn # cat client1.conf
    Code:
    dev ovpnc1
    verb 5
    dev-type tun
    tun-ipv6
    dev-node /dev/tun1
    writepid /var/run/openvpn_client1.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher AES-256-CBC
    auth SHA512
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    local <meine WAN IP vom ISP>
    engine <meine Hardware encrypt acceleration>
    tls-client
    client
    lport 0
    management /var/etc/openvpn/client1.sock unix
    remote <PP Server>.perfect-privacy.com <UDP Port>
    auth-user-pass /var/etc/openvpn/client1.up
    ca /var/etc/openvpn/client1.ca
    cert /var/etc/openvpn/client1.cert
    key /var/etc/openvpn/client1.key
    tls-auth /var/etc/openvpn/client1.tls-auth 1
    comp-lzo adaptive
    resolv-retry infinite
    tun-mtu 1500
    fragment 1300
    mssfix
    #float
    hand-window 120
    tran-window 3600
    inactive 604800
    mute-replay-warnings
    ns-cert-type server
    persist-remote-ip
    redirect-gateway def1
    reneg-sec 3600
    resolv-retry 60
    tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA
    tls-timeout 5
    key-direction 1
    auth-nocache
    auth-retry interact
    Ein paar Einträge wurden mit "<...>" ersetzt.
    Viel Spaß!
     
  9. G

    Gerd Junior Member

    Kennt sich jemand mit IPV6 Konfiguration auf pfSense aus?
    Ich würde gerne wissen, wie man eine IPV6 Verbindung zu PP herstellt.
     
    Last edited: Dec 9, 2017
  10. G

    Gerd Junior Member

    In der pfSense Anleitung steht, dass man trotz des Fehlers im BSD-Kernel IPv6 nicht zuverlässig funktioniert.

    Testet doch mal bitte, ob das bei euch auch der Fall ist und ob die IPv6 IP bei euch angezeigt wird. Verwendet dafür folgende Einstellungen:

    Im OpenVPN Client:
    • Gateway creation (X) Both auswählen
    Im Menü Firewall/ Rules/ LAN Tab:
    • IPv6 Regel öffnen und als Gateway VPN_PP_AMSTERDAM_VPNV6 wählen (wenn man zumindest nach der PP Anleitung geht).
    Im Menü Firewall/ NAT/ Outbound Tab:
    • Die OpenVPN Regel von der PP-Anleitung öffnen und folgende Einstellungen vornehmen:
      • Interface: OpenVPN
      • Address Family: IPv4+IPv6
      • Protocol: Any
      • Source: Any
      • Destination: Any
      • 'Save'
    In der Anleitung pfSense-2-4-X.pdf habe ich noch eine Load Balancing Konfiguration hinzugefügt. Wenn man eine 500 Mbit/s Leitung und mehrere CPU Kerne hat und der ISP Provider es auch zulässt, dann sollten bis zu 500 Mbit/s mit OpenVPN drin sein.
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice