Tipps & Tricks: OpenVPN mit pfSense

Gerd

Active Member
Meine Frage ist: Bei der Erstellung des OpenVPN Clients.... seid ihr euch sicher, dass die Advanced Settings noch so stimmen wie sie da eingetragen sind im PDF?

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.

Und wenn ja kann man den wechsel durch advanced Settings so umsetzen, dass die Verbindung bleibt?

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

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
 

Gerd

Active Member
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 ?

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.
 

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. :)
 

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. ;)
 

Gerd

Active Member
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.

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.

2. Kaskadieren mit/über Proxy oder einem zweiten VPN

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:

FeuerPhoenix

New Member
Was ist nötig um den Webseitentraffic zu tarnen?
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! :)

Eine Kaskade ist in der Anleitung pfSense2.3.X bereits drin, also eine Tunnel in Tunnel Verbindung.
Okay? Das hatte ich dann wohl übersehen. :) Hatte nur von Failover/Ausfallsicherheit gelesen.

Schon alleine wie man hohen oder kurzen Latenzspitzen ausfindig macht und wie man es über Latency threshold anpasst, ist eine Anleitung wert.
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

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.
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:

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ß!
 

Gerd

Active 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:

Gerd

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

Diese Dokumentation beschreibt, wie man OpenVPN auf pfSense-Geräten einrichtet.

Hinweis: Aufgrund eines Fehlers in im zugrundeliegenden BSD-Kernel funtioniert IPv6 derzeit nicht zuverlässig auf pfSense (Stand: Mai 2018). Daher verzichtet diese Anleitung auf die IPv6-Konfiguration und berücksichtigt lediglich IPv4. Details dazu im zugehörigen Forum-Thread (s. u.).

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.
 
Top