Best Practice: AdGuard Home & unbound um Domain lokal aufzulösen

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Da hier immer wieder die Frage aufkommt, wie man im LAN mit https arbeiten kann, erstelle ich hier mal eine Art „Guide“.
Warum braucht man das Ganze? Einfach gesagt, weil eine https Verbindung immer von einem Zertifikat abgesichert / verschlüsselt wird. Dieses ist aber nur gültig für die Domain, für die es ausgestellt wurde. Und klassischerweise erhält man für eine IP-Adresse kein Zertifikat.
Man kann es auch einfach halten, so wie in meinem anderen Thread beschrieben (mehr dazu auch hier in diesem Thread unter Punkt 1.2.1). Mit eigenem DNS-Server ist man aber flexibler, falls man mal eine Domain / einen DDNS nutzen will, bei dem diese Option nicht gegeben ist (und das ist bei den meisten der Fall). Zudem kann man noch weitere DNS-Einträge umbiegen bei Bedarf.

Hinweis vorneweg: Wenn die DS aus ist, habt ihr kein Internet! Bitte bedenken, dass ohne DNS-Server nix mehr geht. Fahrt ihr also die DS per Zeitplan runter, ist diese Vorgehensweise eher schlecht geeignet.

HINWEIS
: Keine Gewährleistung auf Vollständigkeit und 100%ige Korrektheit! Wem ein Fehler auffällt, der kann das gerne (mit freundlichem Umgangston) hier melden!

Voraussetzungen:
In dieser Anleitung wird vorausgesetzt, dass der Umgang mit der FileStation und Hochladen von Dateien aufs NAS bekannt ist und auch, wie man mit Archiven umgeht.

To Do:
Eine eigene Domain / eine DDNS-Adresse (idealerweise mit Wildcard-Zertifikat)

Hierfür werden wir synology.me als DDNS-Anbieter nutzen. Und zwar aus 3 Gründen:
1.) Der Dienst bietet Wildcard DNS (alle Subdomains werden ebenfalls auf eure ext. IP aufgelöst).
->dies ist wichtig, wenn man später doch mal von extern auf einen Dienst ohne VPN zugreifen will
2.) Die DS kann für diese Adresse ein Wildcard Zertifikat erstellen (das Zertifikat ist für die Adresse selbst und für alle Subdomains gültig).
->das brauchen wir, damit wir mit dem Reverse Proxy und Subdomains anstatt Ports arbeiten können
3.) Für die Zertifikatserstellung ist keine Portweiterleitung im Router notwendig.
->bei den meisten anderen Anbietern müsste Port 80/443 im Router offen sein.
Quelle: Synology KB-Artikel

Ein eigener DNS-Server
Als DNS-Server kommt AdGuard Home zum Einsatz, der wiederum als upstream DNS-Server unbound nutzt. Warum nicht den einfachen Synology DNS-Server? Weil man mit der Kombi gleich noch einen netzwerkweiten Werbe- und Trackingblocker obendrauf hat, der sogar (die richtigen Block-Listen vorausgesetzt) in einem gewissen Umfang vor Phishing und Malware im Heimnetz schützen kann.
Was unbound genau tut, kann man z.B. in diesem Artikel nachlesen.
Genauere Infos, warum ich die Kombi aus AdGuard Home + unbound nutze, gibt's im verlinkten Installations-Thread unter Schritt 2.1.

Anleitung
Schritt 1: Anlegen der DDNS Adresse mit Wildcard-Zertifikat

Schritt 1.1: Synology Account hinterlegen

Wir melden uns bei DSM mit einem User an, der Administratorrechte hat. Zuallererst müssen wir uns mit einem Synology-Konto anmelden in der DS, damit wir die DDNS-Dienste von Synology in Anspruch nehmen dürfen. Dazu wechseln in die Systemsteuerung -> Synology-Konto und drücken auf den Link zum Anmelden mit einem Konto:
1.png

Dann sollte sich ein neues Fenster öffnen, bei dem man sich anmelden kann, falls man schon ein Konto hat. Wenn nicht, drückt man unten auf den Link „Ein Synology-Konto erstellen“.
Hinweis: Wenn sich da kein Fenster öffnet, hat entweder ein Werbeblocker oder der Popup-Blocker des Browsers zugeschlagen. Hier hilft es vielleicht, temporär auf einen anderen Browser zu wechseln und den Vorgang erneut auszuführen.

