AdguardHome unter HomeAssistant mit Fritzbox - Router einziger Client

dabooster

Cadet 4th Year
Registriert
Apr. 2015
Beiträge
115
Freunde der Sonne,

auf einem Raspberry Pi läuft AdguardHome, als Addon in HomeAssistant installiert.
Nicht optimal, wenn man mit fundiertem Halbwissen auf Pro-Level mitspielen will 😆 Ich habs zwar irgendwie geschafft dass mein Setup so leidlich funktioniert. Aber da ist noch an vielen Stellen Luft nach oben. Was ich jetzt konkret fixen will:
In Adguard Home wird als einziger Client der Router erkannt. Somit sind natürlich keine clientbezogenen Einstellungen möglich.

In der Fritzbox habe ich eine Filterregel für DNS angelegt - für alle Geräte außer den Raspberry werden die Ports 53/853 gesperrt. Der Raspberry kriegt über DHCP immer die gleich IP zugewiesen.

Es gibt zwei Stellen an der Fritzbox, an der ich den Raspberry als DNS-Server eintragen kann.
1) Unter Internet-> Zugangsdaten -> DNS-Server
Nachteil: Dann wird der Router als einziger Client erkannt

2) Unter Heimnetz -> Netzwerk -> IPv4-Adressen
Nachteil: Das Gastnetz läuft, sofern unter 1 nichts anderes eingegeben, über den Standard DNS.
Nachteil: Die Netzwerk-Clients sind nur noch direkt über IPs, nicht mehr über Namen erreichbar (z.B. FritzBox oder HomeAssistant).

Was perfekt wäre:
Clients (Gastnetz und Heimnetz) werden in AdguardHome erkannt
Clients sind weiterhin über ihre Namen erreichbar
Bei einem Notfall kann ich unter 1) einen Standard-DNS angeben, unter Heimnetz weiter den lokalen DNS-Server, um das Gastnetz als Fallback nutzen zu können

Wie schaff ich das, an welchen Stellen muss ich drehen?
Bei Adguard scheinen irgendwo die richtigen Settings verborgen zu sein - DNS-Rebind? Bootstrap? Inverse DNS-Server, Resolver? Da versteh ich absolut nur Bahnhof 🤪 Weil ich vermute dass die Lösung bei den Adguard DNS-Settings liegt, häng ich mal n Screenshot davon an.
Große Dankbarkeit wenn mir jemand, der nicht so n Stümper wie ich es bin, auf die Sprünge helfen kann 🙃
 

Anhänge

  • 2 Adguard Home - DNS-Settings.jpg
    2 Adguard Home - DNS-Settings.jpg
    123,4 KB · Aufrufe: 661
Ein lokaler DNS wie Adguard kann natürlich nur lokale Clients erkennen, wenn sich diese direkt bei ihm melden. Wenn via DHCP weiterhin der Router als DNS verteilt wird und Adguard im Router als Upstream-/Internet-DNS eingetragen ist, dann fragen die Clients nach wie vor den Router und dieser leitet an Adguard weiter. Adguard sieht also immer nur Anfragen vom Router.

Trägst du hingegen die IP von Adguard in den DHCP-Einstellungen ein, werden die Clients direkt Adguard nach Domains bzw. deren IP fragen, Adguard sieht also die einzelnen Clients.


Allerdings musst du mit der lokalen Namensauflösung aufpassen. Wenn du zB auf dein NAS, o.ä. mit "MeinNAS" zugreifst, wird der Client ebenfalls Adguard nach der IP zu "MeinNAS" fragen und Adguard wird nicht wissen wovon die Rede ist bzw. die Anfrage seinerseits an seinen Upstream-DNS weiterleiten. Spätestens da sollte also die IP des Routers stehen. Die DNS-Aufrufkette sähe dann so aus:

Client --viaDHCP-DNS--> Adguard --viaUpstream-DNS--> Router --viaUpstream-DNS--> Provider-DNS


Im Gastnetzwerk funktioniert das aber in der Regel nicht, da man meistens die DHCP-Einstellungen des Gastnetzwerks nicht konfigurieren kann. Soll Adguard also auch im Gastnetzwerk funktionieren, bleibt eigentlich nur der Weg, Adguard im Router als Upstream-DNS einzutragen. Das sähe dann so aus:

Client --viaDHCP-DNS--> Router --viaUpstream-DNS--> Adguard --viaUpstream-DNS--> public-DNS

In dieser Konstellation sieht Adguard aber wie bereits erwähnt nur den Router als Client. Eine andere Möglichkeit gibt es bei Consumer-Routern aber in der Regel nicht, da solche Router nun mal für Otto Normal zu 98% vorkonfiguriert sind, unveränderbar, Black Box. Mit einem fortgeschrittenen Router hätte man volle Kontrolle über die DHCP-Einstellungen, auch im Gastnetzwerk.
 
  • Gefällt mir
Reaktionen: WillSmith, Mettmelone, dabooster und eine weitere Person
Wow! DAS ist ja mal krass erklärt. 👍 👍 👍 Vielen Dank für deine Zeit, das ist Futter zum langsam reinkommen und lernen!
Ich denke bzw. hoffe dass ich die Hälfte komplett gecheckt hab 😄

Dass alle Anfragen der Clients, die im Gastnetz sind, in AdguardHome als Router-Anfrage ankommen, damit kann/muss ich ja leben. Also Haken dran.

Was ich nicht ganz verstanden habe:
Damit ich lokale Namensauflösung weiter benutzen kann, schlägst du also vor, dass über "Heimnetz" (DHCP) der Adguard DNS-Server ist. Dieser leitet vorgefiltert an den Router weiter, der dann wiederum einen DNS-Server abfragt.
Bedeutet dann aber in der Praxis, dass ich:
  • nur einen DNS-Server, und den in der Fritzbox, angeben könnte
  • das Gastnetz ungefiltert bleibt bzw. bleiben muss
  • Meine DNS-Filterregeln an der Fritzbox (Port 53/853 für alles, außer AdguardHome gesperrt) müsste ich dann fürs Gastnetz ebenfalls deaktivieren

Scheint mir dann doch auch einige Nachteile mit sich zu bringen. Da tendiere ich eher dazu, auf lokale Namensauflösung zu verzichten...


Gibt es nicht irgend eine Möglichkeit, dass:
  • Entweder die Fritzbox erkennt was eine lokale Adresse ist (dass hinter nas.lokal eine Adresse aus dem Bereich 192.168.1.x steht) und diese beantwortet, bevor sie an Adguard geleitet werden?
  • Oder Adguard alle Anfragen von der Fritzbox bekommt, und dann erst DNS (für lokale Adressen) bei der Fritzbox nachfragt, und wenn da keine Antwort kommt, die bei Adguard eingetragenen DNS-Server abfragt?
  • Oder andersrum Adguard erstmal alle Anfragen von der Fritzbox versucht aufzulösen, und wenn da nix geht, dann nochmal bei der Fritzbox nachfragt?
 
Ich zitiere an dieser Stelle mal einen anderen Beitrag von mir, in dem ich die verschiedenen Setup Varianten etwas detaillierter beschrieben habe. Dabei ging es allerdings um pihole, ist aber auch auf Adguard anwendbar. Zu meinen obigen Ausführungen ist da aber noch eine 3. Variante hinzugekommen, weil pihole/Adguard auch als DHCP-Server fungieren können.

Raijin schrieb:
Prinzipiell gibt es 3 Varianten wie man pihole in ein Netzwerk integrieren kann. Entscheidend ist dabei die DNS-Aufrufkette, die stimmen muss, um zu gewährleisten, dass auch lokale Namen aufgelöst werden können.

1)
Router ist DHCP-Server
Router vergibt Router-IP als DNS via DHCP
Router selbst hat am pihole als Upstream-DNS (also der DNS, den der Router selbst fragt)
pihole hat als Upstream-DNS zB 9.9.9.9
DNS-Aufrufkette: Client --> Router ---> pihole ---> 9.9.9.9

2)
Router ist DHCP-Server
Router vergibt die pihole-IP als DNS via DHCP
Router selbst hat einen beliebigen DNS (außer pihole), zB 9.9.9.9
pihole hat als Upstream-DNS die Router-IP oder es ist conditional forwarding konfiguriert (zB fritz.box)
DNS-Aufrufkette: Client --> pihole --> Router --> 9.9.9.9

3)
pihole ist DHCP-Server (=> DHCP im Router aus)
pihole vergibt pihole-IP als DNS via DHCP
Router selbst hat einen beliebigen DNS, zB pihole oder 9.9.9.9
pihole hat als Upstream-DNS zB 9.9.9.9
DNS-Aufrufkette: Client ---> pihole --> 9.9.9.9



dabooster schrieb:
Was ich nicht ganz verstanden habe:
Damit ich lokale Namensauflösung weiter benutzen kann, schlägst du also vor, dass über "Heimnetz" (DHCP) der Adguard DNS-Server ist. Dieser leitet vorgefiltert an den Router weiter, der dann wiederum einen DNS-Server abfragt.
Bedeutet dann aber in der Praxis, dass ich:
  • nur einen DNS-Server, und den in der Fritzbox, angeben könnte
  • das Gastnetz ungefiltert bleibt bzw. bleiben muss
  • Meine DNS-Filterregeln an der Fritzbox (Port 53/853 für alles, außer AdguardHome gesperrt) müsste ich dann fürs Gastnetz ebenfalls deaktivieren
Damit lokale Namen zuverlässig aufgelöst werden können muss irgendwo in der DNS-Aufrufkette das Gerät mit dem DHCP-Server auftauchen, in deinem Fall der Router. Es ist unerheblich an welcher Stelle das passiert, vor oder nach Adguard, spielt keine Rolle.


dabooster schrieb:
Scheint mir dann doch auch einige Nachteile mit sich zu bringen. Da tendiere ich eher dazu, auf lokale Namensauflösung zu verzichten...
Das hat deutlich größere Nachteile, weil du dann für jedes lokale Gerät, das du direkt ansteuern möchtest (zB NAS) die IP-Adresse kennen musst, wenn andere Techniken zur Namensauflösung fehlschlagen (zB Netbios). Und selbst wenn es für ein Gerät auch ohne korrekte DNS-Settings mit dem lokalen Namen klappt, muss das nicht für alle gelten. DNS vom DHCP-Server ist die zuverlässigste Methode.


dabooster schrieb:
Gibt es nicht irgend eine Möglichkeit, dass:
  • Entweder die Fritzbox erkennt was eine lokale Adresse ist (dass hinter nas.lokal eine Adresse aus dem Bereich 192.168.1.x steht) und diese beantwortet, bevor sie an Adguard geleitet werden?
  • Oder Adguard alle Anfragen von der Fritzbox bekommt, und dann erst DNS (für lokale Adressen) bei der Fritzbox nachfragt, und wenn da keine Antwort kommt, die bei Adguard eingetragenen DNS-Server abfragt?
  • Oder andersrum Adguard erstmal alle Anfragen von der Fritzbox versucht aufzulösen, und wenn da nix geht, dann nochmal bei der Fritzbox nachfragt?
In gewisser Weise funktioniert das schon genau so. Wenn die Fritzbox für den bei ihr angefragten Namen/die Domain einen gültigen Eintrag hat, wird sie den DNS-Query beantworten und nichts weiterleiten. Möchte man explizit lokale Domains an einen anderen DNS weiterleiten, wird conditional forwarding benötigt. Bei Adguard funktioniert das so: Klick!
 
Ok. Jetzt sind es mehr Fragezeichen geworden, nicht weniger 😕😆
Raijin schrieb:
Damit lokale Namen zuverlässig aufgelöst werden können muss irgendwo in der DNS-Aufrufkette das Gerät mit dem DHCP-Server auftauchen, in deinem Fall der Router. Es ist unerheblich an welcher Stelle das passiert, vor oder nach Adguard, spielt keine Rolle.
Du meinst, er muss als DNS-Server in der Aufrufkette stehen? Weil als DHCP-Server fungiert er ja natürlich jetzt schon. Aber wie kann ich dann verhindern, dass er DNS-Anfragen für extern beantwortet?
Raijin schrieb:
In gewisser Weise funktioniert das schon genau so. Wenn die Fritzbox für den bei ihr angefragten Namen/die Domain einen gültigen Eintrag hat, wird sie den DNS-Query beantworten und nichts weiterleiten.
Siehe oben - (wie) schaff ichs, dass der Router nur (alle lokalen) Adressen, die auf 192.168.xxx.xxx auflösen, bearbeitet?
Raijin schrieb:
Möchte man explizit lokale Domains an einen anderen DNS weiterleiten, wird conditional forwarding benötigt. Bei Adguard funktioniert das so: Klick!
OK, wenigstens die Infos hier hab ich gecheckt 😄 Aber das bedeutet ja, dass ich faktisch für jedes lokale Gerät das ich ansprechen möchte hier nen Eintrag anlegen muss (bzw. wenn ich mir sicher bin, alles mit *.box, *.local, *.nas,....
Das würd ich dann demnächst ma machen, fühlt sich aber irgendwie falsch an, weil händisch zu pflegen...🧐

Ich dachte, es gibt vielleicht irgendnen Trick, wo ich in AdguardHome nochmal eingeben kann "Und wenn ne DNS nicht aufgelöst werden kann, frag halt nochmal bei der Fritzbox nach. Die leitet zwar fast immer wieder an dich weiter, aber vielleicht kenntse die Adresse ja doch, weils lokal ist".

Anyway. Der Weg mit Conditional Forwarding ist jedenfalls ne Lösung! Das händische kurieren ist nicht optimal, aber dafür krieg klappen die restlichen Dinge dann ja.
Tausend Dank für deine Unterstützung, ich weiß das zu würdigen - Appreciate it! 👍😎
 
dabooster schrieb:
Du meinst, er muss als DNS-Server in der Aufrufkette stehen? Weil als DHCP-Server fungiert er ja natürlich jetzt schon.
Ja, habe ich auch genau so geschrieben.


dabooster schrieb:
Aber wie kann ich dann verhindern, dass er DNS-Anfragen für extern beantwortet?
DNS-Queries für öffentliche Domains wird der Router-DNS immer beantworten, wenn er gefragt ist. Er tut dies aber nur dann direkt, wenn er a) noch einen gültigen Eintrag im DNS-Cache hat oder b) einen manuellen Eintrag in der DNS-Liste vorfindet. In allen anderen Fällen wird der Router den DNS-Query stets an seinen Upstream-DNS weiterleiten.


Die einzige Möglichkeit, Adguard sowohl im Gast- als auch im Hauptnetzwerk zu nutzen - abgesehen von Variante 1 aus #4 - ist eine spezielle Konfiguration von Variante 3:

Adguard macht DHCP
Adguard vergibt Adguard-IP als DNS
Adguard Upstream-DNS = beliebiger public DNS (zB 1.1.1.1, 8.8.8.8, 9.9.9.9, o.ä.) - NICHT die Fritzbox-IP!
Fritzbox DHCP=aus
Fritzbox Upstream-DNS = Adguard-IP



Nun beziehen alle Clients im Hauptnetzwerk ihre IP-Einstellungen von Adguard. Das heißt, dass sie Adguard direkt als DNS nutzen und dementsprechend auch einzeln in der Statistik auftauchen. Die Fritzbox ist für das Hauptnetzwerk DNS-mäßig irrelevant. Die lokale Namensauflösung liegt damit in der Hand von Adguard und dessen DHCP-Server, der alle DHCP-Clients namentlich kennt.

Im Gastnetzwerk bleibt die Fritzbox zwangsläufig DHCP - ich hoffe zumindest, dass dem so ist, wenn man den DHCP für das Hauptnetzwerk ausschaltet. Die Gastgeräte beziehen also nach wie vor die Fritzbox-IP als DNS und schicken alle ihre DNS-Queries an die Gast-IP der Fritzbox (192.168.179.1), Die Fritzbox wiederum leitet wie beschrieben an ihren Upstream-DNS weiter, Adguard, der wiederum mit der gefilterten Domain-IP antwortet oder seinerseits an seinen Upstream-DNS durchreicht.
 
  • Gefällt mir
Reaktionen: dabooster
Yesss! Ich hab die Materie zwar leider noch nicht in Gänze durchdrungen, aber für meinen Fall hab ichs gecheckt. Ich bin noch am überlegen (und später auch ma ausprobieren), ob ich mich nicht doch an conditional forwarding mache. Ist auf jeden Fall noch nicht aus dem Rennen für mich.
Dem Raspberry traue ich noch nicht vollumfänglich, und will ihm nicht auch noch DHCP anvetrauen. Finde es sogar interessant, das Gastnetz als "Surf-Fallback" zu behalten, dann halt ohne Adguard. Da denk ich nochmal nach, und kalkuliere auch ein dass was ausfällt, die bessere Hälfte da ist - aber ich nicht... 😀

Jedenfalls hab ich jetzt viel mehr Durchblick. Tausend Dank dir für deine Geduld und ausführliche Erklärungen!! 😎👍
 
  • Gefällt mir
Reaktionen: Raijin
Zurück
Oben