Neuaufbau OPNsense mit Multi-WAN im HA fürs Homelab

Started by Shihatsu, February 04, 2025, 11:52:13 AM

Previous topic - Next topic
Moin, ich bin gerade dabei mein OPNsense setup neu zu machen.

Mein Ziel ist: MultiWAN mit HA. Erstmal das MultiWAN als Failover, gerne später (wenn ich von LTE auf 5G gewechselt bin) als Loadbalancing.

Die primäre Sense läuft virtualisiert, die Backup-Sense ist in Hardware und wird eigentlich nur angeschmissen wenn ich sie brauche - etwaige Loss of Service bis die hochgefahren ist nehme ich in Kauf (Kirche im Dorf lassen und so...).


Das bisherige (und zukünftige physische) Setup seht ihr im Attachement netzwerk_alt_carp.png

Ich hab seid einiger Zeit aber kein Multi-GW mehr am Laufen, da ich damit auf manchen Clients immer wieder auf dem falschen GW landete und bei einigen Clients einfach DNS nicht so wollte. Ich hatte auch immer wieder Probleme mit einem meiner VLANs und zu allem Überfluss nutze ich noch eine .local domain.


Ziele sind also:

  • Dual WAN mit Failover Aufbau
  • Nutzung von 10 VLANs
  • Bereitstellung von 3 VLANS als WLAN
  • DHCP für alle Netze (außer VLAN 10 aka Management LAN)
  • mDNS Repeater für einfachen Airprint Druck
  • DNS im gesamten Netzwerk inklusive der Sense selber nur via Unbound
  • Alles was nicht von selber die Sense als DNS nutzt soll geblockt werden (vergleiche fester google-DNS-Fallback in Android...)
  • Wechsel von domain.local auf domain.lan

Optionale Ziele für später:

  • Aufbau einer DMZ zwischen Fritzbox und OPNsense für Dienste nach Aussen
  • Nutzung von ZFS inkl boot environments für Updates, ZFS Mirror
  • Wechsel der Hardware der physischen sense
  • Multi-Channel LAGG für meine Mikrotiks


Prämisse bei diesem Vorhaben: Netz sollte durchgehend vorhanden sein - mal für 10 Minuten hier oder da ein Schluckauf ist okay, aber dauerhaft weg darfs net sein. Der Einfachheit halber habe ich OPNsense1 ausgemacht und ziehe sie auf einer VM neu hoch.

Ich ignoriere im LAN IPv6 völlig und deaktiviere es wo ich es kann.


So, nun mein teuflischer Plan:


Als erstes wollte ich jetzt einmal meine Firewall-Regeln auf den neuesten Stand bringen und von euch crosschecken lassen, in diesem Zuge des Neuaufsetzens von (im ersten Schritt ohne CARP) OPNsense1 werde ich auch gleich diese unsägliche .local domain los die ich immer noch benutze.

Als nächstes bräuchte ich dann etwas Mikrotik-Hilfe zum Überprüfen meiner VLANs und ob das so passt, und als letztes dann CARP wierder aufbauen - so mein Gedanke.

Wenn das erst einmal ohne HA und ohne MultiGW läuft, wollte ich als nächstes Multi-GW überprüfen - hierfür muss ich dann irgendwie OPNsense2 ausmachen - das wird also tricky. Ideen dazu wie ich das hin- und her Wechseln mache? Wird ja vermutlich nicht alles auf einmal klappen...


So, Plan haben ist toll, setzen wir gleich mal den ersten Punkt um, DNS + Firewallregeln - sollte ja auch das wichtigste sein.

Ich werde einen Alias "All VLANs" benutzen, einen "All Networks" (also All VLANS + LAN), einen "Print Networks" und einen "Media Networks" . die letzten beiden sollten Selbsterklärend sein.

Ich möchte die Regeln die mehrere Netzwerke betreffen gerne als Floating Rules einbauen, damit ich sie nur einmal pflegen muss.

Das erste was stimmen muss ist also das DNS. Grundsätzlich nutze ich die IP der sense jeweils als ihren eigenen DNS, mit der jeweils anderen als sekundärem DNS.