Schritt 1.2: Synology DDNS-Adresse anlegen
Umschalten auf Externer Zugriff -> DDNS. Oben auf den Button „Hinzufügen“ drücken und in dem Dropdown „Serviceanbieter“ „Synology“ auswählen. Bei Hostname den ersten Teil der gewünschten DDNS-Adresse eintragen. Im hinteren Dropdown „synology.me“ auswählen. Hint an der Stelle: Eigentlich müsste unser Vorhaben hier mit jeder Domain funktionieren laut KB-Artikel. Früher hat dies aber nur mit „synology.me“ funktioniert und auch nur damit habe ich es getestet. Unten noch den Haken für die Zertifikatserstellung setzen. Der Rest kann so belassen werden, wie er ist:
2.png

[optional] Schritt 1.2.1: DDNS mit Boardmitteln auf interne IP biegen
Man kann in diesem Fenster die Auswahlbox hinter "Externe Adresse (IPv4)" auch direkt umstellen von "automatisch" auf "LAN X". Damit löst der DDNS bereits auf die interne IP auf, ohne dass man einen DNS-Server oder AdGuard + unbound braucht. Wenn man möchte, ist man an dieser Stelle also bereits fertig (dennoch sollte man sich den folgenden Schritt 1.2.2 noch zu Gemüte führen). Kann man machen, wenn man es einfach haben will. Alle weiteren folgenden Schritte dienen dazu, das Ganze mit dem AdGuard umzusetzen. Das kann man natürlich so mit jedem anderen DNS-Server genau so machen. Mein Favorit ist aber ganz klar der AdGuard und deshalb zeige ich das hier auch damit. Wenn man das mit einem eigenen DNS-Server umsetzt, hat man nicht nur einen Vorteil:
-man kann (bei Bedarf) für internen und externen Zugriff die gleiche DDNS-Adresse nutzen
->intern löst die Adresse auf die interne IPv4 der DS auf
->extern löst die Adresse auf die exterene IPv4 des Routers auf
-man kann bei Bedarf schnell weitere Umbiegungen vornehmen
-man ist nicht auf den Synology DDNS Dienst angewiesen (nur dieser bietet m.W. die Möglichkeit, den DDNS direkt privat aufzulösen)
Wenn ein externer Zugriff auf den DDNS (also ohne VPN) nicht gebraucht wird, empfehle ich, das hier auf die interne IP zu stellen. Denn wenn ein Client im Heimnetz aus irgendeinem Grund nicht den AdGuard verwendet, ist dann dennoch eine korrekte Auflösung gegeben. Andernfalls würde der Client auf die externe IP losgehen und der Aufruf funktioniert nicht mehr. Dann geht die Fehlersuche los.

Schritt 1.2.2: Umgang mit dem neuen Zertifikat
Wenn nun eine Meldung kommt mit dem Hinweis „Dieser Hostname wird bereits verwendet“, ist die gewählte Adresse bereits in Verwendung und muss geändert werden. So war das bei mir der Fall und ich habe „test1234“ durch „12test34“ ersetzt. Daraufhin dauert es ein paar Sekunden und das DSM-Admin Interface wird neu geladen. Möglicherweise erscheint hier der Sicherheitshinweis eures Browsers, falls ihr mit https verbunden seid. Diesen kann man aber ignorieren:
3.png

Es kann sein, dass eine Fehlermeldung von DSM erscheint, dass das Zertifikat nicht ausgestellt werden konnte, weil Ports nicht offen waren. Den Fehler kann man ignorieren. Er ist eher noch als „Relikt aus alten Zeiten“ zu sehen, zu denen man immer die Ports für Zertifikate öffnen musste.
Nun sollte man in der Systemsteuerung unter Sicherheit -> Zertifikat das frisch erstellte Zertifikat sehen. Dieses ist 3 Monate gültig und wird von der DS vor Ablauf automatisch erneuert. Wenn nicht, kann man dies aber auch manuell via „Aktion“ -> „Zertifikat erneuern“ anstoßen.

Schritt 2: Installation und Konfiguration des AdGuard
Schritt 2.1: Installation von AdGuard Home und unbound via CLI

