OPNSense Teil II: Einrichten eines VPN mittels WireGuard

Ein Wort vorab

Ich wollte eigentlich diesen Teil in mein bestehendes Tutorial OPNSense Teil I: Einrichtung im Heimnetzwerk packen.

1 Einrichten eines VPN mittels WireGuard

Wenn ich auf Dienste in meinem Netzwerk von außen zugreifen möchte, brauche ich ein Virtual Private Network. In diesem Abschnitt richten wir eines in unserer OPNSense mittels WireGuard ein.

1.1 Installation der Plugins

Wir öffnen den Menüpunkt Plugins (System → Firmware → Plugins). In das Suchfeld geben wir wireguard ein. Das zu installierende Plugin heißt os-wireguard, welches über das + installiert werden kann.

Um auf unser Heimnetzwerk zugreifen zu können, braucht es eine öffentliche IP. Da man im Regelfall als privater Nutzer keine statische IP von seinem Internet Service Provider erhält, ändert sich die IP in (un)bestimmten Abständen. Damit uns bzw. dem Endgerät stets die aktuelle IP bekannt ist, brauchen wir ein weiteres Plugin: os-ddclient. Installiert auch dieses. Wenn ihr eine statische IP habt, braucht ihr dieses Plugin nicht.

Sind die Installation durch, laden wir die Seite neu.

1.2 Einrichten des os-ddclient

Die Einstellungen hierfür finden sich unter Services → Dynamic DNS → Settings. Unter dem Reiter General Settings setzen wir einen Haken bei Enable und legen bei Bedarf ein Intervall in Sekunden fest.

1.2.1 Accounts

Es gibt eine Vielzahl an DynDNS-Diensten, die ich nicht alle erwähnen kann. Such euch einen entweder einen aus der vom Plugin vorgeschlagenen Dienste aus (zu finden im Fenster Edit Account, siehe unten) oder versucht einen anderen. Da dies nicht mein Weg ist, kann ich nichts dazu sagen.

Ich habe eine eigene Domain bei Hetzner, deren DNS Console ebenso vom Plugin unterstützt wird. Gleiches gilt sicherlich auch für andere, die Änderungen über eine API zulassen. Bei Hetzner habe ich mir eine Domain zugelegt und eine entsprechende Subdomain erstellt. Zugleich in der DNS Console einen API-Key generiert. Im Fenster Edit Account (siehe unten) wird der Nutzername (E-Mail) von Hetzner unter Username und der API-Key unter Password eingetragen. Ins Feld Zone der reine Domainname (beispiel.de) und unter Hostnames die Domains, deren IP geupdated werden sollen. Wenn es die Hauptdomain ist, diese erneut einfügen. Oder sonst die Subdomain (wireguard.beispiel.de). Als Check ip method wählt ihr Interface aus. Bei Interface to monitor ist WAN auszuwählen. Setzt zudem einen Haken bei Force SSL. Nun noch auf Save und dann auf Apply. Das sollte es gewesen sein. Wenn alles funktioniert hat, sollte eure aktuelle IP übermittelt worden sein.

1.3 Einrichten von WireGuard

Nun wechseln wir auf VPN → WireGuard und setzen gleich einen Haken bei Enable WireGuard und bestätigen dies mit Apply.

Weiter geht es im Reiter Local. Hier erstellen wir den VPN-Tunnel. Dazu klickt ihr auf das +. Ihr seht folgendes Bild:

  1. Vergebt einen Namen eurer Wahl

  2. Lasst Public Key und Private Key leer, die werden automatisch generiert

  3. Vergebt einen Port

  4. Vergebt eine IP, die nicht zu eurem Netz gehört

  5. Lasst ihr aktuell noch unberührt

  6. Klickt auf Save

Nun klickt ihr auf den Stift, um die Konfiguration erneut zu öffnen.

wireguard_local_edit

Kopiert euch hier den Public Key. Diesen benötigt ihr, um auf eurem Endgerät den Tunnel zu konfigurieren. Es empfiehlt sich also, diesen Key vor der Einrichtung auf das entsprechende Endgerät zu transferieren. So erspart man sich mühseliges abschreiben :wink:

1.3.1 Einrichten des Interfaces

Nun wechseln wir zu Interfaces → Assignments. In dieser Übersicht wählen wir

  1. unter New Interface den eben erstellten WireGuard-Tunnel aus und vergeben einen Namen

  2. klicken auf das +

  3. drücken auf Save

Jetzt klicken wir in der linken Leiste auf das eben erstellte Interface und setzen folgenden Häkchen:

Alles andere lassen wir so. Nichts ändern. Sollte bei euch so aussehen:

1.3.2 Einrichten auf eurem Endgerät
Android

