Wireguard Site2Site ohne Masquerading

darkiop

Lt. Junior Grade
Registriert
Juli 2001
Beiträge
385
Hallo zusammen,
ich habe im Zuge der nun Verfügbaren Version 7.50 für die FritzBox 7590 der DG eines meiner angebundenen Netze auf die Wireguard Funktion der FritzBox umgestellt. Grundsätzlich könnte ich auch das alte Setup weiter betreiben, allerdings hat der eingesetzte RPI als Gateway im LAN B nur ein 100MBit LAN Interface - der vorhandene Internetanschluss über die DG 200Mbit im Upload.

Da Bilder mehr sagen als Worte, zuerst mal ein Überblick:

1679217702775.png

  • Grün markiert im Schaubild sind die VPN Tunnel des Netzes 172.31.0.0/24
  • Im LAN B wurde die wg0.conf des vpn-gateway-lan-b in der Fritzbox importiert (zuvor aber das Masquerading deaktiviert, siehe wg0.conf's am Ende des Beitrags. Der WG Dienst auf vpn-gateway-lan-b wurde deaktiviert
  • vpn-server ist per IPv4/v6 aus dem Internet auf dem WG-Port erreichbar, in den Beispiel configs als example.com aufgeführt
  • Die Verbindungen funktionieren innerhalb des Netzes 172.31.0.0/24 - die VPN Tunnel werden zuverlässig aufgebaut
  • Aus dem LAN B ist die 192.168.1.30 im LAN A erreichbar
  • Im LAN C gibt es keine Routing Probleme, durch das aktivierte Masquerading sind auch alle Geräte im LAN C aus den Netzen LAN A und über vpn-hetzner erreichbar
Und nun zum Problem:

Ich kann das Netz 192.168.20.0/24 nicht von "außen", also aus dem LAN A oder auch direkt über den WG-Server vpn-hetzner erreichen. Deaktivere ich das aktuelle Setup auf der FritzBox LAN B und gehe zurück auf das alte mit dem vpn-gateway-lan-b als WG-Gateway (dann aber auch mit aktivieren Masquerading in der wg0.conf), passt das Routing.
Auf der FritzBox im LAN B sind keine Zusätzlichen Routen angelegt (hier gibt es also nur die Routen aus der wg0.conf).

Hat jemand eine Idee was mir in meinem Setup noch fehlt? Aktuell stehe ich etwas auf dem Schlauch sehe wohl den Wald vor lauter Bäumen nicht :)

Hier noch die wg0.conf's der beteiligten Akteure:

Code:
[Interface]
Address = 172.31.0.1/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# pve-ct-vpn-hetzner
[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 172.31.0.4/32, 192.168.1.0/24, 10.4.0.0/24, 10.3.1.11/32, 10.3.1.13/24

# vpn-gateway-lan-b
[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 172.31.0.5/32, 192.168.20.0/24

# vpn-gateway-lan-c
[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 172.31.0.6/32, 192.168.30.0/24

Code:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.proxy_arp= 1

Code:
[Interface]
Address = 172.31.0.4/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE

[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 172.31.0.0/24, 192.168.2.0/24, 192.168.20.0/24, 192.168.30.0/24
Endpoint = example.com:51820
PersistentKeepalive = 25

Code:
[Interface]
Address = 172.31.0.5/24
ListenPort = 51820
PrivateKey =
#PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 172.31.0.0/24, 192.168.1.30/32
Endpoint = example.com:51820
PersistentKeepalive = 25

Code:
[Interface]
Address = 172.31.0.6/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 172.31.0.0/24, 192.168.1.30/32
Endpoint = example.com:51820
PersistentKeepalive = 25

Code:
net.ipv4.ip_forward = 1
 
Ich kann mir das leider jetzt nicht im Kopf komplett durchdenken :D
Aber habe ein ähnliches setup (ohne zentralen server sondern ptp VPN mit dyndns)

Wichtig ist, dass in den statischen routen der FB die anderen 2 subnetzte mit next Hop Hetzner vpn eingerichtet sind.
Da bin ich mir nicht ganz sicher ob das per "Allowed IPs" schon reicht.

Ansonsten mach mal tracert "adresse" je nachdem ob da destination host unreachable oder andere fehler kommen weißt du ja ab welchem host es nicht mehr weitergeht, und vermutlich die routen kaputt sind.
 
darkiop schrieb:
Grundsätzlich könnte ich auch das alte Setup weiter betreiben, allerdings hat der eingesetzte RPI als Gateway im LAN B nur ein 100MBit LAN Interface - der vorhandene Internetanschluss über die DG 200Mbit im Upload.
Und du bist dir sicher, dass die Fritzbox da schneller ist?

Qowy schrieb:
Wichtig ist, dass in den statischen routen der FB die anderen 2 subnetzte mit next Hop Hetzner vpn eingerichtet sind.
Nein. Wenn VPN auf der Fritzbox läuft, braucht man gar keine statischen Routen. Wenn VPN auf einem RPI läuft, dann braucht man statische Routen, der next Hop ist aber das lokale VPN Gateway. Aber das ist unabhängig vom Problem in diesem Thread.

Das Problem, was du hast, ist folgendes: Die Fritzbox arbeitet nicht mit einem Transfernetz. Sie macht Proxy ARP für die VPN Clients. Also das, was du mit 172.31.x.y machst, ist nicht möglich. Beachte das hier:
https://avm.de/service/vpn/wireguard-vpn-zwischen-fritzbox-und-anderem-router-einrichten/
Tragen Sie beim Erstellen der WireGuard-Verbindung für die FRITZ!Box keine IP-Adresse aus einem Transfernetz (Intermediate-Adresse), sondern die lokale IP-Adresse der FRITZ!Box ein (z.B. 192.168.20.1, Subnetzmaske 255.255.255.0).
Also: Man darf kein Transfernetz verwenden, sondern muss das jeweils lokale Netz der Fritzbox eintragen. Damit ist aber auch klar, dass man nur eine Fritzbox mit dem Hetzner VPS verbinden kann - spätestens bei der zweiten Fritzbox kann man diese Voraussetzung nicht mehr erfüllen.

Ich glaube, dein Setup lässt sich mit dem Wireguard der Fritzboxen nicht umsetzen. Die Boxen nutzen kein Transfernetz, sondern machen Proxy ARP für die VPN Clients.

//Nachtrag: Was du ggf. probieren könntest, sind drei unabhängige VPN Verbindungen auf dem VPS mit jeweils einer Fritzbox, und der VPS routet dazwischen.
 
riversource schrieb:
Nein. Wenn VPN auf der Fritzbox läuft, braucht man gar keine statischen Routen. Wenn VPN auf einem RPI läuft, dann braucht man statische Routen, der next Hop ist aber das lokale VPN Gateway. Aber das ist unabhängig vom Problem in diesem Thread.

[...]

//Nachtrag: Was du ggf. probieren könntest, sind drei unabhängige VPN Verbindungen auf dem VPS mit jeweils einer Fritzbox, und der VPS routet dazwischen.
Ah ich hatte eigentlich gedacht, das er das mit 3 einzelnen Verbindungen auf den VPS und den als Router nimmt macht. (Und da braucht man dann aber schon die Routen, da die fritzbox ja nicht weiß, dass das "übernächste" subnet hinter dem VPS liegt routing technisch. (außer natürlich der VPS wäre das default Gateway)

Das hab ich beim überfliegen dann falsch verstanden.
 
Danke für eure Antworten!

riversource schrieb:
Und du bist dir sicher, dass die Fritzbox da schneller ist?
Sicher noch nicht, die Messung mit iperf steht noch aus. Bin dann aber über das Routing Problem gestolpert und hab das erstmal hinten an gestellt ;)
riversource schrieb:
Das Problem, was du hast, ist folgendes: Die Fritzbox arbeitet nicht mit einem Transfernetz. Sie macht Proxy ARP für die VPN Clients. Also das, was du mit 172.31.x.y machst, ist nicht möglich. Beachte das hier:
https://avm.de/service/vpn/wireguard-vpn-zwischen-fritzbox-und-anderem-router-einrichten/
Schade das hier AVM einen eigenen Weg geht .... :)
riversource schrieb:
Also: Man darf kein Transfernetz verwenden, sondern muss das jeweils lokale Netz der Fritzbox eintragen. Damit ist aber auch klar, dass man nur eine Fritzbox mit dem Hetzner VPS verbinden kann - spätestens bei der zweiten Fritzbox kann man diese Voraussetzung nicht mehr erfüllen.
Also das wäre dann in diesem Setup auch die 192.168.20.1 (also die lokale Adresse der FritzBox im LAN B).
Mir ist aber nicht klar wieso keine zweite auf die Art funktionieren würde, die andere FritzBox im LAN C hat ja die 192.168.30.1 ?
riversource schrieb:
//Nachtrag: Was du ggf. probieren könntest, sind drei unabhängige VPN Verbindungen auf dem VPS mit jeweils einer Fritzbox, und der VPS routet dazwischen.
Du meinst damit
Code:
Hetzner VPS > LAN A: wg0
Hetzner VPS > LAN B: wg1
Hetzner VPS > LAN C: wg2
oder?
Ergänzung ()

Qowy schrieb:
Ah ich hatte eigentlich gedacht, das er das mit 3 einzelnen Verbindungen auf den VPS und den als Router nimmt macht.
Nein, aktuelle läuft das alles über ein Netz.

Den Hetzner VPS gibt es Hauptsächlich auch als IPv4 Gateway von außen ... DS Lite der DG sei Dank - und somit konnte ich auch 2 Anforderungen (Netze verbinden, Zugriff haben) auf einmal lösen.

Denkbar wäre wohl auch direkt Verbindungen zwischen LAN B und LAN A und LAN C und LAN A über Wireguard@FritzBox. Allerdings komme ich dann im LAN A auf der FritzBox, also im Netz 192.168.10.0, vor meinem eigentlichen Netz das die UDM-P bereistellt, an - wäre wieder eine Baustelle mehr ;)
 
darkiop schrieb:
Allerdings komme ich dann im LAN A auf der FritzBox, also im Netz 192.168.10.0, vor meinem eigentlichen Netz das die UDM-P bereistellt, an - wäre wieder eine Baustelle mehr
Das Problem hast du immer, egal welchen Weg du beschreitest. Das gibt es heute mit den RPIs auch schon.
 
Zurück
Oben