Diesen Teil der Anleitung habe ich ausgelagert in einen separaten Thread.
Ansonsten hätte dieser Thread die Begrenzungen des Forums erreicht.

Schritt 2.2: Erweiterte Konfiguration des AdGuard Home
Jetzt tragen wir endlich unseren DDNS, den wir angelegt haben, im AdGuard als DNS-Umschreibung ein. Dazu auf „Filter“ und „DNS-Umschreibungen“, „DNS-Umschreibung hinzufügen“ klicken:
9.png

Im sich öffnenden Fenster tragen wir nun unsere DDNS-Adresse ein und darunter die interne IP der DS:
10.png

Damit der Wildcard DNS im Heimnetz funktioniert, müssen wir diesen separat anlegen, indem wir das Gleiche nochmal tun, nur dieses Mal ein „*.“ vor die Domain setzen:
11.png

Schritt 2.3: Testen
Das Ganze kann man testen, wenn man eine Eingabeaufforderung öffnet und nslookup eingibt. Dort dann umschalten auf die DS als DNS-Server via "server IP_DER_DS" und dann kann man einmal die Domain und einmal eine Subdomain testen. Als Rückgabewert sollte er die IP der DS liefern:
12.png

Bei der FritzBox ist unter bestimmten Konstellationen erforderlich, den Rebind-Schutz für die entsprechende Domain zu deaktivieren, der dafür sorgen kann, dass DNS-Antworten unterdrückt werden, die auf interne Ressourcen zeigen. Das macht man so:
Man wechselt nach Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> runterscrollen bis „Hostnamen-Ausnahmen“. Dort die Domains eintragen und Übernehmen:
14.png

Hierzu noch der AVM KB-Artikel

Schritt 3: Einrichtung des ersten Reverse Proxies
Auch wenn dies eigentlich nicht dazu gehört, werde ich hier zeigen, wie man einen Reverse Proxy einrichtet. Wir richten diesen beispielsweise hier einmal ein, sodass wir mit einer FQDN auf die Admin-Seite des AdGuard kommen.
Dazu wechseln wir ins DSM, gehen in die Systemsteuerung unter Anmeldeportal -> Erweitert auf „Reverse Proxy“ und auf „Erstellen“:
17.png

In dem sich öffnenden Fenster tragen wir nun folgendes ein:
18.png

Wobei ihr den Namen frei wählen könnt. Das „ag“ könnt ihr auch frei wählen. Nur die Domain muss logischerweise auf euere DDNS-Adresse enden. Und falls ihr vorhin nicht Port 8080 für AdGuard angegeben habt, natürlich auch anpassen.
Dann auf Speichern drücken und die Fenster schließen.
Anschließend können wir den AdGuard erreichen über den soeben erstellten RP:
19.png

Wenn es hierzu fragen gibt, könnt ihr euch gerne in diesem Thread melden!

Was ist hier noch geplant?
Aktuell steht nix mehr auf dem Zettel. Ich hab hier alles umgesetzt, was ich usrprünglich geplant hatte und bin sogar weit über's Ziel hinausgeschossen :) . Wenn sich im Laufe der Zeit an den Gegebenheiten was ändert, aktualisiere ich natürlich den Thread. Genau so, wenn mir mal wieder was Neues dazu einfällt. Wenn ihr noch Anregungen habt, natürlich auch gerne vorschlagen!

v2.1.1
24-04-17 | v2.1.1
-Hinweis, dass Anleitung Fehler enthalten kann
24-01-22 | v2.1
-Layout-Anpassungen (alle "Best Practice Threads" haben nun ungefähr die gleiche Struktur)
-Fehler in der Gliederung behoben
-Beschreibungen teils verbessert
-Punkt "DDNS auf interne IP zeigen lassen" deutlich ausgebaut
24-01-09 | v2.0.3
-Agenda hinzugefügt
23-12-01 | v2.0.2
-Ergänzt: "Bei Fragen bitte melden"
23-11-02 | v2.0.1
-Grammatikfehler ausgebessert (Konkret: Fehlende Worte ergänzt :ROFLMAO: )
23-07-29 | v2
-kleinere Verbesserungen
-Auslagerung Einrichtung der Docker Container wegen Übersichtlichkeit und Beschränkungen
-Bilder wieder in den Thread
-OneDrive wieder entfernt, da alle Anhänge nun hier drin sind
23-07-28 | v1.1
-Formatierungen und Formulierungen angepasst
-beide Posts zu einem zusammengefasst (damit Editierbarkeit erhalten bleibt)
-Bilder aus Post entfernt; diese befinden sich nur noch im Anhang (weil sonst zu lang)
-Link zu OneDrive Share mit Dateien eingefügt
 
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Wichtige Info:
Diese Anleitung wurde nach bestem Wissen und Gewissen erstellt und es besteht kein Anspruch auf Vollständigkeit.
Hinweis: Wenn die DS aus ist, habt ihr kein Internet! Bitte bedenken, dass ohne DNS-Server nix mehr geht. Fahrt ihr also die DS per Zeitplan runter, ist diese Vorgehensweise eher schlecht geeignet."
 