Dann leite ich jeden DNS-Verkehr in jedem Netz auf die Sense selber um, das ist meine zweite und dritte floating Rule, frei nach https://homenetworkguy.com/how-to/configure-opnsense-firewall-rules/ - siehe Attachement

Passt das erst mal soweit? Gehe ich so in die richtige Richtung? Ich hatte das bisher als Rule pro Interface, mit Destination "Interface Address" statt "This firewall"

Ich stolperte dann auch noch hier über diesen Teil im cheatsheet:
Redirect DNS requests on LAN to Unbound DNS using NAT port forwarding

Das würde ich auch gerne umsetzen, das kann ich ja ohne Probleme zusätzlich zur Floating Rule oben einbauen, oder?
Wenn ich das soweit habe würde ich weiter machen und mit noch mehr Fragen um die Ecke kommen.


Sodele, sorry für die Wall of Text...

So, CARP läuft, MultiWAN nicht - egal ob mit oder ohne CARP.

Ich glaube das Problem liegt an meinen DNS-Settings - jeder Guide möchte das man hier etwas einträgt:

Und zwar soll man dort jedem der Gateways der Gatewaygroup einen DNS server (guides nehmen immer 8.8.8.8 - looool) eintragen. Aber ich will ja keinen externen DNS-server nutzen, ich will Unbound lokal nutzen - habe extra NAT rules dafür das auch alles dahin umgeleitet wird:

Wie erreiche ich denn nu MultiWAN Failover, aber ohne externe DNS server - erst Recht ohne Google....? Klar könnt ich nen vernünftigen DNS server nehmen, aber ich will das doch selber machen...

Quote from: Shihatsu on March 10, 2025, 06:03:04 PMSo, CARP läuft, MultiWAN nicht - egal ob mit oder ohne CARP.

Was genau geht denn nicht? Geht nicht ist keine Fehlerbeschreibung ;)

Quote from: Shihatsu on March 10, 2025, 06:03:04 PMUnd zwar soll man dort jedem der Gateways der Gatewaygroup einen DNS server (guides nehmen immer 8.8.8.8 - looool) eintragen. Aber ich will ja keinen externen DNS-server nutzen, ich will Unbound lokal nutzen - habe extra NAT rules dafür das auch alles dahin umgeleitet wird:

Wie erreiche ich denn nu MultiWAN Failover, aber ohne externe DNS server - erst Recht ohne Google....? Klar könnt ich nen vernünftigen DNS server nehmen, aber ich will das doch selber machen...

Das hat alles per se absolut gar nix mit MultiWAN zu tun. Guides tragen DNS Server IPs(!) - nur um die IP gehts - bei den Gateways ein, weil man von denen landläufig annimmt, dass die eben so gut wie immer verfügbar sind. Die werden an der Stelle für das Gateway aber schlicht für die Überwachung genutzt, ob eine Leitung wirklich läuft oder nicht. Wenn du vor jedem WAN bspw. nen Router als Uplink hast, dann ist default der GW monitor eben der Uplink Router. Aber der geht ja meistens, wenn die Leitung nicht geht, liegt es ja meist DAHINTER nicht an dem. Darum also unterschiedliche(!!) Monitor IPs für die beiden Gateways, damit die mit nem echten Ziel im Netz prüfen können, ob die Leitung geht. Damit dann auch ein Failover greifen kann. Sonst wird es ja außer bei Leitung aus/Router aus etc. nie getriggert.

Das ist Punkt 1

