VPN mittels OPNSense

@Arnaud Wäre das auf lange Sicht auch was, das in die WebUI könnte?

Hallo,

Das muss ich in Details anschauen, z.B. „in opnsense eintragen“, aber es ist vielleicht machbar, habe ich schon teilweise für Ajenti bearbeitet.
Das diskutieren wir zusammen in Entwicklerrunde :wink:
Was für mich ein bisschen schwierig ist, ist 36h pro Tag zu arbeiten, aber ich tue mein bestens :slight_smile:

Gruß

Arnaud

Das dürfte sich auf eine Post-request beschränken :slight_smile:

Das verstehe ich vollkommen, deshalb mach ich es erstmal in der Landingpage, dann kann ich dir genau sagen, wie es funktioniert :wink:

VG, Dorian

Der Plan klingt super! Ich habe damals meinen Wireguard-Zugang auf meinem Linux-Client zu Hause einfach importiert und auf dem Smartphone den QR-Code scannen lassen. Die App heißt übrigens --Überraschung!-- WireGuard.
Ich will damit nur sagen: Es werden tatsächlich beide Möglichkeiten benutzt und es funktionierten bei mir auch beide Wege ootb!

Für den Gebrauch auf dem Smartphone wollte ich nochmal die Möglichkeit ansprechen, den gesamten Traffic (IPv4 und IPv6) durch den VPN-Tunnel zu routen … damit ist man mit dem eigenen Gerät in fremden WLANs nach meinem Verständnis relativ sicher.

Wenn die Wireguard-Zugänge irgendwann mal im WebUI „verwaltet“ werden können sollen, müsste man da sowas haben wie damals im IPFire: aktivert – deaktiviert für einzelne User?!

Viele Grüße und danke für Eure ganze Arbeit!
Michael

Hi Michael,

Ich habe WireGuard heute mal ausprobiert und das Ergebnis ist eher so lala:

  1. Ich find es ist deutlich komplexer, es einzurichten, man muss erst ein eigenes Zertifikat generieren, um sich überhaupt verbinden zu können, bei OpenVPN lädt man nur das Serverzertifikat runter und kann sich sofort mit dem eigenen Account anmelden, das ist IMO deutlich nutzerfreundlicher.
  2. Ich finde die Bedienung deutlich weniger intuitiv als bei OpenVPN. Was mich am meisten stört, ist folgendes: Man bekommt keine(!!) Fehlermeldung, wenn die Verbindung fehlschlägt. Das finde ich aus Endnutzersicht schlecht, da nicht klar ersichtlich ist, ob man jetzt verbunden ist, oder nicht.
  3. Ich konnte keine Verbesserung in der Geschwindigkeit gegenüber OpenVPN feststellen.
    Mit OpenVPN bekomme ich, wenn ich eine Datei kopiere, 1,3 Mbyte/s und bei WireGuard bekomme ich 1,2. Das ist zugegebenermaßen generell ziemlich niedrig, aber unser Server hängt im Moment auch nur an einer 50mbit Leitung.
    Deshalb würde ich nochmal jemand anderen bitten, das zu testen. (Mit aktuellen Versionen von OpenVPN und WireGuard, vielleicht hat sich da auch einfach in den letzten Jahren ein bisschen was geändert).

VG, Dorian

Hi Dorian,
:thinking: ich sehe es genau umgekehrt und finde Wireguard deutlich einfacher in der Handhabung. Zu Hause habe ich den VPN-Tunnel einmal aktiviert (da verwende ich KDE/Plasma, was das mittlerweile im Netzwerkmanager integriert hat: Ein Klick!). Und der Tunnel bleibt auch an – egal, ob ich den Laptop schlafen lege und dann wieder aufwecke. @mdt erklärt hier, warum das so ist!

Übrigens gab es schon 2018 Lob von Torvalds himself: Linus Torvalds lobt WireGuard

Der Durchsatz überzeugt mich hier ebenfalls… von daher: Kann ich so nicht bestätigen.
Viele Grüße,
Michael

Hi Michael,

In Kombination mit einer hübschen Weboberfläche ist es vermutlich genauso einfach wie OpenVPN, aber das Hauptproblem ist meiner Meinung nach eben, dass man keine offensichtliche Statusanzeige des Tunnels hat. Wenn ich nun in einem öffentlichen WLAN bin und mich in Sicherheit wiege, weil ich glaube, der Tunnel sei aktiviert, obwohl er das nicht ist, ist das irgendwie suboptimal.

