OPNsense Forum

International Forums => German - Deutsch => Topic started by: Paul_Senger on February 10, 2023, 05:05:00 pm

Title: Wireguard - Architekturfrage
Post by: Paul_Senger on February 10, 2023, 05:05:00 pm
Hallo,

nachdem ich nun mit meinem Router von IPFire auf OPNsense umgezogen bin, migriere ich nun nach und nach die benötigten Funktionalitäten. Heute geht es um den Aufbau mehrerer VPN/Wireguard Verbindungen.

Code: [Select]
                                           --------------------
                                          |Client 2            |
                                          |Router mit Wireguard|
                                          |                    |
                                           --------------------
                                                   |
                                                   |
                                                   |
                                                   |
                                                   |
                                                   |
 --------------------                     ----------------------                        --------------------
|Client 4            |<------------------|Client 1 / Zentrale   |                      |Client 3            |
|Router mit Wireguard|------------------>|OPNsense mit Wireguard|----------------------|Router mit Wireguard|
|(Fritzbox)          |                   |                      |                      |                    |
 --------------------                     ----------------------                        --------------------
                                                   |
                                                   |
                                                   |
                                                   |
                                                   |
                                                   |
                                           -----------------------
                                          |Client 5               |
                                          |weiterer Client        |
                                          |(Architektur unbekannt)|
                                           -----------------------

Ausgangspunkt ist Client 1 (meine OPNsense), d.h. von hier aus werden die Verbindungen aufgebaut/initiiert. Von hier aus möchte ich auf verschiedene, entfernte Netze (Standorte) zugreifen. Client 2 und 3 sind genau genommen "Einbahnstraßen", d.h. es reicht, wenn ich von Client 1 auf Ressourcen bei Client 2 bzw. 3 zugreifen kann und nicht umgekehrt. Bei Client 4 hätte ich gerne eine Site-to-Site Verbindung. Client 5 ist ein Platzhalter, falls in Zukunft noch eine Site dazukommen sollte.
Bevor ich mit der Umsetzung anfange, hätte ich noch ein paar Verständnisfragen, bei denen ihr mir vielleicht helfen könnt:

1. Brauche ich für jede Verbindung ein eigenes (virtuelles) Interface (wg1, wg2 usw.)?
2. Wie sieht so eine Site-to-Site Verbindung aus? Heisst das, ich richte einmal eine Verbindung von Client 1 zu Client 4 ein und eine weitere (anderes wg Interface, anderer Port) von Client 4 zu Client 1 ein? Oder geht Hin- und Rücktraffic über eine Verbindung (wg Interface, Port)?

Danke schon mals für die Unterstützung.

Paul
Title: Re: Wireguard - Architekturfrage
Post by: chemlud on February 10, 2023, 05:59:43 pm
Hi!

Ganz allgemein: Nimm dir doch einfach mal 2 Rechner, gerne Linux, aber es geht auch Win (keine Erfahrung) und setz dazwischen mal einen WG (im selben Netzwerk) auf. WG sollte installiert sein, z.B. wg-tools.

1. Schlüssel generieren, für jede Seite ein Paar und für jeden Tunnel einen pre-shared key:

Code: [Select]
umask 077; wg genkey | tee privatekey | wg pubkey > publickey

wg genpsk > presharedkey

Die kannst du dann mit cat auslesen und in die entsprechende Config kopieren.

2. Config auf beiden Seiten erstellen:

Code: [Select]
cd /etc/wireguard

sudo nano /etc/wireguard/wg0.conf

Also auf Rechner 1

Code: [Select]
[Interface]
Address = 172.16.99.1/28
ListenPort = 54321
PrivateKey =

[Peer]
PresharedKey =
PublicKey =
Endpoint = 10.10.10.10:12345 #(die lokale IP des entfernen Rechners)
AllowedIPs = 172.16.255.0/28 #(das Tunnelnetzwerk)

und Rechner 2

Code: [Select]
[Interface]
Address = 172.16.99.2/28
ListenPort = 12345
PrivateKey =

[Peer]
PresharedKey =
PublicKey =
Endpoint = 10.10.10.11:54321
AllowedIPs = 172.16.255.0/28

2. Starten

Code: [Select]
ip link set up dev wg0

wg-quick up /etc/wireguard/wg0.conf

Für Autostart beim booten:

systemctl enable wg-quick@wg0