Quote from: Shihatsu on February 04, 2025, 11:52:13 AMDie primäre Sense läuft virtualisiert, die Backup-Sense ist in Hardware und wird eigentlich nur angeschmissen wenn ich sie brauche - etwaige Loss of Service bis die hochgefahren ist nehme ich in Kauf (Kirche im Dorf lassen und so...).
Das Setup ist auch kein Standard und nicht gut. Das ist kein CARP/HA Setup, denn dafür müsste der Standby auch dauerhaft laufen. Dafür ist er da. Wenn der meist aus ist, dann bringt er auch nichts, dann braucht man auch kein CARP/HA Setup - Hochverfügbarkeit besteht ja nur dann, wenn alle Komponenten da sind. Dann kannst du dir auch die Hardware mit ner Sense konfiguriert in den Schrank legen und bei Bedarf eben die aktuelle Config einspielen.
Dabei gibts dann auch den nächsten Haken: das wird nicht ohne Probleme gehen, denn deine Interfaces sind in HW ganz andere als in Virtualisierung. Darum wird auch nicht empfohlen mit zwei unterschiedlichen Boxen HA/CARP zu machen, weil das meistens ärger gibt und bei CARP es dann auch noch bei Interface bound states knallt, denn da stimmt die Zuordnung nicht (weil bspw. WAN nicht vtnet0 sondern igb0 ist).

Quote from: Shihatsu on February 04, 2025, 11:52:13 AMIch hab seid einiger Zeit aber kein Multi-GW mehr am Laufen, da ich damit auf manchen Clients immer wieder auf dem falschen GW landete und bei einigen Clients einfach DNS nicht so wollte. Ich hatte auch immer wieder Probleme mit einem meiner VLANs und zu allem Überfluss nutze ich noch eine .local domain.

Die Domain kann man ja im Normalfall einfach ändern. Warum denn an was Kaputtem wie .local festhalten? Sinnvolle echte Domain rein und gut oder wenns unbedingt local only sein muss - warum? - kann man .home.arpa oder .internal nehmen. Da geht wenigstens kein mDNS und Apple Kram bei kaputt.
DNS sollte nun auch nicht unbedingt ein Drama mit MultiWAN sein. Daher die Frage was genau nicht geht und wie es konfiguriert ist.


Insgesamt sehe ich viele Ideen und Potential, aber aus Unwissen vielleicht(?) falsche Ansätze. Wenn du bspw. Redundanz mit Cold Standby lösen willst - dann fang nicht erst mit CARP und HA an. Völlig unterschiedliche Einsatzzwecke und macht GANZ andere Dinge kaputt wenn nicht korrekt eingerichtet.
MultiWAN genauso. Viel Komplexität weil alles in einem Topf blubbert (CARP, HA, MultiWAN, DNS, DNS redirects, etc.).

Ich würde die einzelnen Steps erstmal hart entzerren:

* Wenn Cold-Standby: dann machst du nicht CARP, sondern richtest ein Gerät sauber ein, machst am Ende nen Backup klar, das automatisch erzeugt wird, damit du notfalls eins zur Hand hast (bspw. GIT oder SFTP Backup automatisch 1-2x am Tag) und dokumentierst dir den Weg, wie du aus dem Backup ne lauffähige Kiste mit alter Backup HW im Schrank hinbekommst. So schwer ist das tatsächlich nicht. Und alle halbe Jahr die Backup Kiste mal an machen, aktuelle Konfig rein und auf neueste Version updaten geht auch. Dann wieder aus und einpacken. Funktionstest. Wie im RZ die Backup Diesel :)
* Wenn Active/Standby Cluster: Nimm zwei gleiche Sachen. HW oder Virtuell aber mische nicht beides, das macht mehr Ärger als dass es Nutzen bringt.
* MultiWAN: Genau definieren, was du haben willst, was es machen soll etc. und dann umsetzen.
* MultiWAN+CARP: Aufpassen, dass du dann zusätzliche Checkpoints hast, wenn du wirklich CARP/HA + MultiWAN machst, denn dann muss jeder Node sauber auch jedes WAN angebunden haben. Laut Plan hast du zwei Router davor, sollte also gehen. Aber sowas wie exposed Host o.ä. muss dann auf die VIP gehen, Outbound NAT muss extra konfiguriert werden, etc.etc. - da gibts einiges zu tun!
* DNS: Genauso, überlegen was du genau haben willst (alles DNS soll die Sense machen, via Unbound und Roots oder via DNSmasq und Forwarder oder oder oder) und dann Stück für Stück umsetzen. Auch das Redirecting erst dann, wenn der Rest Kram schon läuft. Solang die Sense noch kein sauberes DNS bekommt, brauchst du mit Clients dahinter nicht anfangen :)
* Dann braucht es am Ende auch keine dubiosen Regeln deren Sinn man selbst erstmal nicht versteht, sondern es läuft vorher schon alles rund und man kann dann ergänzen was man möchte :)