Das ist super, wenn ich einen externen Server ins Netz einbinden will, zum Beispiel für LDAP oder ähnliches, dafür finde ich WireGuard auch TOP! Vor allem da man ja super leicht einstellen kann, welcher Netzbereich durch den Tunnel läuft und welcher nicht.

Für Schüler und Lehrer (bzw. in meinem Fall Vereinsmitglieder) ist mir das alles aber einfach bisschen zu undurchsichtig. Wenn ich bei OpenVPN den Schalter umlege und er grün wird dann weiß ich, dass die Verbindung steht und dass alles da durch fließt. Bei WireGuard muss ich mir erst noch überlegen, welchen Verkehr ich da durch schicken will. Das ist natürlich eigentlich ziemlich cool, aber wie erkläre ich das jemandem, der da kein Plan von hat? Außerdem sieht man nicht einfach durch eine Statusanzeige, ob die Verbindung tatsächlich steht (zumindest bei Android und Ubuntu), das bekommt man nur raus, wenn man einen Host im getunnelten Netz pingt, oder sich den Durchsatz anschaut (oder hab ich da was übersehen?)

Bitte verstehe mich nicht falsch, WireGuard ist ein super cooles Tool und auch echt mächtig, aber ich finde einfach, dass es für den normalen Endnutzer, der keine Ahnung von Netzen usw. hat, nicht transparent genug ist.

VG, Dorian

Hi Dorian.
Was den Status der Verbindung angeht: Ja, das stimmt!
Es gibt (zumindest im Windows Client!) aber noch den sog. Kill-Switch:
snipimage
Das könnte uU in öffentlichen Netzen helfen!

Ich habe OpenVPN hier auch jahrelang verwendet … bin aber jetzt echt froh, dass ich es nicht mehr muss, denn der Durchsatz über unseren IPFire ware immer extrem stockend … das muss alles nichts heißen und muss auch gar nicht an OpenVPN gelegen haben aber eine richtige Ursache konnte ich da nie finden…

Viele Grüße,
Michael

Hi Michael,

Das ist cool! Bei Android sehe ich den aber leider nicht.
Bei Linux geht das sicherlich auch irgendwie, aber eine einfache Checkbox gibt es natürlich nicht.

Würdest du OpenVPN denn nochmal eine Chance geben? Ich hatte bisher keine Probleme und der Client OpenVPN connect ist super intuitiv und funktioniert überall…

VG, Dorian

Für mich persönlich wäre das schnell eingerichtet – aber die 12 anderen Zugänge für div. Kollegen müssten dann alle nochmal neu eingestellt werden. Dazu habe ich gerade eher wenig Lust, da es im Moment so gut läuft :slight_smile:

Hi Michael,

Das Verstehe ich. Aber genau hier kommt der Vorteil von OpenVPN: Du musst gar nicht für jeden einen Zugang einrichten. Es muss nur jeder das Serverzertifikat runterladen, da ist dann auch die ganze Konfiguration enthalten. Das wird dann in die OpenVPN Connect importiert. Dann muss der Nutzer nur noch seine LDAP Anmeldedaten eingeben und schon läuft es. Du musst also nur einmal eine Anleitung mit Link zum Zertifikat (als Download) schreiben und dann kann es jeder selbst einrichten :slight_smile:

Soll ich dafür mal eine Anleitung schreiben?

VG, Dorian

Hallo Dorian,

wenn es deine Zeit nicht übermäßig beansprucht: gerne.

Viele Grüße

Wilfried