Am Ende hast du auf beiden Seiten ein neues Netzwerkinterface mit der Tunneladresse und kannst den anderen Rechner (z.B. ssh, samba) mit dieser neuen IP erreichen.

Nächste Aufgabe: einen dritten lokalen Rechner, der sich mit den beiden anderen jeweils über einen WG-Tunnel verbindet.

Along the line: https://www.jeroenbaten.nl/the-complete-guide-to-setting-up-a-multi-peer-wireguard-vpn/

PS: Etwas Literatur

https://www.wireguard.com/quickstart/
https://www.sigmdel.ca/michel/ha/wireguard/wireguard_02_en.html#generate_keys
https://www.cyberciti.biz/faq/debian-10-set-up-wireguard-vpn-server/

Damit kann man ein Gefühl für die Config und das Handling des WG-Tunnels bekommen...
Title: Re: Wireguard - Architekturfrage
Post by: Paul_Senger on February 11, 2023, 12:47:08 pm
Hi chemlud,

vielen Dank für die zahlreichen Hinweise. Um ehrlich zu sein, starte ich nicht ganz auf der grünen Wiese. Bis vor einiger Zeit nutzte ich, wie bereits erwähnt IPFire als Router. Da dieser überhaupt keine Wireguard-Funktionaliät mitbringt und in nächster Zeit auch nicht nachgerüstet wird, habe ich mir eine Interrimslösung eingerichtet. Ich habe für die Verbindungen von Client 1 zu Client 2,3 und 4 je einen Raspberry PI auf Client 1 Seite laufen, welcher dann an die jeweiligen Router andockt. Ich habe es nicht hinbekommen, alle VPN-Verbindungen auf einem PI laufen zu lassen. Aber ich erreiche alle Clients und deren Clients in deren Subnetz von Client 1. Genau genommen sind die Clients (inklusive Client 1) eher Gateways. Folgende Nachteile an der Lösung will ich mit der OPNsense beseitigen.

1. alle VPN Verbindungen laufen auf einem Gerät (hier OPNsense) sodass ich mir die Raspberries spare
2. Damit ich von den Clients im Netz Client 1 aus die Clients in Client 2,3 und 4 erreiche, muss ich händisch die Routen pflegen bzw. setzen. Habe es nicht hinbekommen, die via DHCP zu verteilen bzw. im IPFire zu setzen.
3. Die Verbindungen waren alles nur die erwähnten "Einbahnstraßen". Aber der Plan ist, das Client 4 Netz Side-by-Side anzubinden.

Allles in allem gehts hier quasi um die Migration bzw. Erweiterung/Optimierung der existieren Lösung.

Grüße

Paul
Title: Re: Wireguard - Architekturfrage
Post by: Paul_Senger on February 14, 2023, 03:29:28 pm
Hallo,

so, ich habe jetzt exemplarisch mal eine Verbindung von Client 1 zu Client 3 aufgesetzt. Ich hoffe, es ist ok, wenn ich diesen Thead für weitere Schritte einfach weiter benutze.
Ich bin in der OPNsense soweit, dass ich im Reiter "Handshakes" und "Status" gesendete und empfangene Pakete sehe. Ich kann auch unter Interfaces / Diagnostics die Geräte im Client(Netz) 3 anpingen. Aber Pingversuche von Clients aus dem Client(Netz) 1 funktionieren nicht. Daher gehe ich davon aus, dass das Routing bzw. Gateways noch nicht stimmen.
Könnt ihr mir da weiter helfen?

Danke

Grüße

Paul
Title: Re: Wireguard - Architekturfrage
Post by: chemlud on February 14, 2023, 03:48:41 pm
Gibtz denn schon FW-rules für die Tunnel?
Title: Re: Wireguard - Architekturfrage
Post by: Paul_Senger on February 14, 2023, 04:05:48 pm
Ok, was habe ich schon. Ich habe je eine Rule für das WAN und das WG Interface (siehe Screenshot). Mir ist noch ein bisschen unklar, was bei dem Eintrag "Wireguard (Group)" rein soll.
Title: Re: Wireguard - Architekturfrage
Post by: Paul_Senger on February 14, 2023, 04:09:47 pm
Achso, vielleicht sollte ich noch erwähnen. Ich habe versucht, nach folgendem Video vorzugehen
https://www.youtube.com/watch?v=RoXHe5dqCM0 (https://www.youtube.com/watch?v=RoXHe5dqCM0)