Cheers! :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

Erstens: Sorry fürs späte antworten, bin atm etwas überladen...
Zweitens: Danke das du dir Zeit für die Hilfe nimmst!
Drittens: Diese Forensoftware hier macht einem Multiquotes von großen Posts echt schwer...
Quote from: JeGr on March 17, 2025, 02:23:45 AM
Quote from: Shihatsu on March 10, 2025, 06:03:04 PMSo, CARP läuft, MultiWAN nicht - egal ob mit oder ohne CARP.

Was genau geht denn nicht? Geht nicht ist keine Fehlerbeschreibung ;)
Nunja, lässt sich schwer genauer beschreiben - sobald ich im Guide an der Stelle bin wo ich die Gatewaygroup statt default Gateway auswählen soll, wars das. Nichts geht mehr, weder DNS noch Routing.

Quote from: JeGr on March 17, 2025, 02:23:45 AM
Quote from: Shihatsu on March 10, 2025, 06:03:04 PMUnd zwar soll man dort jedem der Gateways der Gatewaygroup einen DNS server (guides nehmen immer 8.8.8.8 - looool) eintragen. Aber ich will ja keinen externen DNS-server nutzen, ich will Unbound lokal nutzen - habe extra NAT rules dafür das auch alles dahin umgeleitet wird:

Wie erreiche ich denn nu MultiWAN Failover, aber ohne externe DNS server - erst Recht ohne Google....? Klar könnt ich nen vernünftigen DNS server nehmen, aber ich will das doch selber machen...

Das hat alles per se absolut gar nix mit MultiWAN zu tun. Guides tragen DNS Server IPs(!) - nur um die IP gehts - bei den Gateways ein, weil man von denen landläufig annimmt, dass die eben so gut wie immer verfügbar sind. Die werden an der Stelle für das Gateway aber schlicht für die Überwachung genutzt, ob eine Leitung wirklich läuft oder nicht. Wenn du vor jedem WAN bspw. nen Router als Uplink hast, dann ist default der GW monitor eben der Uplink Router. Aber der geht ja meistens, wenn die Leitung nicht geht, liegt es ja meist DAHINTER nicht an dem. Darum also unterschiedliche(!!) Monitor IPs für die beiden Gateways, damit die mit nem echten Ziel im Netz prüfen können, ob die Leitung geht. Damit dann auch ein Failover greifen kann. Sonst wird es ja außer bei Leitung aus/Router aus etc. nie getriggert.
Ich meine nicht die IP die man angeben soll um zu testen ob das Gateway oben ist oder nicht. Mir ist klar das diese Einstellung bei den Gateways nichts mit DNS per se zu tun hat, sondern dort nur DNS server angegeben werden weil diese eine hohe Verfügbarkeit bieten. Darum geht es nicht.
Es geht um die Einstellungen unter System -> Settings -> General, wie hier:
https://www.thomas-krenn.com/de/wiki/OPNsense_Multi_WAN
oder hier:
https://docs.opnsense.org/manual/how-tos/multiwan.html#
beschrieben.

Quote from: JeGr on March 17, 2025, 02:23:45 AMDas ist Punkt 1