Lade dir die WireGuard-App herunter. Bei f-droid findet ihr sie hier: https://f-droid.org/en/packages/com.wireguard.android/


  1. Öffnet die App und klickt auf das +

  2. Tippe auf Neu erstellen

  3. Vergebt einen Namen

  4. Drückt rechts im Feld Privater Schlüssel auf die zwei Pfeile, die einen Kreis bilden

  5. Kopiere dir den Inhalt im Feld Öffentlicher Schlüssel und speichere ihn am besten so ab, dass du ihn mittels Copy&Paste später in deiner OPNSense einfügen kannst.

  6. Ins Feld Adressen vergebe eine IP im Netzbereich deines WireGuard. (Beispiel: Deine erstellte IP lautet 10.10.10.1: Dann kann deine IP hier 10.10.10.2/32 lauten.)

  7. Bei Nameserver trage die IP deines WireGuard ein. Also bspw. die 10.10.10.1

  8. Tippe auf Gegenüber hinzufügen

  9. Füge in Öffentlicher Schlüssel den Public Key deines WireGuard-Servers ein, den du im Abschnitt 1.3 kopiert und möglicherweise schon auf dein Endgerät kopiert hast.

  10. Unter Endpunkt kommt die öffentliche IP deines WireGuard-Servers hinein. Oder die Domain (Einrichten des os-ddclient)

  11. Unter Erlaubte IPs trägst du 0.0.0.0/0 ein

  12. Klicke auf das Disketten-Symbol oben rechts

iOS

Lade dir die WireGuard-App aus dem App Store herunter.



  1. Klicke auf das + oben rechts und dann auf Selbst ertsllen

  2. Vergebe einen Namen

  3. Tippe auf Schlüsselpaar erzeugen, kopiere den öffentlichen Schlüssel und speichere ihn am besten so ab, dass du ihn mittels Copy&Paste später in deiner OPNSense einfügen kannst.

  4. Ins Feld Adressen vergebe eine IP im Netzbereich deines WireGuard. (Beispiel: Deine erstellte IP lautet 10.10.10.1: Dann kann deine IP hier 10.10.10.2/32 lauten.)

  5. Bei DNS-Server trage die IP deines WireGuard ein. Also bspw. die 10.10.10.1

  6. Drücke auf Peer hinzufügen

  7. Füge in Öffentlicher Schlüssel den Public Key deines WireGuard-Servers ein, den du im Abschnitt 1.3 kopiert und möglicherweise schon auf dein Endgerät kopiert hast.

  8. Unter Endpunkt kommt die öffentliche IP deines WireGuard-Servers hinein. Oder die Domain (Einrichten des os-ddclient)

  9. Unter Zulässige IPs trägst du 0.0.0.0/0 ein

  10. Optional: Haken bei Mobil oder WLAN setzen, sodass das VPN dann automatisch aktiviert wird

  11. Oben rechts auf Sichern drücken

Weitere Erläuterungen zur Einrichtung auf eurem Endgerät kann ich gerade nicht zur Verfügung stellen. Das Prinzip sollte aber ähnlich sein. Sollte ich die Zeit finden, werde ich ggf. noch weitere Erläuterungen für Endgeräte hinzufügen.

1.3.3 Hinzufügen des Endpoints

Nun wechseln wir in unserer OPNSense wieder auf VPN → WireGuard und dort auf den Reiter Endpoints. Klickt dann auf das +, um euer Gerät hinzuzufügen. Möchtet ihr mehr als ein Gerät hinzufügen, ist dieser Schritt für jedes einzelne Gerät durchzuführen.

  1. Vergebt einen Namen

  2. Tragt den Öffentlichen Schlüssel (Public Key) des entsprechenden Geräts ein

  3. Unter Allowed IPs tragt ihr die IP ein, die ihr bei der Konfiguration eures Endgeräts diesem zugewiesen habt

  4. Klickt auf Save

  5. Klickt auf Apply

Nun wechseln wir zum Reiter Local und klicken bei unserem bereits erstellten Tunnel auf den Stift auf der rechten Seite, um diesen zu editieren. Unter Peers fügen wir jetzt die entsprechenden Endgeräte hinzu, klicken auf Save und danach auf Apply.

1.3.5 Erstellen der Firewall-Regeln

Wir wechseln nun zu Firewall → Rules. Als erstes erstellen wir für das WAN-Interface eine neue Regel. Diese sieht wie folgt aus:


Die im Bild zu sehende Portnummer von 12345 ist nur beispielhaft und durch euren eigenen Port zu ersetzen

Für unser WireGuard-Interface müssen wir auch entsprechende Regeln setzen. Diese sollten nur das nötigste beinhalten. Also es sollten nur die Dienste erreichbar sein, die ihr zwingend benötigt. Bei mir sieht das wie folgt aus:

3 Wir haben fertig!

Geschafft. Jetzt solltest du zu deiner OPNSense eine VPN-Verbindung aufbauen können.

4 „Gefällt mir“