zweiten Pi-Hole als "Backup / Fallback" nutzen?

sakis2019

Cadet 4th Year
Registriert
Sep. 2019
Beiträge
86
Hallo,

folgende Situation. Zwei Fritzboxen sind per VPN (LAN-zu-LAN) verbunden. Beide sind getrennt voneinander (anderer Haushalt).

Fritzbox-A hat 192.168.10.1
Fritzbox-B hat 192.168.20.1

Man kann auf die Geräte von Fritzbox-A auf Fritzbox-B zugreifen und umgekehrt.

Auf beiden Haushalte ist Pi-Hole installiert.

Pi-Hole-A hat 192.168.10.20
Pi-Hole-B hat 192.168.20.20

Ich möchte das, wenn eins der beiden Pi-Hole ausfällt, jeweils das andere Pi-Hole die DNS-abfragen übernimmt und umgekehrt. Möglichst ohne große Verzögerung.

Beide Pi-Hole`s wurden exakt gleich installiert und konfiguriert worden, beide mit Unbound.

Auf beiden Fritzboxen wurden unter Internet > Zugangsdaten > DNS-Server die IP von beiden Pi-Hole`s eingetragen, sprich bei der Fritzbox-A unter Bevorzugter DNSv4-Server 192.168.10.20 sowie Alternativer DNSv4-Server 192.168.20.20. Bei der Fritzbox-B das gleiche nur umgekehrt.

Der Lokaler DNS-Server von beiden Fritzboxen wurde nicht geändert.

Soweit funktioniert alles gut, bis eins der beiden Pi-Hole`s ausfällt, dann geht nichts mehr.

Hat da jemand eine Idee woran das liegen könnte?


Gruß
Sakis
 
Per DHCP werden die Infos an die Clients vergeben. Zeigen die Clients auch wirklich beide DNS-Einträge an?
Evtl. könnte das VPN noch Schuld sein, d. h. das VPN lässt die DNS Anfragen nicht durch.
 
  • Gefällt mir
Reaktionen: sakis2019
DHCP übernehmen die Fritzboxen und mit CMD wird mir als DNS-Server immer die von der Fritz!Box angezeigt und nicht die von den Pi-Hole`s, dennoch funktioniert der Werbeblocker und die dns-anfragen.
 
liegt vermutlich an den verschiedenen Subnetzen. Was für eine IP bekommen den die Clients?
Wenn die von Fritz!Box A diese bekommen sind in im 10er Subnetz. Wenn jetzt der DNS ausfällt fragen die ihre fritzbox.

Bis hierhin noch ok.
Aber kommt die Fritz!Box denn zu den anderen Subnetz? Hast du da ne Route in den Netzwerkeinstellungen hinterlegt?

Mit freundlichen Grüßen
 
  • Gefällt mir
Reaktionen: sakis2019
Guten Morgen

Als ich noch Pi-Hole im Einsatz hatte, hatte ich die DNS-Konfiguration via DHCP auf meine Clients verteilt. Dies hatte den Vorteil dass man im Pi-Hole Dashboard die einzelnen Devices gesehen hatte. Und im Pi-Hole hatte ich als Upstream-DNS dann meinen Router drin. Ich glaube mit deiner Konfiguration siehst du auf dem Dashboard nur deine Fritzbox als Device oder?

In beiden Fällen (DNS via DHCP oder direkt an der Fritzbox) musst du überprüfen, ob der Port 53 freigeschaltet ist. Handelt es sich hierbei um ein Site-to-Site VPN bei welchem alles offen ist?

Ansonsten wäre nextdns.io noch eine nette Alternative die man sich anschauen könnte: https://nextdns.io/

Viele Grüsse
 
  • Gefällt mir
Reaktionen: sakis2019
Ich nutze den DHCP-Server von pihole und die DNS-Konfiguration wird dann an meine Clients verteilt.

Eigentlich wäre es mir lieber gewesen, wenn der DHCP-Server beim DSL-Router läuft, aber ich habe einen alten Speedport W724V. Der kann keine lokalen DNS-Server, sondern nur externe.
 
  • Gefällt mir