Quote from: Shihatsu on February 04, 2025, 11:52:13 AMDie primäre Sense läuft virtualisiert, die Backup-Sense ist in Hardware und wird eigentlich nur angeschmissen wenn ich sie brauche - etwaige Loss of Service bis die hochgefahren ist nehme ich in Kauf (Kirche im Dorf lassen und so...).
Das Setup ist auch kein Standard und nicht gut. Das ist kein CARP/HA Setup, denn dafür müsste der Standby auch dauerhaft laufen. Dafür ist er da. Wenn der meist aus ist, dann bringt er auch nichts, dann braucht man auch kein CARP/HA Setup - Hochverfügbarkeit besteht ja nur dann, wenn alle Komponenten da sind. Dann kannst du dir auch die Hardware mit ner Sense konfiguriert in den Schrank legen und bei Bedarf eben die aktuelle Config einspielen.
Dabei gibts dann auch den nächsten Haken: das wird nicht ohne Probleme gehen, denn deine Interfaces sind in HW ganz andere als in Virtualisierung. Darum wird auch nicht empfohlen mit zwei unterschiedlichen Boxen HA/CARP zu machen, weil das meistens ärger gibt und bei CARP es dann auch noch bei Interface bound states knallt, denn da stimmt die Zuordnung nicht (weil bspw. WAN nicht vtnet0 sondern igb0 ist).
Ob das gut ist oder nicht spielt keine Rolle. Relevant ist das es funktionieren kann. Zumindest getrennt von einander. CARP läuft wunderbar. Ich benutze die Zweite als Cold Standby. Meine Interfaces sind in VM und BareMEtal gleich, weil ich dafür LAGG nutze.
Nochmal: CARP ist hier nicht das Problem, das läuft - und lief auch vorher sauber, vor meiner jetzigen Umstellung.

Quote from: JeGr on March 17, 2025, 02:23:45 AM
Quote from: Shihatsu on February 04, 2025, 11:52:13 AMIch hab seid einiger Zeit aber kein Multi-GW mehr am Laufen, da ich damit auf manchen Clients immer wieder auf dem falschen GW landete und bei einigen Clients einfach DNS nicht so wollte. Ich hatte auch immer wieder Probleme mit einem meiner VLANs und zu allem Überfluss nutze ich noch eine .local domain.

Die Domain kann man ja im Normalfall einfach ändern. Warum denn an was Kaputtem wie .local festhalten? Sinnvolle echte Domain rein und gut oder wenns unbedingt local only sein muss - warum? - kann man .home.arpa oder .internal nehmen. Da geht wenigstens kein mDNS und Apple Kram bei kaputt.
DNS sollte nun auch nicht unbedingt ein Drama mit MultiWAN sein. Daher die Frage was genau nicht geht und wie es konfiguriert ist.
Naja, die Domain einfach zu ändern.... war nicht so einfach. Hat tatsächlich gedauert bist jetzt alles auf .lan läuft. Warum ich damals local genommen habe? Weil ich es nicht besser wusste.

Quote from: JeGr on March 17, 2025, 02:23:45 AMInsgesamt sehe ich viele Ideen und Potential, aber aus Unwissen vielleicht(?) falsche Ansätze. Wenn du bspw. Redundanz mit Cold Standby lösen willst - dann fang nicht erst mit CARP und HA an. Völlig unterschiedliche Einsatzzwecke und macht GANZ andere Dinge kaputt wenn nicht korrekt eingerichtet.
MultiWAN genauso. Viel Komplexität weil alles in einem Topf blubbert (CARP, HA, MultiWAN, DNS, DNS redirects, etc.).

Ich würde die einzelnen Steps erstmal hart entzerren:

* Wenn Cold-Standby: dann machst du nicht CARP, sondern richtest ein Gerät sauber ein, machst am Ende nen Backup klar, das automatisch erzeugt wird, damit du notfalls eins zur Hand hast (bspw. GIT oder SFTP Backup automatisch 1-2x am Tag) und dokumentierst dir den Weg, wie du aus dem Backup ne lauffähige Kiste mit alter Backup HW im Schrank hinbekommst. So schwer ist das tatsächlich nicht. Und alle halbe Jahr die Backup Kiste mal an machen, aktuelle Konfig rein und auf neueste Version updaten geht auch. Dann wieder aus und einpacken. Funktionstest. Wie im RZ die Backup Diesel :)
* Wenn Active/Standby Cluster: Nimm zwei gleiche Sachen. HW oder Virtuell aber mische nicht beides, das macht mehr Ärger als dass es Nutzen bringt.
* MultiWAN: Genau definieren, was du haben willst, was es machen soll etc. und dann umsetzen.
* MultiWAN+CARP: Aufpassen, dass du dann zusätzliche Checkpoints hast, wenn du wirklich CARP/HA + MultiWAN machst, denn dann muss jeder Node sauber auch jedes WAN angebunden haben. Laut Plan hast du zwei Router davor, sollte also gehen. Aber sowas wie exposed Host o.ä. muss dann auf die VIP gehen, Outbound NAT muss extra konfiguriert werden, etc.etc. - da gibts einiges zu tun!
* DNS: Genauso, überlegen was du genau haben willst (alles DNS soll die Sense machen, via Unbound und Roots oder via DNSmasq und Forwarder oder oder oder) und dann Stück für Stück umsetzen. Auch das Redirecting erst dann, wenn der Rest Kram schon läuft. Solang die Sense noch kein sauberes DNS bekommt, brauchst du mit Clients dahinter nicht anfangen :)
* Dann braucht es am Ende auch keine dubiosen Regeln deren Sinn man selbst erstmal nicht versteht, sondern es läuft vorher schon alles rund und man kann dann ergänzen was man möchte :)