Zuletzt bearbeitet von einem Moderator:

maxblank

Benutzer
Contributor
Sehr erfahren
Mitglied seit
25. Nov 2022
Beiträge
4.442
Punkte für Reaktionen
2.371
Punkte
289
Sehr gute und leicht verständliche Anleitung.
Vielen Dank an @plang.pl 👍🏻

Noch eine Anmerkung zu den fertigen Sperrlisten aus dem Internet.
Es kann sehr, sehr mühselig sein, wenn auf einmal zum Beispiel eure Streaming-Dienste oder Apps nicht mehr laufen, da ein Teil geblockt wird. Also immer nur eine Liste einspielen und testen. 😉
Kenne es aus eigener Erfahrung. Zum Teil hat selbst eine komplette Client-Freigabe nicht ausgereicht.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Danke für die Blumen
Und gutes Stichwort @maxblank
Wenn etwas nicht mehr hinhaut, schau ich immer erstmal in die Logs des AdGuard, da man ja oft nicht mal weiß, wegen welcher geblockten Domain App xy nicht mehr funktioniert. Das findet man im Protokoll. Das Protokoll der geblockten Domains ruft man so auf: Klicken auf "durch Filter gesperrt":
21.png


Dann klickt man entweder neben dem blockierten Eintrag rechts auf "Entsperren" oder man erstellt manuell Filterregeln:
20.png

Eine Adresse mit "@@||" dient dabei der Entsperrung. Mit "^$important" erstellt man eine Regel, die vor den anderen greift
 
  • Like
Reaktionen: maxblank

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Ich weiß jetzt nicht, ob bei outbound was konfiguriert werden muss, aber damit Docker mit IPV6 läuft müsst ihr das hier befolgen https://docs.docker.com/config/daemon/ipv6/. Bei DSM ist der Pfad für
Container Manager: /var/packages/ContainerManager/etc/dockerd.json
Docker: /var/packages/Docker/etc/dockerd.json

Danach das Paket neustarten.
 
  • Like
Reaktionen: maxblank

maxblank

Benutzer
Contributor
Sehr erfahren
Mitglied seit
25. Nov 2022
Beiträge
4.442
Punkte für Reaktionen
2.371
Punkte
289
Das ist korrekt, was du schreibst. Aber eine granulierte Freigabe von Links hat trotz dem Protokoll zum Teil nicht zum Erfolg geführt. Wollte es nur am Rande erwähnt haben.
 

Benie

Benutzer
Contributor
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
8.969
Punkte für Reaktionen
3.807
Punkte
344

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Bei dem Link hatte sich am Ende eine ")" eingeschlichen. Ist behoben. Danke
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.503
Punkte für Reaktionen
1.093
Punkte
194

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Die Config Datei ist schon etwas älter. Nein ist keine Absicht.
Laut Container-Log greift er trotzdem auf die "/dev/null" als Log zu. Scheint also Standard zu sein. Müsste man nur das # logfile: /opt/unbound/etc/unbound/unbound.log auskommentieren, wenn man den Log in der Datei haben will.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Wegen Begrenzungen der Thread-Länge und Anzahl der Anhänge habe ich nun den Teil zum Installieren der Docker-Container in einen separaten Thread ausgelagert. Dieser ist aber auch oben an passender Stelle verlinkt. Der zweite Post, welcher aktuell unnötige Doppelinfos enthält, wird noch geändert. Hierzu bin ich mit @Marc in Kontakt.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
aber damit Docker mit IPV6 läuft müsst ihr das hier befolgen
Ich hab das mal getestet. AdGuard / unbound antwortet auch ohne eine eigene funktionierende IPv6 Adresse auf Anfragen mit einer IPv6 Antwort, wenn es erforderlich ist / verlangt wird.
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24
Lässt sich das ganze auch so einsetzen dass man die eigene Domain nutzen kann?

