Site to Site VPN zwischen Heimnetzwerken

Crumar

Lieutenant
Registriert
Apr. 2009
Beiträge
1.009
Hallo zusammen,

ich möchte mir zwischen zwei lokalen Heimnetzen eine "Brücke" aufbauen, diese also verbinden.
Bei beiden Locations sind Raspberry PIs vorhanden (3B), die ggf. in Zukunft auch auf Version 4 geupgraded werden könnten.
Dazu habe ich mir nun überlegt das wie folgt aufzubauen:
805015

So stelle ich mir das ganze zumindest vor. Ich bin mir noch nicht ganz sicher, ob das so funktionieren kann. Aber grundsätzliche müsste ich ja sonst weiter nur statische Routen auf den beiden Routern einrichten, die jeweils ins andere Netze verweisen in dem sie auf den internen Pi zeigen, der die Pakete dann weiterrouttet?
Was brauche ich dafür alles an Software? Gehts das so überhaupt?

Hintergrund ist:
Ich möchte in den nächsten 2 Monaten mir ein (bzw. zwei) NAS anschaffen, eins an jedem Ort. Beide NAS sollen für die lokalen Clients Netzwerkstorage zur Verfügung stellen, davon lokal backups machen und diese nachts an das jeweils andere NAS über die Site to Site Verbindung replizieren. Ich weiß, dass der Upload im 152er Netz sehr gering ist, aber das kann man ändern. In Zukunft soll ggf. auch mein vServer (mit ownCloud) auf dieses NAS gebackuped werden.
Zusätzlich möchte ich natürlich gerne in dem anderen Netzwerk die Geräte fernwarten können.

Weiterer offener Punkt: Ich stelle mir vor, dass die Bandbreite der jeweiligen Verbindung max. 50 MBits beträgt, weil ja jedes Paket an Router -> Pi -> Router -> Internet geht. Da ich aber ja eh nur 40 / 6 Upload habe, ist das erstmal egal. Mit Pi 4 wäre das ja wieder egal, da alles andere bei mir GigaBit fähig ist.

  1. Spricht aus eurer Sicht etwas gegen meinen Plan?
    • Funktioniert das überhaupt mit nur einer NIC im PI?
  2. Lohnt sich Wireguard, insbesondere in Hinblick auf die Pi Performance?
  3. Benötige ich weitere Software für das Routing?
  4. Wie schaffe ich es mit zwei lokalen DNS Servern auf den PIs (PiHole!), dass ich mit .lan die Geräte sauber verwenden kann?
    • PiHoles sollen im jeweiligen Netzwerk als DHCP und DNS laufen
  5. Was muss ich sonst noch bedenken?
  6. Meiner Meinung nach dürfte dieses Konstrukt keine Einflüsse auf reguläre Internetverbindungen (Online Gaming - Ping etc.) haben?
 
Für VPN ist immer der Upload entscheidend ... und 6 Mbit/s ist für VPN halt etwas mau.

Wireguard ist gut, hat(te) jedoch Probleme mit DynDNS.
Als Alternative: OpenVPN oder www.softether.org

Crumar schrieb:
Aber grundsätzliche müsste ich ja sonst weiter nur statische Routen auf den beiden Routern einrichten, die jeweils ins andere Netze verweisen in dem sie auf den internen Pi zeigen.
Richtig

1. Nein (ja funktioniert)
2. Ja
3. Nein
4.
5.
6. Richtig, sofern VPN im Leerlauf
 
Zuletzt bearbeitet:
In der c’t 15/2019 ist ein sechsseitiger Artikel, der die Einrichtung von Wireguard-Server und -Client ganz gut für Debian und Raspbian beschreibt. Die Performanz von Wireguard ist besonders auf einem Raspi um einiges höher als mit OpenVPN.

40/6 ist eine ungewöhnliche Kombination von Down und Up in einem DSL-Tarif. Ist das DSL oder DOCSIS von einem regionalen Anbieter? Wenn DOCSIS, stelle sicher, daß wenigstens DS-Lite mit einer funktionierenden IPv6 ankommt. Grundsätzlich hat Wireguard nicht die Probleme mit v6 wie OpenVPN oder gar eine Voraussetzung von v4 auf mindestens einer Seite.
 
  • Gefällt mir
Reaktionen: tony_mont4n4
Die Einrichtung von Wireguard ist also tatsächlich eine VPN server, der andere einfach Client?

40 ist der UP in meinem DSL Tarif (100 down), den ich auf Dual Stack Full umstellen hab lassen.

6 Up ist mit 128 Mbit down ein Unitymedia Tarif, der schon länger besteht und ebenfalls noch Dual Stack Full erhalten hat.

DynDNS mache ich quasi selber über meinen eigenen vServer, das Script läuft alle 15 Minuten und funktioniert bereits. IPv4 Access über Handys geht auch darüber bereits, momentan eben per Portforwarding. Grundsätzlich würde ich gerne mit Handys in der Zukunft mich an beiden Sites anmelden können per VPN.
 
Dann hier noch das Ergebnis:

Schritt 1: Wireguard installieren (div. Anleitungen im Internet, wird sich ja in naher Zukunft ändern, sollte es in den Kernel kommen)

Dann braucht es schon fast nicht mehr viel. Auf beiden raspberry pi als root ausführen:
Bash:
mkdir /etc/wireguard
cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
vi wg0.conf
chown -R root:root /etc/wireguard/
chmod -R og-rwx /etc/wireguard/*
systemctl enable wg-quick@wg0.service
systemctl start wg-quick@wg0.service

Dann auf dem Hauptserver folgende wg0.conf:
[Interface]
Address = 192.168.Z.1/24
ListenPort = 51820
PrivateKey = <PRIVATEKEY des aktuellen Hosts>

PostUp = route add -net 192.168.Y.0/24 gw 192.168.Z.2
PostDown = route del -net 192.168.Y.0/24 gw 192.168.Z.2

[Peer]
PublicKey = <PUBLICKEY des anderen Hosts>
AllowedIPs = 192.168.Z.0/24, 192.168.Y.0/24

Auf dem anderen:
[Interface]
Address = 192.168.Z.2/24
PrivateKey = <PRIVATEKEY des aktuellen Hosts>

PostUp = route add -net 192.168.X.0/24 gw 192.168.Z.1
PostDown = route del -net 192.168.X.0/24 gw 192.168.Z.1

[Peer]
PublicKey = <PUBLICKEY des anderen Hosts>
Endpoint = <Domain oder IP (öffentlich des anderen Hosts)>
AllowedIPs = 192.168.Z.0/24, 192.168.X.0/24

# This is for if you're behind a NAT and
# want the connection to be kept alive.
PersistentKeepalive = 30

X entspricht dabei dem lokalen Subnet des Servers, Y des Clients. Z ist einfach ein gemeinsames Subnet innerhalb der Wireguard Connection.

Zum Schluss müssen noch (wenn die beiden Hosts nicht eh das Standard Gateway im Netz sind, mit anderen Worten der Router) in dem jeweiligen Router ebenfalls ein statischer Routing Eintrag gemacht werden.
Das sind in meinem Fall :
  • ClientNetz: 192.168.X.0/24 -> lokale IP des Wireguard Clients
  • ServerNetz: 192.168.Y.0/24 -> lokale IP des Wireguard Servers
Natürlich muss im Server Netz noch ein Portforwarding eingerichtet werden für den in der Host wg0.conf angegeben ListeningPort. Ggf. müssen iptables Regeln noch angepasst werden, je nach Bedarf.

Edit:
In /etc/sysctl.conf muss noch bei der Zeile net.ipv4.ip_forward=1 der Kommentar entfernt werden.

Danke allen!


Ich habe viele verschiedene Quellen verwendet, aber einiges stammt von hier:
https://www.commander1024.de/wordpress/2019/04/netze-knuepfen-mit-wireguard/

PS.: Es funktioniert soweit alles, nur von einem zweiten Router (läuft als Switch / WLAN Access Point) und von einem dritten (läuft als Switch) komme ich über diese Lösung nicht drauf. Ich gehe davon aus, dass diese Geräte generell allen Traffic droppen, der nicht aus dem selben Subnet kommt, ich daran dann also auch nichts ändern kann (außer NAT statt Routing zu verwenden).

Bandbreite kriege ich von jeweils zwei Nodes hinter den Wireguard Systemen (alle per LAN verbunden) in die eine Richtung knapp 40 Mbit/s (allerdings nur mit 3 Connections) und in die andere knapp 6 Mbit/s hin. Das ist das Maximum was beide Leitungen hergeben.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DeusoftheWired
@darky

Gute Frage, nächste Frage. Grundsätzlich mal das gleiche Analog wie bei v4.
Das heißt, RoutingPrefix / Subnet identifizieren, und eintragen. Bei mir in den AVM Fritzboxen kann ich auch für IPv6 statische Routen hinterlegen. Dann einfach nur die Allowed Sets um die jeweiligen IPv6 Bereiche erweitern (Komma getrennt hinten anfügen).

Selbst gemacht habe ich das allerdings nicht, da ich das zuhause nicht benötige.
Oder meinst du dass sich die beiden Raspis über IPv6 verbinden?
 
Ja, dass sie sich über IPv6 verbinden (zusätzlich). Kannst du da mal ein Beispiel machen?
 
Zurück
Oben