Cheers! :)
Weder Exposed Host noch sonstewas. Im Moment läuft das Setup auch tatsächlich voll im Carp, das heisst beide sind dauerhaft an. Aber wie gesagt - Sobald ich auf GW-Group gehe wars das mit dem Netzzugang.
Wir können das sogar ganz entzerren: Eine Sense, HA wird ignoriert, MultiWAN, DNS nur durch Unbound - wie einstellen Ohne das man diese Einstellung unter System -> Settings -> General einstellt?

Quote from: Shihatsu on March 17, 2025, 06:50:53 PMOb das gut ist oder nicht spielt keine Rolle. Relevant ist das es funktionieren kann. Zumindest getrennt von einander. CARP läuft wunderbar. Ich benutze die Zweite als Cold Standby. Meine Interfaces sind in VM und BareMEtal gleich, weil ich dafür LAGG nutze.

Egal ob du dazu sagst ob das läuft oder nicht: CARP ist NICHT dafür gemacht oder gedacht. PUNKT. CARP ist ein HOT Redundancy Protokoll. Da sind 2 Nodes ständig am Laufen. Und nicht einer davon alle ritt lang aus. Das ist nicht das, was CARP macht. Und es bringt auch nichts. Was soll genau dir CARP in dem Setup bringen? Der andere Node ist nicht da und kann nicht einspringen also - wofür dann CARP? Wenn du eh die andere Kiste erst startklar machen musst und hoch fährst, dann kannst du das auch komplett lassen und statt dessen einfach ne VM mit Config vorhalten, die dann einspringt. Oder ein Config Backup das automatisiert gemacht wird einspielen und die Interfaces ändern. Ich sehe nicht, was dir an einem cold standby setup CARP bringen soll.

Und VM und BareMetal mixen und das mit LAGG kompensieren mag zwar gehen, aber eben auch nur eher so meh und theoretisch. Praktisch kanns trotzdem weh tun.

Quote from: Shihatsu on March 17, 2025, 06:50:53 PMWeder Exposed Host noch sonstewas. Im Moment läuft das Setup auch tatsächlich voll im Carp, das heisst beide sind dauerhaft an. Aber wie gesagt - Sobald ich auf GW-Group gehe wars das mit dem Netzzugang.

OK, wenn gerade beide laufen und das vielleicht weiter tun, dann soll mir CARP egal sein.
Hat aber an der Stelle immer noch nichts direkt mit HA zu tun.

Ich weiß nicht welches Guide du mit welchem Step meinst, vielleicht kannst du das verlinken oder besser beschreiben, aber für mich liest sich das nach Konfigurationsfehler bei Outbound NAT oder der Regel wo du die GW Gruppe hinterlegst. Das kann man auch nicht einfach reinprügeln, da müssen vornedran natürlich noch andere Regeln rein, sonst jagst du allen Traffic zur GW Gruppe obwohl der vllt. intern laufen soll. Das klingt nach Problem mit den Regeln oder Regelverständnis bei gesetztem Gateway vielleicht? Ohne Screenshots oder Details zu den Regeln und den Settings ist das leider einfach zu nebulös.

An Einstellungen unter Settings -> General liegt das m.E. nicht.

Cheers
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.