Reaktionen: sakis2019
Eine Idee wäre nen Loadbalancer (z.B. HAProxy) zu verwenden, der auf die beiden Pihole-Instanzen verteilt. Da kann man primär und sekundär einstellen.
Dann auf ner separaten VM oder extra Hardware, damit in den Fall, dass der Pihole ausfällt, auf den anderen ausgewichen werden kann.

EDIT: Nginx kann auch Proxy, vielleicht ein bisschen einfacher noch :D
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: sakis2019 und Mr.Highping
HAProxy wäre wirklich die beste Variante dadurch, dass die beiden Kisten in unterschiedlichen Netzen stehen. Eine Alternative wäre eventuell noch einen der Raspberrys ins Netz des anderen zu holen und dann keepalived auf beiden laufen zu lassen. Dafür brauchst du keine extra Hardware und hast bei einem Ausfall innerhalb von einer Sekunde ein Backup. Allerdings ist es kein Ortsabhängiges Backup mehr, sprich wenn der VPN tot ist, ist alles weg.
Oder pro Lokation noch einen zweiten Raspberry dazu für völlige Redundanz.

Allerdings wäre es mal interessant zu wissen wo du in der Fritzbox die Raspberrys hinterlegt hast? Unter Heimnetzwerk und Netzwerkeinstellungen oder als WAN DNS Server?
 
  • Gefällt mir
Reaktionen: sakis2019
So ganz ist mir das Setup offen gestanden nicht klar, weil die Beschreibung Spielraum für Interpretationen lässt.


sakis2019 schrieb:
Auf beiden Fritzboxen wurden unter Internet > Zugangsdaten > DNS-Server die IP von beiden Pi-Hole`s eingetragen, sprich bei der Fritzbox-A unter Bevorzugter DNSv4-Server 192.168.10.20 sowie Alternativer DNSv4-Server 192.168.20.20. Bei der Fritzbox-B das gleiche nur umgekehrt.

Der Lokaler DNS-Server von beiden Fritzboxen wurde nicht geändert.
Das kann ich als Nicht-Fritzbox-Nutzer zum Beispiel nicht nachvollziehen. Was wie wo wurde da denn nu geändert? Der Upstream-DNS der Fritzbox selbst, der normalerweise vom Provider mit der WAN-IP via DHCP übermittelt wird, oder der DNS, den die Fritzbox via DHCP an das lokale Netzwerk verteilt? Ich kenne die GUI der Fritzbox nicht, aber für mich klingt der erste Teil als wenn es sich um den Upstream-DNS handelt, aber dann verstehe ich den Begriff des "lokalen DNS-Servers" nicht wirklich. Was soll das sein?


Grundsätzlich gibt es verschiedene Szenarien wie man pihole als DNS in ein Netzwerk integrieren kann:

Entweder man verteilt via DHCP direkt die IP des pihole als DNS und muss dann ggfs conditional forwarding einrichten oder den pihole selbst DHCP-Server spielen lassen, um lokale Namen aufzulösen, oder man belässt den DHCP-Server so wie er ist (DNS = Router) und stellt beim Router den Upstream-DNS auf den pihole.

Die Aufrufketten eines DNS-Queries sähen dann zB so aus:

Client --DHCP-DNS--> Router --Upstream-DNS--> pihole --Upstream-DNS--> 8.8.8.8
Client --DHCP-DNS--> pihole --Upstream-DNS--> 8.8.8.8 oder ggfs Router bei conditional forwarding


Der sekundäre DNS funktioniert nicht zwingend so wie man das erwarten könnte. Windows fragt zB abwechselnd und nach einer gewissen Zeit auch parallel den primären und sekundären DNS mit steigenden Timeouts und welcher auch immer dann als erstes antwortet, wird genommen. Das Problem dabei ist, wenn beide DNS aber unterschiedliche Antworten liefern würden. Bei öffentlichen Domains ist das halb so wild, weil er entweder laut Filterliste antwortet oder eben ein Ergebnis vom Upstream-DNS liefert. Bei lokalen Namen ist das aber etwas vollkommen anderes. Wenn der lokale pihole ausfällt und wie auch immer auf den zweiten pihole jenseits des VPNs ausgewichen wird, kann dieser keine lokalen Namen aus dem anderen Netzwerk auflösen, weil er sie schlicht und ergreifend nicht kennt.

Um wirklich ein funktionierendes Fallback zu haben, müssen daher beide lokalen Netzwerke unterschiedliche lokale Domains haben, zB frank.local und peter.local. So kann man im pihole dann jeweils die gegenüberliegende Fritzbox als conditional forward konfigurieren, um weiterhin lokale Namen auflösen zu können, auch mit dem pihole im anderen Netzwerk.

Das ist jedoch nur ein Aspekt bei der ganzen Geschichte. Es gibt noch weitere Dinge, die man beachten muss, die den Rahmen meines Beitrags aber sprengen. Daher rate ich dazu, statt mit einem Fallback nur Symptombekämpfung zu betreiben, mit der Erhöhung der Stabilität des pihole das eigentliche Problem zu bekämpfen. Wozu brauchst du also überhaupt einen Fallback? Machen deine PIs regelmäßig die Grätsche? Dann ziehe pihole auf zuverlässigere Hardware um. Das bringt mehr als alle Rumkonfguriererei.
 
  • Gefällt mir
Reaktionen: sakis2019
Danke für die vielen Rückmeldungen.

Hier mal der Aufbau in grafischer Form.

Aufbau.jpg

Ziel ist es das, wenn ein Pi-Hole ausfällt, direkt der andere anspringt, bis der der ausgefallen ist, wieder läuft und die Aufgabe in seinem Haus übernimmt.

Als Beispiel.

Im Haus-A läuft Pi-Hole-A und tut seinen Job . Im Haus-B läuft Pi-Hole-B und tut auch seinen Job.

Nehmen wir mal an im Haus-A gibt es ein Stromausfall, oder Pi-Hole muss neugestartet werden, oder reagiert nicht mehr oder was auch immer, dann soll direkt der Pi-Hole von Haus-B vorläufig anspringen, bis der Pi-Hole von Haus-A wieder erreichbar ist und jeder Pi-Hole wie oben beschrieben wieder seinen eigentlichen Job macht.

Wie realisiere ich das?

vielen Dank.
 
Es ist gut möglich dass die Fritzboxen selber gar nicht den "anderen" Pihole im anderen Netz fragen (können), weswegen dann bei Ausfall des lokalen Piholes gar nichts mehr geht.
Hast du denn mal wirklich getestet ob der DNS-Ausfall mglw. nur dann passiert, wenn der Fritzbox-lokale Pihole wegbricht?

Mh-mh. Ein Ansatz wäre jetzt gewesen per DHCP beide Piholes zu verteilen. Das kann der Fritzbox-DHCP aber nicht...

edit2: Die Pihole-Einstellung über den unterschiedlichen Ursprung hast du gesehen? Die Einstellung, so wie sie bei beiden steht, akzeptiert nur Anfragen von Clients aus demselben Subnetz.
 
Auf welcher Hardware läuft pihole?
Fällt pihole so häufig aus?
 
sakis2019 schrieb:
Ziel ist es das, wenn ein Pi-Hole ausfällt, direkt der andere anspringt, bis der der ausgefallen ist, wieder läuft und die Aufgabe in seinem Haus übernimmt.
So funktioniert das aber nicht. Es gibt keinen Umschalter zwischen primärem und sekundärem DNS. Wie ich schon erklärt habe, fragt zB Windows mit steigenden Timeouts abwechselnd und später auch parallel beide DNS, aber im ersten Schritt wird IMMER erst der primäre DNS gefragt. Erst wenn diese Anfrage ins Timeout läuft, geht der Prozess los. Das heißt, dass man im worst case eben bei jedem DNS-Query zB 1s Verzögerung hat, unabhängig von der potentiell zusätzlichen Verzögerung durch den VPN-Tunnel.

Und nochmal ohne weitere Maßnahmen wird der PI "gegenüber" keine lokalen Namen auflösen können. In deinen Screenshots sieht man wunderbar, dass du zwar conditional forwarding konfiguriert hast, aber beide Fritzboxxen haben dieselbe lokale Domain, die Standard-Domain fritz.box. Wenn du nun in Haus A ein NAS hast, das "mynas" heißt, dann heißt es eigentlich mynas.fritz.box. Wird nun der gegenüberliegende PI gefragt, wird er entweder antworten, dass er mynas.fritz.box nicht kennt oder die IP zu mynas.fritz.box in Haus B zurückgeben, wenn es den Namen dort denn ebenfalls gibt. Beide Fritzboxxen brauchen also unterschiedliche lokale Domains und die PIs benötigen dementsprechend einen zweiten Eintrag beim conditional forwarding. In der GUI ist dies aber nicht vorgesehen und man müsste das direkt via ssh in der Konfiguration hinzufügen.


In meinen Augen ist das aber schlicht und ergreifend der falsche Weg. Wenn du Probleme damit hast, dass dein lokaler PI ausfällt und somit DNS nicht mehr funktioniert, dann ist DAS der Hebel, an dem du ansetzen solltest. Zumal du das Problem ja auch auf beiden Seiten haben kannst oder der VPN-Tunnel ein Problem haben kann und somit ist auch der gegenüberliegende pihole potentiell unzuverlässig. Und bei einem Stromausfall, wie du es so schön als Beispiel anführst, ist der DNS ja nu das kleinste Problem, weil der Router dann ja ebenfalls keinen Strom hätte und somit gar keine Internetverbindung verfügbar ist..........


Wie dem auch sei, wenn du das so machen willst, dann sei es so. Zunächst solltest du dann prüfen ob der gegenüberliegende pihole überhaupt auf Anfragen reagiert. Mit "nslookup computerbase.de 192.168.10.20" kannst du direkt einen DNS-Query an diesen pihole schicken. Ich vermute mal, dass du jeweils nur den lokalen pihole so erreichen wirst, weil die "interface listening behaviour" mutmaßlich auf die unterste Einstellung gesetzt werden muss, weil dort explizit steht "permit all origins" und das impliziert, dass es bei Option 1 und 2 nicht der Fall ist.
 
Danke für die Antworten. Ich habe nie gesagt das meine Pi-Hole`s ausfallen oder Probleme haben, ich möchte nur das WENN sie mal Probleme haben, bzw. einer ausfällt dann der andere direkt anspringt, aber irgendwie kann mir dazu keiner eine richtige Antwort liefern wie ich das machen kann, stattdessen wird über die Einstellungen diskutiert, die ich bei Pi hole oder Fritz!Box habe, und was daran falsch ist, aber das war nicht die frage die ich gestellt hatte. Ich glaube ich lass es sein, danke trotzdem.
 