Irgendwie stört es mich zb. https://paperless.meinname.synology.me einzugeben schöner wäre ja paperless.meinedomain.tld

Denke Probleme werden die WIldcard Zertifikate und das auflösen der Domain sein oder?
 

Thonav

Benutzer
Sehr erfahren
Mitglied seit
16. Feb 2014
Beiträge
7.896
Punkte für Reaktionen
1.517
Punkte
274
Natürlich geht das - ich persönlich habe z.b. eine Domain von selfhost.de
Grund dafür war früher, dass die Fritzbox die Serverdaten von denen schon kannte.
Aber Domain-Anbieter gibts ja wie Sand am Meer...
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Die Domain, mit der du das machst, ist vollkommen egal. Du kannst dir auch eine ausdenken. Das Problem ist halt dann nur, dass du für eine Domain, die dir nicht gehört, gar kein Zertifikat bekommst. Die interne Auflösung kriegt man hin. Man kann dem AdGuard auch sagen, er soll "Google.de" auf die IP der DS auflösen. Dann landet jeder im Heimnetz bei der Anfrage auf deiner DS. Sinnvoll ist das nicht - war nur ein Beispiel. Wenn du mit Warnmeldungen beim https-Aufruf leben kannst oder intern nur http nutzen willst, ist das egal. Manche Dienste wie zum Beispiel bitwarden erfordern aber https mit gültigem Zertifikat. Das würde ich dir aber nicht empfehlen. Ich selbst nutze dafür meine netcup Domain, die ich sehr günstig geschossen habe.
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24
Dann müsste ich aber gewisse Ports die ich nicht nach aussen zugänglich habe will in die Firewall eintragen oder überlege ich da gerade falsch?

Eine Domain mit DDNS Service besitze ich, würde da ja das selbe machen wie synology.me ja auch. Die kann ich ja auf der Fritzbox einrichten oder besser ja eigentlich gleich auf der DS. Aber dann für jede Anwendung ein Zertifikat beantragen? Gut ist ja mit Lets Encrypt kein Aufwand.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Nein.
-du brauchst gar keine Weiterleitungen, solange du nicht extern zugreifen willst
->Grund: Dein Client fragt ab jetzt den AdGuard nach der IP für deine Domain und der wiederum antwortet mit der IP der DS. Somit bleibt jeglicher Datenverkehr intern
Aber dann für jede Anwendung ein Zertifikat beantragen?
Nein. Deswegen ja Wildcard. Das gilt für alle Subdomains.
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ich glaube, ich weiß jetzt, was deine Sorge ist: Die DDNS Adresse, die auf deine ext. IP zeigt. Da kann ich dich beruhigen:
-wenn jemand die Domain aufruft, wird er zwar an deinen Router geleitet, der lässt aber ohne Portforwarding nix durch
-du kannst auch (zumindest mit dem Synology Dienst) einstellen, dass selbst extern auf deine interne IP der DS verwiesen werden soll. Somit bekommt ein potenzieller Angreifer eine ungültige Antwort, solange er nicht in deinem Heimnetz ist (mehr dazu siehe auch hier: https://www.synology-forum.de/threads/ddns-intern-nutzen.127599/)


Wenn du ein Wildcard für deine eigene Domain willst, hast du 2 Möglichkeiten:
-du nutzt den Docker-Container acme.sh für die Cert Erstellung (der unterstützt die allermeisten Domains und kann Wildcard Certs abholen, diese kann er dann automatisiert in DSM einspielen und auch erneuern)
-du nutzt statt dem integrierten RP von DSM den NGINX Proxy Manager. Der kann auch Wildcard Certs erzeugen. Allerdings nicht nach DSM einspielen. Du musst also alle Anfragen über den NGINX leiten, damit das Zertifikat stimmt. Was auch nicht weiter schlimm ist. Ich mache es zum Beispiel so.

Methode 1 nutzt die DNS-Challenge von Let's Encrypt für die Cert-Erstellung und Methode 2 nutzt Certbot. Beides funktioniert ohne Portweiterleitung.
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat