Eine Reihe zum Netzwerk Layout hier in meinem Home Lab.

Zum Verständnis das aktuelle Layout, mit dem hier ins Netz gegangen wird:

Aus dem LAN wird über einen virtuellen Router eine IP Adresse bereitgestellt. Dieser Router ist hinter einem weiteren Router, der wiederum ebenfalls DHCP verteilt und eine IP Adresse vom Speedify-Daemon erhält. Speedify ist über einen Hyper-V V-Switch am physikalischen Netz über zwei VLANs angebunden (Speedify/VM bekommt davon nichts mit). Der Router, der sowohl mit den zwei Gateways (WAN1 und WAN2) als auch mit dem Rest des Netzwerks verbunden ist, hat keinerlei weitere Aufgabe. Für die Verwaltung der aktuellen, statischen IPs von diversen Geräten ist der IPM-Router mit nur einem Interface ausgestattet - reiner DNS-Server und Routen-Geber. Alle weiteren Geräte (Router im EG und Keller) sind nur WLAN Zugriffspunkte und Switches für Endgeräte.

Dieser Aufbau hat, so wie aktuell ausgeführt, den gravierenden Nachteil, dass ich den Hyper-V Host aus dem Dachgeschoss nicht in den Keller zum Rest der Infrastruktur ziehen kann (Windows Server Failover Cluster / Storage Spaces Direct). Um dies durchführen zu können, soll das gesamte Setup stark entschlackt werden.

Hierfür soll eine Brücke zwischen den zwei WAN Gateways und dem LAN hergestellt werden - aufgrund der Beschaffenheit der zwei Gateways ist es unumgänglich auf der Brücke einen Paketfilter einzusetzen.

Auf dem Router für die Trennung läuft ein OpenWRT-System mit einem Hardware-Switch. Hier soll das Filtern zwischen den Netzen erfolgen. Nach kurzem (virtuellen) Testen erwies sich nftables als geeigneter Kandidat - iptables unterstützt das ganze zwar, ich bin mir aber nicht sicher, welche Konsequenzen das nachsich zieht.

IPTables durch nftables auf dem Router austauschen und folgendermaßen Konfiguriert:

  • Bridge Ports eth0.1 LAN1 LAN2 WAN
  • Bridge Ports eth0.2 LAN3 LAN4
  • Brücke "switch" über eth0.1, eth0.2, wlan0 und wlan1 strecken
  • nftables konfigurieren
#!/usr/sbin/nft -f
flush ruleset

table bridge filter {
        chain forward {
                type filter hook forward priority filter; policy accept;
                # Filtern von DHCPv4
                obrname "br-switch" udp sport 68 udp dport 67 drop
                # Filtern von DHCPv6
                obrname "br-switch" udp sport 546 udp dport 547 drop
                # Filtern von Router Advertisements
                iif "eth1" obrname "br-switch" icmp type router-advertisement drop
                # Filter von IPv6 Router Advertisements (danke Telekom dafür)
                iif "eth1" obrname "br-switch" icmpv6 type nd-router-advert drop
        }
       chain output {
               type filter hook output priority filter; policy accept;
               # Filtern von (eigenen) DHCP-Anfragen in Richtung WAN, diese _müssen_ über eth0.1 oder wlan0/wlan1 gehen
               oifname "eth0.2" udp sport 68 udp dport 67 drop
       }
}

Es bleibt spannend, ob sich dies so umsetzen lässt.

Nächster Beitrag