sakis2019 schrieb:
ich möchte nur das WENN sie mal Probleme haben, bzw. einer ausfällt dann der andere direkt anspringt, aber irgendwie kann mir dazu keiner eine richtige Antwort liefern wie ich das machen kann, stattdessen wird über die Einstellungen diskutiert
Es geht dabei doch um die Einstellungen! Hast du die Beiträge gelesen und verstanden oder bist du einfach nur eingeschnappt, weil man dein Vorhaben kommentiert?

Naja, mir auch egal. Es sind alle nötigen Einstellungen und Tests genannt worden. Verstehen, anwenden und umsetzen musst du das so oder so selbst.

In diesem Sinne, einen guten Rutsch !
 
sakis2019 schrieb:
Der Lokaler DNS-Server von beiden Fritzboxen wurde nicht geändert.
Frag mich gerade wie das funktionieren soll wenn der DNS Server nicht auch auf den Pi zeigt ? So wie es eingestellt ist, wird jegliche Anfrage an die Fritz gerichtet, der Pi bleibt außen vor. Hier muss auch die DNS Adresse des Pi eingestellt werden. Also ...
1. Die Adresse wird nicht umgestellt: Funktioniert alles ohne Pi
2. Die DNS des Pi wird eingetragen: Funktioniert alles mit Pi
3. Eine falsche Adresse wird eingetragen (geht zum testen auch ;)): Nichts funktioniert mehr.
Fazit:
Ein Fallback der Fritz, egal ob doppelt oder nicht, ist nicht vorgesehen.
Es funktionieren immer nur die Endgeräte, bei denen der lokaler DNS Server richtig eingestellt und betriebsbereit ist.
 
Zurück
Oben