Alles klar, hier die Anleitung:

    1. Die LDAP Anbindung für Schüler und Lehrer einrichten:
    • 1.1: Unter System > Zugang > Server einen Server hinzufügen (oben rechts)
    • 1.2: Folgende Einträge sind zu treffen:
      • Beschreibender Name: Linuxmuster VPN Zugang
      • Typ: LDAP
      • Hostname oder IP-Adresse: server.linuxmuster.lan
      • Port-Wert: 636
      • Transport: SSL - Verschlüsselt
      • Protokollversion: 3
      • Bind-Zugangsdaten:
        • Benutzer DN: CN=global-binduser,OU=Management,OU=GLOBAL,DC=linuxmuster,DC=lan
      • Suchbereich: Kompletter Unterbaum
      • Basis-DN: DC=linuxmuster,DC=lan
      • Authentifizierungscontainer: DC=linuxmuster,DC=lan
      • Erweiterte Abfrage:
        • Schüler und Lehrer: |(memberof=CN=role-student,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)(memberof=CN=role-teacher,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)
        • Nur Lehrer: (memberof=CN=role-teacher,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)
      • Benutzerbennenungsattribut: sAMAccountName
    • 1.3: Im Prüfer (System > Zugang > Prüfer) Authentifizierungsserver den angelegten Linuxmuster VPN Zugang auswählen und den Login mit beliebigen Nutzern testen.
    1. Zertifikate erstellen
      Der OpenVPN Server brauch eine CA um das Serverzertifikat zu erstellen.
      Man kann entweder eine neue generieren (so ist das Vorgehen in der Anleitung) oder die vom linuxmuster-setup erzeugte verwenden.
    • 2.1 Unter System > Zugang > Sicherheit > Aussteller einen Aussteller hinzufügen (oben rechts)
    • 2.2 Folgende EIngaben sind zu treffen:
      • Beschreibender Name: Linuxmuster VPN CA
      • Vorgehen: Erstelle eine interne Zertifizierungsstelle
      • Key Type: RSA
      • Schlüssellänge: 4096
      • Hash-Algorithmus: SHA512
      • Lebenszeit (Tage): frei wählbar!
      • Bedeutender Name: Das bekommt ihr selbst hin :wink:
    • 2.3 Unter System > Zugang > Sicherheit > Zertifikate ein Zertifikat hinzufügen (oben rechts)
    • 2.4 Folgende Eingaben sind zu treffen:
      • Vorgehen: Erstelle ein neues internes Zertifikat
      • Beschreibender Name: Linuxmuster VPN Server
      • Zertifizierungsstelle: Linuxmuster VPN CA
      • Type: Serverzertifikate
      • Key Type: RSA
      • Schlüssellänge: 4096
      • Hash-Algorithmus: SHA512
      • Lebenszeit (Tage): frei wählbar!
      • Private Key Location: Save on this firewall
      • Bedeutender Name: Das bekommt ihr selbst hin :wink:
    1. OpenVPN Server erstellen :smiley:
    • 3.1 Unter VPN > OpenVPN > Server einen OpenVPN Server erstellen (oben rechts)
    • 3.2 Folgende Eingaben sind zu treffen:
      • Beschreibender Name: Linuxmuster VPN
      • Servermodus: Remotezugriff (Benutzerauthentifizierung)
      • Backend Authentifizierung: Linuxmuster VPN Zugang
      • Lokale Gruppe erzwingen (keiner)
      • Protokoll: UDP
      • Gerätemodus: tun
      • Schnittstelle: WAN
      • Lokaler Port: (frei wählbar) 25008
      • TLS Authentifikation: Beides angehakt lassen
      • Peer-Zertifizierungsstelle: Linuxmuster VPN CA
      • Peerzertifikatsrückrufliste: Keine
      • Serverzertifikate: Linuxmuster VPN Server
      • DH Parameterlänge: 4096
      • Verschlüsselungsalgorithmus: AES-256-CBC (256-bit key, 128-bit block)
      • Authentifizierungs-Digestalgorithmus: SHA512 (512-bit)
      • Hardwarekryptografie: No Hardware Crypto Acceleration
      • Zertifikatstiefe: Eins (Client+Server)
      • IPv4 Tunnelnetzwerk: Ein Netzbereich in dem die VPN Clients ihre IP bekommen, ich nehme dafür 10.1.0.0/24
      • IPv6 Tunnelnetzwerk:
      • Weiterleitungs Gateway:
      • Lokales IPv4-Netzwerk: 10.0.0.0/16 (Das Linuxmuster Netz)
      • Lokales IPv6-Netzwerk:
      • Fernes IPv4-Netzwerk:
      • Fernes IPv6-Netzwerk:
      • Konkurrierende Verbindungen:
      • Komprimierung: Aktiviert mit adaptiver Kompression
      • Typ des Dienstes:
      • Inter-Client-Kommunikation:
      • Doppelte Verbindungen:
      • IPv6 deaktivieren:
      • Für den Rest: Standardwerte!
    1. Firewall Regeln:
    • 4.1 Unter Firewall > Regeln >WAN eine neue Regel anlegen (oben rechts)
    • 4.2 Folgende Eingaben sind zu treffen:
      • Protokoll: UDP
      • Ziel: Diese Firewall
      • Zielportbereich: von: 25008 bis: 25008 (ggf. anpassen an eigene Portwahl)
      • Für den Rest: Standardwerte!
    • 4.3: Unter Firewall > Regeln > OpenVPN eine neue Regel anlegen (oben rechts)
    • 4.4 Folgende Eingaben sind zu machen:
      • Quelle: 10.1.0.0/24
      • Für den Rest: Standardwerte!
    • 4.5 Änderungen übernehmen (rechts im blauen Kasten)
    1. Konfiguration exportieren:
    • 5.1 Gehe zu VPN > OpenVPN > Clientexport
    • 5.2 Folgende Eingaben sind zu treffen:
      • Ferner Zugriffsserver: Linuxmuster VPN UDP:25008
      • Export type: Nur Datei
      • Hostname: Hostname unter dem die Firewall erreichbar ist, z.B: vpn.meineschule.de
      • Port: 25008 (ggf. anpassen an eigene Portwahl)
      • Für den Rest: Standardwerte!
    • 5.3 Ganz unten unter Accounts / certificates bei Linuxmuster VPN Server ganz rechts auf das Downloadsymbol drücken
    1. Mit dem VPN Verbinden (AB HIER FÜR LuL und SuS)
      Die in 5.3 heruntergeladene Datei muss nun auf das Endgerät heruntergeladen und dort in die App OpenVPN Connect (für alle Plattformen) importiert werden.
      Nach dem Import kann durch Eingabe von Benutzername und Passwort eine VPN-Verbindung hergestellt werden.

So, das war es dann auch (schon) :wink: Aber dieses Setup muss ja nur einmal gemacht werden, danach ist es ein „Selbstläufer“

Ich denke, das kann so in die Dokumentation übernommen werden, sobald es ein paar Leute erfolgreich getestet haben.

VG, Dorian

4 „Gefällt mir“

… und das nennst weniger kompliziert als Wireguard??? :slight_smile:

Sind deine Pläne für Wireguard damit gestorben oder verfolgst du das auch weiter?

Hallo Dorian,

erst einmal zum wiederholten Mal: Danke!

Github-Issue ist erstellt: VPN on OPNSense #539

Beste Grüße

Thorsten

Es ging mir dabei nicht ums Einrichten auf Serverseite, sondern auf Clientseite und das ist ja nur (6.) :wink:
Die Ersteinrichtung von WireGuard inklusive der Anbindung an meine Landinpage wäre mindestens genauso lang.

Neija, die Sache ist halt die: OpenVPN funktioniert aus meiner Sicht gut genug und aufgrund der schon angesprochenen Usability werde ich für unsere Mitglieder auch bei OpenVPN bleiben. Dazu kommt noch, dass es sicherlich nochmal um die zwanzig Stunden dauern würde, die WireGuard Anbindung ans LDAP in der Landingpage sauber zu machen (von einer perfekten Lösung in der WebUI ganz zu schweigen). Das ist Zeit, die ich aufgrund der nicht soo großen Vorteile von WireGuard eigentlich nicht investieren will, da stecke ich sie lieber in Linbo…
Aber wenn der Bedarf in der Community groß ist, denke ich nochmal drüber nach:

Welche VPN Lösung präferiert iht?
  • OpenVPN mit LDAP (wie in der Anleitung beschrieben)
  • WireGuard mit LDAP (wie konzeptionell beschrieben)
0 Teilnehmer

VG, Dorian

Top :+1:
Ein Punkt der noch zu diskutieren ist ist folgender: Lieber ein neues CA generien oder das vom Server importieren?

VG, Dorian

Ok – ich bin nur nicht sicher, wie die Firewall das findet, wenn man VPN (egal welche Art) für alle freigibt?! Daher ließen sich die Zugänge bei uns auch weiterhin manuell verwalten …

Wie auch immer es ausgeht: Danke jedenfalls für Dein Engagement!

Das ist eine berechtigte Frage, keine Ahnung…
Aber man kann es ja auch auf bestimmte LDAP Gruppen beschränken, da könnte man zum Beispiel auch ein gesondertes Projekt für Anlegen und nur dessen Mitglieder dürfen rein.

VG, Dorian

1 „Gefällt mir“

Nachtrag: Das Issue bezieht sich auf das Doku-Team und somit auf die Dokumentation. Wir werden das bei unserem nächsten Treffen thematisieren.

1 „Gefällt mir“