Ausgangslage
- Fritzbox A (3490)
- Fritzbox B (7590)
- Firmware 8.20
- Mit
- Per klassischem -VPN mit A verbunden → funktioniert
- Fritzbox C (7590)
- Firmware vermutlich aktuell
- Kein
- Soll auf bestimmte Hosts hinter A zugreifen
- Darf keinen Zugriff auf Netz von B bekommen
- Netz von B darf keinen Zugriff auf Netz von C bekommen
- Netz von A darf auf keines der beiden anderen Netze zugreifen
Kurz:
- B → A (Vollzugriff)
- C → A (Teilzugriff, nur bestimmte Hosts)
- B ↔ C (kein Zugriff)
- A → B/C (kein Zugriff)
Was mit Standard-Fritzbox-VPN nicht geht
- Die eingebaute VPN-Funktion der -Fritzboxen (IPSec) kann nur Site-to-Site mit vollständiger Routenweitergabe.
- Sie kann keine Firewall-/Routing-Policies: Wenn zwei Netze per Site-to-Site verbunden sind, routet sie standardmäßig den gesamten Traffic zwischen ihnen.
- Es gibt kein Policy-Based Routing, keine Access Control Lists, keine Paketfilter zwischen VPNs.
Daher ist die gewünschte Trennung
mit Bordmitteln allein nicht umsetzbar.
Aber: Mit lässt sich das erzwingen.
🛠 Lösungskonzept: A als VPN-Zentralrouter mit Firewall
Da
A schon Freetz und WireGuard hat, kannst du A so konfigurieren, dass:
- A für B per IPSec und für C per WireGuard ein Gateway ist.
- Auf A richtest du Routing und Firewall-Regeln (iptables)so ein, dass:
- Verbindungen aus B nur zu A dürfen
- Verbindungen aus C nur zu bestimmten Hosts in A dürfen
- Verbindungen aus A ins VPN komplett blockiert werden
- Verbindungen zwischen B und C blockiert werden
Vorteil: Du brauchst auf B und C nichts Komplexes, nur die VPN-Anbindung — die komplette Steuerung macht A.
Beispiel-Setup (schematisch)
Netzwerke
Box | LAN-Netz | VPN-Verbindung | Besonderheiten |
---|
A | 192.168.1.0/24 | WireGuard & IPSec | zentrale Firewall |
B | 192.168.2.0/24 | IPSec zu A | darf nur auf 192.168.1.0/24 |
C | 192.168.3.0/24 | WireGuard zu A | darf nur auf 192.168.1.100 & .101 |
Umsetzung auf Fritzbox A
- WireGuard-Tunnel für C einrichten
- über Freetz-Weboberfläche ein WireGuard-Peer erstellen
- AllowedIPs =
192.168.3.0/24
- IPSec-Tunnel für B beibehalten
- funktioniert bereits
- Routen nach
192.168.2.0/24
sind vorhanden
- Firewall-Regeln mit iptables
Code:
# Annahme: wg0 ist WireGuard-Interface für C, ipsec0 ist IPSec-Interface für B
# alles standardmäßig verbieten
iptables -P FORWARD DROP
# B (192.168.2.0/24) darf auf alles im Netz von A
iptables -A FORWARD -s 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT
# C (192.168.3.0/24) darf nur auf bestimmte Hosts
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.1.100 -j ACCEPT
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.1.101 -j ACCEPT
# Verbiete alles von A nach B oder C
iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.2.0/24 -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.3.0/24 -j DROP
# Verbiete direkten Verkehr zwischen B und C
iptables -A FORWARD -s 192.168.2.0/24 -d 192.168.3.0/24 -j DROP
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.2.0/24 -j DROP
- IP-Forwarding aktivieren (falls nicht)
Code:
echo 1 > /proc/sys/net/ipv4/ip_forward
- Statische Routenfür B und C auf A einrichten
- In der Freetz-Umgebung unter
/etc/network/interfaces
oder /etc/iproute2/rt_tables
- Oder via Weboberfläche statisch eintragen
Wichtige Hinweise
- Diese Konfiguration muss auf A persistent gemacht werden (z. B. über Freetz-Startskripte), da iptables nach Neustart zurückgesetzt wird.
- Box C braucht kein Freetz, nur einen WireGuard-Client (z. B. auf einem einzelnen Host hinter C, falls keine Freetz-Integration möglich ist).
- Alternativ kann man auf C ein separates Gerät (Raspberry Pi, Router) mit WireGuard nutzen, um die Fritzbox nicht modifizieren zu müssen.
Ergebnis
- B sieht A (vollständig)
- C sieht nur bestimmte Hosts in A
- B sieht C nicht
- C sieht B nicht
- A sieht niemanden (keine ausgehenden Regeln erlaubt)