Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Support Speziell: mehrere Fritzboxen per VPN verbinden

iXware

Newbie
Registriert
26. Mai 2011
Beiträge
15
Reaktionspunkte
5
Punkte
235
Hallo zusammen,

ich habe ein für mich spezielles Problem, bei dessen Lösung ich Hilfe benötige.

folgende Situation:
Fritzbox A (3490 V.7.31- mit Freetz + wireguard)
Fritzbox B (7590 V. 8.20 - mit Freetz)
Fritzbox C (7590 - Firmware unbekannt, vermutilich aktuell, kein Freetz)

IPSec-VPN zwischen Fritzbox A und Fritzbox B funktioniert

Ziel:
das Netz hinter Fritzbox C soll auf das Netz hinter Fritzbox A zugreifen können (am liebsten nur auf bestimmte Hosts), aber auf keinen Fall auf das Netz hinter Fritzbox B. Und das Netz hinter Fritzbox B soll auch nicht auf das Netz hinter Fritzbox C zugreifen können aber auf das komplette Netz hinter Fritzbox A. Das Netz hinter Fritzbox A darf aber auf keinen Fall auf eins der anderen Netze zugreifen..

Frage: ist das überhaupt mit den Fritzboxen möglich? Wenn ja, wie kann ich das erreichen?
 
Hallo!

Danke, dass du das so genau beschreibst — das ist tatsächlich eine eher ungewöhnliche VPN-Topologie, und mit , und / muss man dabei ein paar Eigenheiten beachten.
Ich gehe Schritt für Schritt durch, was möglich ist und was nicht — und wie man es trotzdem erreichen kann.

🧠 Ausgangslage​

  • Fritzbox A (3490)
    • Firmware 7.31
    • Mit und
  • 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​

BoxLAN-NetzVPN-VerbindungBesonderheiten
A192.168.1.0/24WireGuard & IPSeczentrale Firewall
B192.168.2.0/24IPSec zu Adarf nur auf 192.168.1.0/24
C192.168.3.0/24WireGuard zu Adarf nur auf 192.168.1.100 & .101

⚙️ Umsetzung auf Fritzbox A​

  1. WireGuard-Tunnel für C einrichten
    • über Freetz-Weboberfläche ein WireGuard-Peer erstellen
    • AllowedIPs = 192.168.3.0/24
  2. IPSec-Tunnel für B beibehalten
    • funktioniert bereits
    • Routen nach 192.168.2.0/24 sind vorhanden
  3. 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
  4. IP-Forwarding aktivieren (falls nicht)
    Code:
    echo 1 > /proc/sys/net/ipv4/ip_forward
  5. 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)
 
Zuletzt bearbeitet:
wahnsinn... vielen Dank. Mit so einer Antwort hätte ich jetzt als Erste Antwort nicht gerechnet. Dann werde ich mich mal daran machen, das auszuprobieren. Ich sehe aber eventuell noch ein Problem. ich kann die Netzwerkadressen von Box B und C nicht beeinflussen. Es könnte vielleicht ein Problem geben, wenn Box B und C das gleiche Netz verwenden...
 
Das ist tatsächlich ein Knackpunkt, den man bei VPN-Topologien mit oft übersieht:

Problem: Überlappende IP-Netze bei VPNs​

Wenn B und C zufällig dasselbe LAN-Netz verwenden (z. B. beide 192.168.178.0/24, was bei -Boxen Standard ist), passiert Folgendes:
  • Sobald beide per VPN an A angebunden sind,
    weiß A nicht, an welches VPN-Peer es Pakete für 192.168.178.x senden soll.
  • Das Routing bricht zusammen, weil überlappende Netze nicht unterscheidbar sind.
Und: Weder die eingebaute -Implementierung noch können auf der Fritzbox „NAT auf Subnetze“ machen — zumindest nicht out of the box.

Lösungen / Workarounds​

Du hast drei Optionen, je nach Aufwand:


Beste Lösung: Netz anpassen (wenn irgendwie möglich)​


Wenn du doch irgendwie Zugriff auf die Fritzbox-Oberfläche von B und/oder C bekommst:
  • Box B: z. B. 192.168.2.0/24
  • Box C: z. B. 192.168.3.0/24

➡️ dann funktioniert alles wie in meiner ersten Anleitung ohne Tricks.
Das ist technisch die sauberste und stabilste Variante.

Alternative: VPN-Tunnel mit NAT (Masquerading)​

Falls du die LAN-Netze von B und C nicht ändern kannst, kannst du auf A mit und eine Art NAT-Router für die VPN-Tunnel bauen.

Beispiel:
  • B bleibt bei 192.168.178.0/24,
  • C auch 192.168.178.0/24
  • Auf A wird aber der Traffic aus B beim Eintreten ins VPN auf ein fiktives Netz z. B. 10.10.2.0/24 genattet
  • Traffic aus C wird auf 10.10.3.0/24 genattet
Damit sehen sich die Netze auf A plötzlich als verschieden:

# Beispiel für B (IPSec-Tunnel)
iptables -t nat -A POSTROUTING -s 192.168.178.0/24 -o ipsec0 -j NETMAP --to 10.10.2.0/24 # Beispiel für C (WireGuard-Tunnel) iptables -t nat -A POSTROUTING -s 192.168.178.0/24 -o wg0 -j NETMAP --to 10.10.3.0/24
  • Dann schreibst du Routing- und Firewallregeln gegen 10.10.2.0/24 und 10.10.3.0/24.
  • Für die Geräte hinter B und C sieht alles normal aus, aber A sieht sie unter unterschiedlichen Netzen.
Hinweis: NETMAP ist ein spezielles Target von , das genau für so etwas gemacht ist. Falls es nicht verfügbar ist, ginge auch SNAT/MASQUERADE, allerdings verlierst du dann die Quell-IP der einzelnen Geräte.

Minimalvariante: nur einzelne Hosts per VPN​

Wenn du nur einen bestimmten Host hinter C brauchst, könntest du auch statt des ganzen Netzes nur diesen Host per -Client direkt an A anbinden — dann gibt es keine Netzüberlappung.
(Das ist z. B. oft mit einem kleinen machbar.)

Empfehlung​

Wenn du kannst:
  • Versuche erst, die Netze auf B und C anzupassen (Variante 🅐).
  • Wenn das wirklich nicht geht, machen wir auf A eine NAT/NETMAP-Konfiguration (Variante 🅑).
 
jetzt hab ich nur ein Problem: wo bekomm ich IP-Tables her? ich finde das Paket im menuconfig von freetz-ng nicht...
 
Wende dich bitte an den Entwickler fda

@iXware Hab hier mal was zum Lesen für dich.

dann bauen wir jetzt für deine (Box A) mit eine saubere -Konfiguration.

Annahmen für dieses Beispiel​

Du kannst diese Werte anpassen — wichtig ist nur, dass sie konsistent bleiben:
GerätRolleInterface auf ASubnetzZugriff auf ...
A (3490)Zentrale VPN-Boxbr-lan192.168.1.0/24nichts (darf nicht raus)
B (7590)IPSec-VPNipsec0192.168.2.0/24alles in 192.168.1.0/24
C (7590)WireGuard-VPNwg0192.168.3.0/24nur 192.168.1.100 & .101
⚠️ Falls B und C dasselbe Netz verwenden (z. B. 192.168.178.0/24), bauen wir später ein NAT/NETMAP ein — aktuell gehen wir erstmal von unterschiedlichen Netzen aus.

nftables-Regeln (/etc/nftables.conf oder Startskript)​

Code:
#!/bin/sh
# /etc/init.d/vpnfirewall (ausführbar machen mit chmod +x)

nft -f - <<'EOF'
flush ruleset

table inet vpnfilter {

  chain forward {
    type filter hook forward priority 0; policy drop;

    # B -> A: alles erlaubt
    ip saddr 192.168.2.0/24 ip daddr 192.168.1.0/24 accept

    # C -> A: nur bestimmte Hosts erlaubt
    ip saddr 192.168.3.0/24 ip daddr 192.168.1.100 accept
    ip saddr 192.168.3.0/24 ip daddr 192.168.1.101 accept

    # Alles andere: DROP (greift durch policy drop)
  }

  chain input {
    type filter hook input priority 0; policy accept;
  }

  chain output {
    type filter hook output priority 0; policy accept;
  }
}

# Optional: IPv4 Forwarding einschalten
sysctl -w net.ipv4.ip_forward=1
EOF

⚙️ Einbindung in​

  1. nftables-Paket aktivieren
    • make menuconfig
    • unter Packages → Networking → nftables[ * ] nft auswählen
    • Firmware bauen & flashen
  2. Script auf der Box ablegen
    Code:
    mkdir -p /etc/init.d
    vi /etc/init.d/vpnfirewall
    # (Inhalt von oben einfügen)
    chmod +x /etc/init.d/vpnfirewall
  3. Beim Start automatisch laden
    • In Freetz-Weboberfläche unter System → Startskripte den Pfad /etc/init.d/vpnfirewall eintragen
    • oder manuell Link setzen:
      Code:
      ln -s /etc/init.d/vpnfirewall /etc/rc.d/S99vpnfirewall

Ergebnis​

  • Box B (192.168.2.0/24) darf alles in 192.168.1.0/24 sehen.
  • Box C (192.168.3.0/24) darf nur 192.168.1.100 und .101 erreichen.
  • Jeglicher Datenverkehr zwischen B und C wird geblockt (weil Policy DROP).
  • Box A selbst kann nicht in B oder C kommunizieren (es gibt keine Regeln dafür).

Nächster Schritt (optional)​

Falls bei dir B und C tatsächlich dasselbe Netz benutzen (z. B. 192.168.178.0/24), machen wir als nächsten Schritt eine NAT/NETMAP-Schicht, damit A sie trotzdem unterscheiden kann.

ps. Eventuelle Fehler vorbehalten.
 
Zuletzt bearbeitet:
Zurück
Oben