Ich habe zwei Bridges, br-lan und br-row (diese soll VLAN für Gast und IoT bereitstellen), das ganze soll dann auch analog ins WLAN (soweit bin ich aber noch nicht).
Aus den zwei Bridges hab ich nun 3 Interfaces (LAN, IoT, Gast) entsprechend auf Firewall Zones.
Bei der Firewall krankt es mir am Verständnis und irgendwie bekomme ich die Logik nicht ins Hirn (egal wie viele Videos ich schaue, sind vielleicht auch einfach die Falschen!?)
Was möchte ich eigentlich erreichen?
Im LAN inkl. WLAN sollen alle ‚normalen‘ Geräte hängen: PC, Smartphones, Synology Backup-NAS, Heim-Server (mit HomeAssistant, Pihole, usw.)
Im Gast sollen sich die Gäste tummeln und Verbindung zur Arbeit mittels VPN-Einwahl
Im IoT sollen sich unterschiedliche Geräte befinden, die brauchen nicht zwingend Zugriff auf WAN (wie bspw. Shellys) aber mitunter aber auch doch (FireTV, Sonos, …) und der Heim-Server soll Zugriff auf diese haben
Ich bekomme es nicht hin, dass ich die IoT-Zone trenne in Bereiche mit WAN zugelassen und blockiert. Oder sollte ich das besser über zwei Zones machen? Ist der Aufbau wie angedacht überhaupt sinnvoll?
Achso, genereller Aufbau:
FTTH-Modem — FB 7490 — OpenWRT
(eventuell verbleibt der Pihole auch an der FB über einen zweiten NIC)
Hast du die Sachen händisch in die Konfigurationsdateien eingetragen?
Ich habe noch nicht alles durchgelesen, aber da sind so viele Dinge falsch, dass mich wundert, dass OpenWRT das geschluckt hat ohne zu rebellieren. An deiner Stelle würde ich das Ding zurücksetzen und noch mal mit den Verbesserungsvorschlägen von vorne konfigurieren. Als Anfänger am Besten alles über LuCI konfigurieren. Hier ein paar Dinge die mir aufgefallen sind:
Du hast zwei Bridges die Überschneidungen bei den LAN-Ports haben. Das funktioniert nicht. Am Besten du machst eine große Bridge über alle LAN-Ports (LAN 1-5) und segmentierst darin nur via VLANs.
Bei den defaults würde ich input und forward entweder auf reject oder drop setzen, aber nicht auf accept.
Du hast hier zwei Zonen bei denen das selbe Interface eingetragen ist. Es ist damit völlig unklar ist, welche Zonenregeln dann für das Interface gelten. Du kannst mehrere Interfaces in eine Zone packen, aber nicht mehrere Zonen für ein Interface setzen.
Es ist nur Port 67 notwendig für Zugriff auf den DHCP server. Port 68 ist nur auf Clients wichtig.
Warum ist Output auf Reject? Macht mMn die Sache nur unnötig kompliziert, bei kaum Sicherheitsgewinn. Es gibt nur wenig Anwendungsfälle, wo das Sinn macht.
Hier könntest du dir überlegen, ob es nicht Sinn macht einen DNS-Server mit Port-Forwarding zu erzwingen, falls du sicherstellen willst, das dein DNS-Server verwendet wird.
Nein, alles über luci. Die zwei Bridges hatte hoerli in seinem Tutorial so angelegt, das hab ich daraus übernommen. Die Überschneidung beim LAN1 hatte ich mir so überlegt, damit ich über diesen Port über einen Switch alle Netzwerke im Haus verteilen kann. Die Zuordnung LAN3+4 auf internes Netz und LAN4 auf VLAN20 und LAN 5 auf VLAN30 zum testen.
Das mit der ‚lan_to_IoT‘ hatte ich mir schon gedacht. IoT muss dann als forward in lan, damit ich vom lan auf IoT zugreifen kann, richtig?
Zur IoT-Zone und Config des DNS hänge ich ja. Das ist meine eingangs gestellte Frage: Wie kann ich in der IoT-Zone Geräten erlauben entweder auf WAN zuzugreifen oder sie davon auszusperren?
Wenn ich das so machen, benötige ich aber auch zwingend in der LAN-Zone alles auf ‚accept‘, weil ich mich sonst aussperre, korrekt?
In seinem Video zu Netzwerkbrücken habe ich keine Überschneidung gesehen. Mach es so wie ich es gesagt habe. Eine große Bridge und dann VLAN-Filtering zur Segmentierung. Das hat keine nennenswerten Nachteile und den Vorteil, dass eine Erweiterung deines Netzwerkes mit anderen VLAN-fähigen Geräten (z.B. managed switches, APs, server, …) deutlich einfacher ist.
Geht so aber nicht.
Eine Zone benötigst du mit input auf accept zum Managen des Routers
Du benötigst inter-zone forwarding von der lan zone zur IoT zone. Vermutlich meinst du das Richtige.
Du musst schauen, dass du deine unzulässigen Konfigurationen los wirst, bzw. nochmal die Basics anschaust, damit du erkennst, warum manche Dinge überhaupt falsch sind.
Bezüglich der Wahl der Segmentierung, musst du dir überlegen welche Geräte gleiche oder zumindest ähnliche Berechtigungen zur Kommunikation haben sollen und ungehindert miteinander kommunizieren dürfen, die steckst du dann in eine eigene Firewallzone.
Eine Segmentierung könnte so aussehen:
Die beiden Server würde ich in eine eigene ‚server‘ zone packen.
Je nach Anzahl der Geräte kann es Sinn machen die IoT-Zone in zwei Firewallzonen aufzuteilen, eine mit WAN-Zugriff, eine ohne. Man kann auch eine gemeinsame Zone verwenden und IP/MAC-spezifische Regeln verwenden, aber das ist nicht so sicher wie eigene Firewallzonen. Ich würde ersteres wählen, bei der Anzahl an Geräten die du andeutest.
Danke erneut. Ich werde mich heute Abend an einen Reset machen und eine neue Einrichtung starten.
Kennst du, oder jemand anderes der gerade zufällig mitliest, ein gutes Tutorial zum entlang hangeln? Es gibt ja scheinbar nicht den einen Weg in OpenWRT um zum Ziel zu kommen. Aber wenn ich schon vorher falsch abbiege, wie ja scheinbar geschehen, dann würd’ ich ungern wieder von vorn anfangen.
… nach ein paar Stunden:
So schaut meine aktuelle Config aus und es scheint zumindest erstmal zu funktionieren.
cat /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix '****::/48'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'lan5'
config device
option name 'lan1'
option macaddr '****:ce'
config device
option name 'lan2'
option macaddr '****:ce'
config device
option name 'lan3'
option macaddr '****:ce'
config device
option name 'lan4'
option macaddr '****:ce'
config device
option name 'lan5'
option macaddr '****:ce'
config interface 'lan'
option device 'br-lan.10'
option proto 'static'
option ipaddr '10.1.10.1'
option netmask '255.255.255.0'
option ip6assign '60'
config device
option name 'eth1'
option macaddr '****:cc'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
config interface 'wan6'
option device 'eth1'
option proto 'dhcpv6'
config bridge-vlan
option device 'br-lan'
option vlan '10'
list ports 'lan1'
list ports 'lan2'
config bridge-vlan
option device 'br-lan'
option vlan '20'
list ports 'lan1:t'
list ports 'lan3'
config bridge-vlan
option device 'br-lan'
option vlan '30'
list ports 'lan1:t'
list ports 'lan4'
config bridge-vlan
option device 'br-lan'
option vlan '90'
list ports 'lan1:t'
list ports 'lan5'
config interface 'IoTnet'
option proto 'static'
option device 'br-lan.20'
option ipaddr '10.1.20.1'
option netmask '255.255.255.0'
config interface 'IoTnot'
option proto 'static'
option device 'br-lan.30'
option ipaddr '10.1.30.1'
option netmask '255.255.255.0'
config interface 'Guest'
option proto 'static'
option device 'br-lan.90'
option ipaddr '10.1.90.1'
option netmask '255.255.255.0'
config interface 'Server'
option proto 'static'
option device 'br-lan.20'
option ipaddr '10.1.20.1'
option netmask '255.255.255.0'
cat /etc/config/firewall
config defaults
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option synflood_protect '1'
option drop_invalid '1'
config zone
option name 'wan'
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option masq '1'
option mtu_fix '1'
list network 'wan'
list network 'wan6'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
list network 'lan'
config forwarding
option src 'lan'
option dest 'wan'
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'
config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-IPSec-ESP'
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'
config rule
option name 'Allow-ISAKMP'
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'
config zone
option name 'IoTnet'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
list network 'IoTnet'
config zone
option name 'IoTnot'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
list network 'IoTnot'
config zone
option name 'Guest'
option input 'DROP'
option output 'ACCEPT'
option forward 'REJECT'
list network 'Guest'
config forwarding
option src 'lan'
option dest 'IoTnet'
config forwarding
option src 'lan'
option dest 'IoTnot'
config forwarding
option src 'IoTnet'
option dest 'wan'
config forwarding
option src 'Guest'
option dest 'wan'
config rule
option name 'Guest DHCP and DNS'
option src 'Guest'
option dest_port '53 67 68'
option target 'ACCEPT'
config rule
option name 'IoTnet DHCP and DNS'
option src 'IoTnet'
option dest_port '53 67 68'
option target 'ACCEPT'
config rule
option name 'IoTnot DHCP'
list proto 'udp'
option src 'IoTnot'
option dest_port '67 68'
option target 'ACCEPT'
Habe mich erstmal gegen eine eigene Server-Zone entschieden, da die Server aktuell hinter einem unmanaged Switch hängen und ich somit über LAN1 und VLAN10 als untagged diese hoffentlich so eingebunden bekomme.
Das konnte ich noch nicht nachvollziehen. Was genau meinst du damit?
Zum Pihole und DNS: Aktuell hab ich den Pihole so eingebunden, wie Mike es hier beschreibt (https://www.kuketz-blog.de/pi-hole-einrichtung-und-konfiguration-mit-fritzbox-adblocker-teil1/). Ich würde nun gern aber auch DNS over TLS nutzen. Wie sollte ich am besten vorgehen?
Mein aktueller Gedanke zum Start wäre den PiHole (mit seiner festen IP aus dem VLAN10) als Upstream-DNS in die wan/wan6 interfaces zu hängen?!
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix '****::/48'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'lan5'
config device
option name 'lan1'
option macaddr '****:ce'
config device
option name 'lan2'
option macaddr '****:ce'
config device
option name 'lan3'
option macaddr '****:ce'
config device
option name 'lan4'
option macaddr '****:ce'
config device
option name 'lan5'
option macaddr '****:ce'
config interface 'lan'
option device 'br-lan.10'
option proto 'static'
option ipaddr '10.1.10.1'
option netmask '255.255.255.0'
option ip6assign '60'
config device
option name 'eth1'
option macaddr '****:cc'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
config interface 'wan6'
option device 'eth1'
option proto 'dhcpv6'
config bridge-vlan
option device 'br-lan'
option vlan '10'
list ports 'lan1'
list ports 'lan2'
config bridge-vlan
option device 'br-lan'
option vlan '20'
list ports 'lan1:t'
list ports 'lan3'
config bridge-vlan
option device 'br-lan'
option vlan '30'
list ports 'lan1:t'
list ports 'lan4'
config bridge-vlan
option device 'br-lan'
option vlan '90'
list ports 'lan1:t'
list ports 'lan5'
config interface 'IoTnet'
option proto 'static'
option device 'br-lan.20'
option ipaddr '10.1.20.1'
option netmask '255.255.255.0'
config interface 'IoTnot'
option proto 'static'
option device 'br-lan.30'
option ipaddr '10.1.30.1'
option netmask '255.255.255.0'
config interface 'Guest'
option proto 'static'
option device 'br-lan.90'
option ipaddr '10.1.90.1'
option netmask '255.255.255.0'
Port 68 hab ich entfernt, Protokoll steht in luci auf TCP+UDP wird aber via cat Auszug nicht angezeigt.
/etc/config/firewall
config defaults
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option synflood_protect '1'
option drop_invalid '1'
config zone
option name 'wan'
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
option masq '1'
option mtu_fix '1'
list network 'wan'
list network 'wan6'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
list network 'lan'
config forwarding
option src 'lan'
option dest 'wan'
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'
config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-IPSec-ESP'
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'
config rule
option name 'Allow-ISAKMP'
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'
config zone
option name 'IoTnet'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
list network 'IoTnet'
config zone
option name 'IoTnot'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
list network 'IoTnot'
config zone
option name 'Guest'
option input 'DROP'
option output 'ACCEPT'
option forward 'REJECT'
list network 'Guest'
config forwarding
option src 'lan'
option dest 'IoTnet'
config forwarding
option src 'lan'
option dest 'IoTnot'
config forwarding
option src 'IoTnet'
option dest 'wan'
config forwarding
option src 'Guest'
option dest 'wan'
config rule
option name 'Guest DHCP and DNS'
option src 'Guest'
option dest_port '53 67'
option target 'ACCEPT'
config rule
option name 'IoTnet DHCP and DNS'
option src 'IoTnet'
option dest_port '53 67'
option target 'ACCEPT'
config rule
option name 'IoTnot DHCP'
list proto 'udp'
option src 'IoTnot'
option dest_port '67'
option target 'ACCEPT'
config redirect 'dns_int'
option name 'Intercept-DNS lan'
option src 'lan'
option src_dport '53'
option proto 'tcp udp'
option target 'DNAT'
option family 'any'
config redirect
option target 'DNAT'
option name 'Intercept-DNS Guest'
option family 'any'
option src 'Guest'
option src_dport '53'
Ich hab nun Adguard Home unter 10.1.10.1 laufen, nach Anleitung von OpenWRT (https://openwrt.org/docs/guide-user/services/dns/adguard-home).
Irgendwie bekommen aber nun alle VLAN außer des VLAN10 keinen DNS-Server mehr zugewiesen. Egal was ich auch probiere, ich bekomme es nicht ans Laufen. Wo ist denn nun schon wieder mein Denkfehler?