[ANLEITUNG] [VERALTET] Unbound/AdGuard-Home/LANCache LXC Container


Recommended Posts

BITTE DIESE ANLEITUNG NICHT MEHR BENUTZEN DA SIE VERALTET IST UND NICHT MEHR AKTUELL!


 

Unbound/AdGuard/LANCache Monolithic in LXC Container

 

Ziel dieser Anleitung soll es sein einen LXC Container aufzusetzen der für die ganzen DNS Anfragen in eurem Netzwerk und auch als LANCache für Blizzard, Steam, EPIC, Windows Updates,... usw. zuständig ist (LANCache ist auch optional).

 

Dies ist speziell für Fritzbox Nutzer interessant die IPVLAN mit Docker Container im br0 Netwerk nicht vernünftig nutzen können um sich so Container im br0 Netzwerk zu ersparen.

 

LANCache ist wie schon oben erwähnt komplett optional und kann als Schritt ausgelassen werden.

 

Eines gleich vorweg, dieses Tutorial sollte auch mit anderen Disributionen funktionieren und auch PiHole statt AdGuard-Home möglich sein jedoch kann ich dazu keine Hilfe leisten da in diesem Tutorial Debian Bullseye verwendet wird und ich nur AdGuard-Home nutze (PiHole Blocklisten werden auch in AdGuard-Home unterstützt).

 

Dieses Tutorial ist für erfahrenere Nutzer gedacht jedoch versuche ich hier alles wirklich komplett Schritt für Schritt zu erklären und obwohl hier oft das Terminal verwendet wird für das initiale Setup/Konfiguration sollten auch neue Unraid Nutzer oder Nutzer die mit dem Terminal nicht vertraut sind damit umgehen können.

Ich würde speziell neuen Nutzern empfehlen sich das Tutorial einmal komplett durchzulesen und dann erst zu starten.

 

Bitte auch ganz zum Schluss hier den Appendix lesen, dieser wird erweitert und beantwortet womöglich einige Fragen.
 

Noch ein Hinweis am Rande, das Tutorial ist so geschrieben das ihr nie mehr als ein Terminal Fenster gleichzeitig offen habt, falls doch habt ihr irgendwo einen Schritt überlesen.

 

  1. LXC von der CA App installieren:
    01.png.cfc16632d38fc07fe12dabc2c9064e4c.png
     
  2. In Unraid zu den Settings gehen und auf LXC klicken, in dem nächsten Fenster Enable LXC auf "Yes" stellen, den gewünschten Pfad für LXC angeben, das Autostart Delay auf mindestens 20 Sekunden stellen 10 Sekunden reichen vollkommen aus und anschließen auf "Update" klicken:
    ACHTUNG: Bitte beim Pfad den "richtigen" Pfad angeben (zB: "/mnt/cache/lxc/" oder "/mnt/disk1/lxc/") und nicht den FUSE Pfad ("/mnt/user/lxc/") um möglichen Problemen wie zB Performanceinbrüchen vorzubeugen. Ich würde euch stark empfehlen den LXC Pfad nicht auf das Array zu legen sondern entweder fix auf den Cache oder eine Disk die mittel UnassignedDevices gemounted ist <- der LXC Pfad und dessen Inhalt ist nicht leicht ohne Probleme wo anders hin zu verschieben (bitte beachtet auch das beim Pfad hinten am Ende ein "/" sein muss).
    02.png.35c9e176f7d872e0a39305175ac4409b.png

    WARNUNG: Niemals ein Fix Permissions auf dem LXC Pfad ausführen, das wird/würde alle Container zerstören.
     
  3. Zu LXC wechseln und auf Add Container klicken:
    03.png.c0aea715b3de53ca0ccd48fc62d2d40a.png
     
  4. Im nächsten Fenster den Container Namen eingeben, evtl. die MAC Adresse notieren bzw. in eurem Router eine Statische IP für diese MAC Adresse vergeben und auf "Create" klicken (hier, im Appendix, ist noch eine kleine Anleitung wie ihr eine Statische IP im Container vergebt):
    04.png.2ceed4113465801b1e578eb9793d003f.png
     
  5. Wenn der Container fertig erstellt wurde solltet ihr diese Ausgabe bekommen, mit "Done" bestätigen und erneut auf LXC klicken:
    05.png.98c4732eec2bed8d93b6d0a2f59e52c8.png
     
  6. Danach auf das Symbol von unserm neu erstellten LXC Container klicken und "Start" wählen:
    06.png.ac964d2b5de46f452f6309ef9fbb7849.png
     
  7. Nochmals auf den Container klicken und "Terminal" klicken, bitte alle folgenden Befehle in diesem Fenster ausführen:
    07.png.f262d9ef93902d4b1ed2775ac66396f6.png
     
  8. Im nächsten Fenster dann diesen Befehl per Copy/Paste einfügen und Enter drücken (hier installieren wir mal die Basics):
    apt-get update && apt-get -y install nano curl wget cron

     
  9. Danach installieren wir Docker mit diesem Befehl per Copy/Paste und Enter drücken:
    curl -fsSL https://get.docker.com -o /tmp/get-docker.sh && \
    chmod +x /tmp/get-docker.sh && \
    /tmp/get-docker.sh && \
    rm /tmp/get-docker.sh

     
  10. Als nächstes müssen wir den DNS Listener der standardmäßig an ist ausschalten und den Dienst neu starten, Copy/Paste und Enter drücken:
    sed -i "s/#DNSStubListener=yes/DNSStubListener=no/g" /etc/systemd/resolved.conf && \
    systemctl restart systemd-resolved


     

  11. Jetzt beginnen wir mit der Installation unserer DNS Container, wir starten hier mit AdGuard-Home mit diesem Befehl, Copy/Paste und Enter drücken:
    (die Pfade und Ports wurden alle schon dementsprechend angepasst und müssen nicht mehr geändert werden)
    ACHTUNG: Bitte passt den Wert TZ nach dem "=" aus diesem Befehl an (hier eine Übersicht aller TZ)
    docker run -d --name='AdGuard-Home' \
      --net='bridge' \
      -e TZ="Europe/Vienna" \
      -v '/docker/adguard_home/workingdir':'/opt/adguardhome/work':'rw' \
      -v '/docker/adguard_home/config':'/opt/adguardhome/conf':'rw' \
      -p 53:53 -p 53:53/udp -p 3000:3000 \
      --restart=unless-stopped \
      --no-healthcheck \
      'adguard/adguardhome'

     
  12. Als nächstes installieren wir nun Unbound mit diesem Befehl, Copy/Paste und Enter drücken:
    ACHTUNG: Bitte passt den Wert TZ nach dem "=" aus diesem Befehl an (hier eine Übersicht aller TZ)
    docker run -d --name='Unbound' \
      --net='container:AdGuard-Home' \
      -e TZ="Europe/Vienna" \
      -v '/docker/unbound/':'/opt/unbound/etc/unbound':'rw' \
      --no-healthcheck \
      --restart=unless-stopped \
      'mvance/unbound'

     
  13. Danach diesen Befehl ausführen um Unbound zu Stoppen, die initiale Konfiguration zu löschen und unsere Konfiguration einzufügen, Copy/Paste und Enter drücken:
    (nicht erschrecken wenn ihr dann etwas seht das Nano anzeigt, das ist ein einfach Texteditor den wir hier benutzen um die Konfiguration einzufügen, dazu mehr im nächsten Schritt)
    docker container stop Unbound && \
    rm /docker/unbound/unbound.conf && \
    nano /docker/unbound/unbound.conf

     
  14. Das Terminal sollte jetzt Nano anzeigen und der Cursor sollte in der ersten Zeile stehen, in Nano könnt ihr mit den Pfeiltasten navigieren falls ihr was ändern wollt.
    Ladet euch diese Datei herunter:  unbound.conf, öffnet sie und Copy/Pasted den Inhalt der Datei in das geöffnete Terminal in Nano dort hinein, wenn ihr das gemacht, und noch evtl. Anpassungen vorgenommen habt drückt auf der Tastatur "STRG + S" (das speichert unsere Konfiguration für Unbound) und danach "STRG + X" (damit verlasst ihr den Editor).
    ACHTUNG: Bitte passt die IP bei der Zeile "access-control: 10.0.0.185/8 allow snoop" mit der Container IP Adresse an die ihr verwendet bzw. verwenden wollt.
    Hinweis: Wie schon oben geschrieben, navigieren könnt ihr mit den Pfeiltasten und teilweise auch mit der Maus, würde euch aber die Pfeiltasten empfehlen.
  15. Jetzt holen wir uns noch die neueste root.hints für Unbound und starten anschließend den Unbound Container wieder mit diesem Befehl, Copy/Paste und Enter drücken:
    wget -q -O /docker/unbound/root.hints "https://www.internic.net/domain/named.root" && \
    docker container start Unbound

 

 

Das wäre es mal mit dem Initialen Setup von Unbound als nicht Forwardenen DNS Server und AdGuard-Home, wenn ihr LANCache nicht installieren wollt dann zu diesem Post springen, falls Ihr LANCache installieren wollt einfach weiter scrollen.

  • Like 4
  • Thanks 7
Link to comment

LANCache-Monolithic (optional):

 

Ich empfehle euch wenn ihr LANCache verwendet eine dedizierte Festplatte zu verwenden die mittels UnassignedDevices beim Start von Unraid automatisch gemounted wird oder als separaten nicht gespiegelten Pool aus Performance Gründen zu verwenden.

 

Der LANCache auf dem (Paritätsgeschütztem) Array macht keinen Sinn und ist aus Performance Gründen nicht zu empfehlen, wie schon oben geschrieben würde ich euch empfehlen bei 1Gbit/s LAN mindestens eine 7200rpm HDD und bei 2,5Gbit/s bzw. 10Gbit/s mindestens eine SATA SSD oder noch besser eine NVME zu verwenden.

 

  1. Im LXC Container legen wir uns als erstes einen leeren Ordner an in dem wir die Festplatte von Unassigned Devices oder von unserem Pool mounten können, Copy/Paste und Enter drücken:
    (bitte das Verzeichnis nicht ändern!)
    mkdir -p /mnt/lancache

     
  2. Danach müssen wir den LXC Container Stoppen und die Konfiguration auf Unraid direkt bearbeiten, dazu können wir das Terminal Fenster von unserem LXC Container schließen, klickt auf das Container Symbol und klickt "Stop":
    16.png.3da45f7b02f1be52393eccc4a04ce36b.png
     
  3. Um herauszufinden wo unsere Konfiguration gespeichert ist nochmal auf das Container Symbol klicken und "Show Config" auswählen:
    17.png.b345dbf11d92dd4434e48278bbc6595d.png
     
  4. Im nun erscheinenden Pop-Up den Dateipfad der Konfigurationsdatei auswählen, in die Zwischenablage kopieren und auf "Done" klicken:
    18.png.787f7caa87f822251eb2f31bc9be8481.png
     
  5. In Unraid rechts oben auf das Terminal Symbol klicken:
    19.png.392d050763543a2a4c32c96b5dbffdb7.png
     
  6. In diesem Terminal schreibt ihr jetzt: "nano /PFAD/ZU/EURER/config" und drückt danach Enter:
    (natürlich müsst ihr nach nano den kopierten Pfad zu der Konfiguration von Schritt 4 einfügen und Enter drücken - Leerzeichen zwischen nano und dem eingefügtem Pfad nicht vergessen😞
    20.png.19c369aa15fe470361437b6cc6a4b1b4.png
     
  7. Ihr solltet nun die Konfiguration für diesen Container sehen die eigentlich für uns nicht wichtig ist, navigiert mit den Pfeiltasten ganz zum Schluss und fügt dort folgendes ein:
    lxc.mount.entry = /mnt/disks/misc/lancache mnt/lancache none bind 0 0

    ACHTUNG: Bitte beachtet hierbei das "/mnt/disks/misc/lancache" der Pfad zu meinem Verzeichnis für LANCache den ich mittel Unassigned Devices gemounted habe ist, diesen müsst ihr vorher Anlegen und das Verzeichnis muss schon vorher existieren (sprich "/mnt/disks/misc" ist die disk und "/lancache" ist ein Verzeichnis auf dieser Platte).
    Der nächste Part "mnt/lancache" ist das Verzeichnis im Container das wir in Schritt 1 angelegt haben (der fehlende "/" von diesem Part ist kein Tippfehler!)
    Der letzte Part "none bind 0 0" sind Anweisungen wie das Verzeichnis in den LXC Container gemounted werden soll.
     
  8. Danach drückt ihr wieder "STRG + S" (zum Speichern) und danach "STRG + X" (zum Verlassen).
     
  9. Bitte das Terminal Fenster von Unraid das wir in Schritt 5 geöffnet haben jetzt wieder schließen.
     
  10. Anschließend starten wir unseren Container wieder:
    Hinweis: Wenn euer Container nicht starten und auf "stopped" bleiben sollte ist ein Pfad bzw. mit dem oben eingefügtem mount Eintrag etwas falsch, bitte kontrollieren und gegebenenfalls anpassen.
    06.png.dd0bdfbcfb2a108b6edaa4965cc9ee9f.png
     
  11. Öffnet das Terminal von unserem LXC Container wieder:
    07.png.4b237c204e43a19ce6ac4e189de0ab2f.png
     
  12. Jetzt kann der LANCache Container mit diesem Befehl installiert werden:
    ACHTUNG: Bitte passt die Werte nach dem "=" aus diesem Befehl an:
    CACHE_DISK_SIZE (Größe des Caches, Standard: 1GiB)
    CACHE_INDEX_SIZE (sollte pro zusätlichem 1GiB immer mindestens um 250MiB erhöht werden)
    CACHE_MAX_AGE (wie lange Dateien im Cache behalten werden sollen, Standard: 3650 Tage)
    TZ (hier eine Übersicht der TZ)
    docker run -d --name='LANCache' \
      --net='bridge' \
      -e CACHE_DISK_SIZE="1000000m" \
      -e CACHE_INDEX_SIZE="250m" \
      -e CACHE_MAX_AGE="3650d" \
      -e TZ="Europe/Vienna" \
      -v '/mnt/lancache/cache':'/data/cache':'rw' \
      -v '/mnt/lancache/logs':'/data/logs':'rw' \
      -p 80:80 -p 443:443 \
      --no-healthcheck --restart=unless-stopped \
      'lancachenet/monolithic'


Die Installation des LANCaches ist damit abgeschlossen bitte scrollt weiter nach unten um mit dem Tutorial weiter zu machen.

  • Like 2
  • Thanks 2
Link to comment

In diesem Schritt legen wir uns zwei geplante Aufgaben im crontab an die uns die root.hints Datei und die Container automatisch updatet:

 

  1. Ladet euch bitte diese beiden Dateien herunter (bitte die entsprechende Datei update-containers.sh mit oder ohne LANCache herunterladen):
    update-roothints.sh
    update-containers (mit lancache).sh
    update-containers (ohne lancache).sh
  2. Führt den folgenden Befehl im Terminal aus, Copy/Paste und Enter drücken:
    nano /root/update-roothints.sh

     
  3. Öffnet jetzt die heruntergeladene update-roothints.sh, kopiert den kompletten Inhalt in die Zwischenablage, fügt dann den Inhalt der Zwischenablage im Terminal in Nano ein und drückt wieder "STRG + S" (zum speichern) und "STRG + X" (zum schließen)
     
  4. Führt den folgenden Befehl im Terminal aus, Copy/Paste und Enter drücken:
    nano /root/update-containers.sh
  5. Öffnet jetzt die heruntergeladene update-containers.sh (die dementsprechende mit oder ohne lancache) kopiert den kompletten Inhalt in die Zwischenablage, fügt dann den Inhalt der Zwischenablage im Terminal in Nano ein, vergesst nicht evtl. die TZ und evtl. anderen Variablen die ihr möglicherweise bei den vorigen Schritten geändert habt auch zu bearbeiten und drückt wieder "STRG + S" (zum speichern) und "STRG + X" (zum schließen)
     
  6. Danach machen wir das ganze noch ausführbar mit diesem Befehl, Copy/Paste und Enter drücken:
    chmod +x /root/update-*.sh

     
  7. Schlussendlich legen wir noch die geplante Aufgabe im crontab an mit folgendem Befehl, Copy/Paste und Enter drücken:
    (hier werdet ihr gefragt mit was ihr den crontab editieren wollt, wählt nano aus, in meinem Fall die 1 und drückt Enter)
    crontab -e
    27.png.01bcc017c8917e3dca170277ad34c9cf.png

     
  8. Fügt das hier ganz am Schluss mittels Copy/Paste ein und drückt wieder "STRG + S" (zum speichern) und "STRG + X" (zum schließen):
    5 0 1 * * /root/update-roothints.sh > /var/log/update-roothints.log
    10 0 * * 1 /root/update-containers.sh > /var/log/update-containers.log

     
  9. Schließt nun das Terminal vom LXC Container und scrollt weiter
Edited by ich777
updated update-roothints.sh file
  • Like 2
  • Thanks 1
  • Upvote 1
Link to comment

AdGuard-Home Konfigurieren

 

  1. Zurück auf der LXC Seite solltet ihr die IP eures LXC Containers sehen (wenn nicht einmal die Seite neu laden):
    29.png.b7670af6e8a9062dcd760fda7db2c0dd.png
     
  2. Gebt nun im Browser die IP gefolgt von einem Doppelpunkt und 3000 ein und drückt Enter, in meinem Fall:
    10.0.0.185:3000

     
  3. Ihr solltet nun die AdGuard-Home Wilkommens-Seite sehen, klickt auf Anfangen:
    31.png.c7ee92a7fae59880d3a1713215ab2f70.png
     
  4. ACHTUNG: Im 2. Schritt ganz wichtig bei "Admin Web Interface" müsst ihr den Port von 80 auf 3000 ändern, solltet ihr das nicht machen müsst ihr die Konfigurationsdatei manuell bearbeiten und AdGuard-Home neu starten.
    32.png.f7e74425d6a0e8c08176532d9b7385eb.png
     
  5. Vergebt einen Administrator Benutzernamen/Passwort, folgt den Anweisungen und schließt den Setup Assistenten ab.
     
  6. Im Dashboard von AdGuard-Home angekommen klickt auf "Einstellungen" -> "DNS Einstellungen", löscht den vorhanden Eintrag bei "Upstream DNS Server" heraus und fügt folgendes ein (das ist in diesem Fall unser Unbound):
    127.0.0.1:8053
    33.png.62c45eb9c5b685ea2e2658568740a41f.png
     
  7. Danach ganz wichtig scrollt ein Stück nach unten (nicht ganz nach unten) und klickt auf "Übernehmen":
    35.png.65895a2f02e2f541f729ab9d8bfb16b8.png
     

 

Solltet ihr den LANCache auch installiert haben geht's hier weiter ansonsten, Glückwunsch, ihr seid fertig!

 

Falls ihr fertig seid lest euch auf jeden Fall noch den Appendix hier durch und auch noch diesen Post zu ende.

 

Richtet nun euren DHCP Server so ein das er als DNS die IP verteilt die ihr hier eingerichtet habt, in meinem Fall 10.0.0.185 oder vergebt die DNS auf den Endgeräten manuell.

 

ACHTUNG: Ihr müsst womöglich euren DNS Cache Leeren bzw. in den meisten Fällen hilft auch ein Reboot des Endgerätes.

Falls ihr noch DoH nach außen freigeben wollen für euren Mobilen Endgeräte, könnt ihr hier im Appendix weiterlesen, sozusagen AdBlock on the go mit eigenem DNS nicht weiterleitendem DNS Server.

  • Like 1
  • Thanks 1
Link to comment

AdGuard-Home für LANCache Konfigurieren

 

Abschließend müssen wir noch AdGuard-Home konfigurieren das alle Anfragen die über den LANCache laufen sollen umgeleitet werden

 

  1. Dazu ladet euch als erstes bitte diese Datei runter und öffnet sie mit Notepad++, Wordpad oder was auch immer Suchen und Ersetzen kann: rewrites
     
  2. In der Datei müsst ihr nach "Replace_ME" bei Suchen nach eingeben und bei Ersetzen durch die IP von eurem LXC Container, in meinem Fall "10.0.0.185" danach klickt auf "Alle ersetzen", lasst diese Datei noch offen, die brauchen wir gleich:
    36.thumb.png.afb463bca688f3dc4ccb7a17893d2696.png
     
  3. Danach öffnet ihr bitte wieder das Terminal vom LXC Container:
    07.png.b27bdd84c5f1b41524a8f5c6e71e1841.png
     
  4. Im Terminal angekommen müssen wir die Konfiguration von AdGuard-Home bearbeiten, Copy/Paste und Enter drücken:
    nano /docker/adguard_home/config/AdGuardHome.yaml

     
  5. In dieser Datei müsst ihr nun nach der Zeile: "  rewrites: []" suchen:
    38.png.a803306337d2694c5d953da2f4e4bb00.png
     
  6. Löscht diese Zeile und kopiert nun den Inhalt der Datei von Schritt 2 an diese Stelle, das ganze sollte dann so aussehen:
    ACHTUNG: Achtet auch auf das zweite Bild das ich hier angehängt habe, am Schluss muss es dann so ähnlich aussehen wie auf dem zweiten Bild.
    39.png.d622d0bee1d37e711f8a3acc1e217460.png
    ...
    39a.png.9e03cca0a0dbd6fe5f419aab7d7b75e2.png
     
  7. Danach speichern wir die Datei wieder mit "STRG + S" (zum Speichern) und verlassen die Datei wieder mit "STRG + X"
     
  8. Jetzt stoppen und starten wir Unbound und Adguard mit diesem Befehl, Copy/Paste und Enter drücken:
    docker container stop Unbound AdGuard-Home && \
    docker container start AdGuard-Home && sleep 2 && \
    docker container start Unbound

     
  9. Das Terminal vom LXC Container kann jetzt geschlossen werden und wir prüfen ob AdGuard-Home die Rewrites auch wirklich korrekt eingetragen hat und gehen dazu in das Webinterface, in meinem Fall im Browser 10.0.0.185:3000 öffnen und zu "Filters" -> "DNS rewrites" navigieren. Hier solltet ihr nun folgendes sehen:
    41.thumb.png.8f9336f978d9dd4fe531387f0de8c555.png

 

Glückwunsch die Konfiguration ist jetzt abgeschlossen und ihr seid fertig, lest euch aber bitte diesen post noch bis zum ende durch und ich empfehle euch auch noch hier den Appendix zu lesen.


Wenn ihr es noch nicht getan habt richtet nun euren DHCP Server so ein das er als DNS die IP verteilt die ihr hier eingerichtet habt, in meinem Fall 10.0.0.185 oder vergebt die DNS auf den Endgeräten manuell.


ACHTUNG: Ihr müsst womöglich euren DNS Cache Leeren bzw. in den meisten Fällen hilft auch ein Reboot des Endgerätes.

 

 

Um zu Testen ob der LANCache auch wirklich funktioniert macht wieder ein Termial vom LXC Container auf und fügt dann in diesem Terminal folgenden Befehl aus, Copy/Paste und Enter drücken:

tail -f /mnt/lancache/logs/access.log

Lasst das Terminal offen und startet einen Download bei Steam, ihr solltet dann viele Zeilen in dem Terminal das ihr offen gelassen habt sehen:46.thumb.png.0b79e47f17e1690a10223e1ddd5c57e9.png

 

In diesem Fall seht ihr das hier überall "MISS" steht, das heißt das er die Dateien im LANCache nicht gefunden hat aber sie jetzt gecached hat, wenn der nächste dann das Spiel runter lädt werdet ihr statt "MISS" "HIT" sehen und das bedeutet dann das die Dateien vom Cache geladen werden (gleiches gilt für Windows Updates, Epic, Blizzard, usw.).

  • Like 1
  • Thanks 1
Link to comment

Appendix

 

Statische IP im Container vergeben:
 

  1. Startet das Terminal von eurem LXC Container:
    07.png.9b28b85f08c9ddf7ca0ace236ec0f07f.png
     
  2. Öffnet nun die network Datei mit folgendem Befehl, Copy/Paste und Enter drücken:
    nano /etc/systemd/network/eth0.network

     
  3. In Nano angekommen löscht ihr alles aus der Datei mit "ENTF" auf eurer Tastatur und fügt diesen Inhalt ein:
    ACHTUNG: Bitte passt die Werte nach dem "=" aus diesem Befehl an
    Address (hier fügt ihr die IP Adresse ein die der Container bekommen soll gefolgt von /24 wie auf dem Bild)
    Gateway (hier kommt die IP von eurem Gateway rein, das ist normalerweise euer Router)
    DNS (hier einen DNS Server eintragen der immer erreichbar ist, wahlweise solltet ihr auch die IP von eurem Router, Cloudflare DNS oder den DNS provider eurer wahl angeben)
    [Match]
    Name=eth0
    
    [Network]
    Address=10.0.0.185/24
    Gateway=10.0.0.138
    
    DNS=10.0.0.138
    
    [DHCP]
    UseDNS=false

 

 

DNS und Unraid:

Ich würde euch auch noch stark empfehlen in Unraid einen DNS Server an zu geben der immer erreichbar ist wie zB euren Router, Cloudflare DNS oder den DNS Provider eurer wahl damit Unraid immer exklusiven zugriff auf das Internet hat.

Hintergrund ist dieser da beim Bootvorgang manche Plugins bzw. auch Unraid selbst sonst keinen Internet zugriff hat da der DNS Service (in diesem Fall unser LXC Container) eben noch nicht gestartet ist.

 

 

Backup:


Generell würde es genügen die Konfigurationsdateien von AdGuard-Home und Unbound irgendwo abzuspeichern, ihr könnt euch aber auch mittels LXC einen Snapshot erstellen, jedoch würde ich euch hierbei empfehlen nur einen Snapshot zu erstellen wenn alles fertig eingerichtet ist und alles nach euren wünschen läuft sonst belegt das nur unnötig Speicherplatz und die Konfiguration ändert sich eigentlich auch nicht.

 

 

DoH von außen auf dem Handy nutzen:

 

  1. Falls ihr den integrierten DoH Server von AdGuard auch von außen nutzen wollte müsst ihr die AdGuard-Home WebGUI aufrufen, danach zu "Einstellungen" -> "DNS Einstellungen" navigieren und beim "Bootstrap DNS Server" die IP von dem DNS LXC Container eintragen:
    34evtl.png.13c56339bca6f6ec54b0298f22b01db1.png
     
  2. Danach wieder ein Stück nach unten scrollen und auf speichern drücken:
    35.png.cb846dffebb6b9a0ffbad1eeb00844be.png
     
  3. Ihr könnt nun den DoH Server mittels Reverse Proxy (SWAG oder Nginx Proxy Manager) nach außen frei geben, die Konfiguration für nginx könnte zum Beispiel so aussehen:
    (SWAG liefert übrigens bereits so eine Konfiguration im Ordner "proxy-confs" mit die ihr nur mehr bearbeiten müsst)
    ACHTUNG: beim untenstehenden Beispiel muss noch der Domainname bzw. Subdomain und die IP angepasst werden.
    server {
    	listen 443 ssl http2;
    
    	include /config/nginx/ssl.conf;
    	include /config/nginx/error.conf;
    
    	server_name dns.euredomain.org;
    
    	location / {
    		proxy_pass http://10.0.0.185:3000/dns-query;
    		proxy_redirect off;
    		proxy_set_header Host $host;
    		proxy_set_header Upgrade $http_upgrade;
    		proxy_set_header Connection $http_connection;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_set_header X-Forwarded-Proto $remote_addr;
    		proxy_set_header X-Forwarded-Protocol $scheme;
    		proxy_set_header X-Forwarded-Host $http_host;
    		}
    }


     

  4. Danach könnt ihr euch mit der AdGuard App (Android/iOS), DNSCloak (iOS), Intra (Android),... mit dem DoH Server verbinden und euren nicht Weiterleitenden DNS Server inklusive AdBlocking benutzen.

 

 

LXC WARNUNG:

 

ACHTUNG: Wie schon oben geschrieben, bitte verändert niemals etwas direkt in einem rootfs Ordner von LXC da ihr euch ansonsten den ganzen LXC Container zerschießen könnt, ihr könnt Dateien raus kopieren aber niemals etwas hineinkopieren, Rechte ändern oder sonstiges darin verändern.
Bitte auch niemals New Permissions auf den LXC Ordner ausführen, das wird alle LXC Container zerstören!

  • Like 2
  • Thanks 2
Link to comment
  • ich777 changed the title to [ANLEITUNG] Unbound/AdGuard-Home/LANCache LXC Container
  • 1 month later...
On 3/4/2023 at 4:12 PM, ich777 said:

Hey @ich777,

zu allererst: Tolle Arbeit mit der Anleitung. Hat bei mir alles auf Anhieb geklappt und funktioniert einwandfrei. 👍 💜

 

Allerdings ist mir aufgefallen, dass in der update-roothints.sh die Versionen der alten und der neuen root hints verglichen werden. Aktuell (zumindest ist es bei mir so) ist da jedoch kein String "related version of root zone" mehr drin. Darum updated dein Script bei mir nicht.
Ich habe das Script bei mir jetzt angepasst, so dass es den hash wert der alten und neuen Datei vergleicht und die alte updated, wenn diese nicht gleich sind.

Das sollte die root hints updaten, wenn es eine neue Version gibt, egal wie der Inhalt aussieht.

Das script darf gerne in die Anleitung aufgenommen werden, falls andere auch selbe Problem wie ich haben.

 

VG p0thi

 

 

#!/bin/bash
# Set Variables
CONTAINER_NAME="Unbound"
UB_FOLDER="/docker/unbound"
FILE_NAME="root.hints"
ROOT_HINTS_URL="https://www.internic.net/domain/named.root"

# Calculate the hash for the current file
CUR_HASH=$(sha256sum ${UB_FOLDER}/${FILE_NAME} | awk '{print $1}')

# Download new root.hints
cd ${UB_FOLDER}
wget -q -O ${UB_FOLDER}/new.${FILE_NAME##*.} "${ROOT_HINTS_URL}"

# Check if the download succeeded
if [ $? -ne 0 ]; then
  echo "---Failed to download new file. Exiting.---"
  exit 1
fi

# Calculate the hash for the new file
LAT_HASH=$(sha256sum ${UB_FOLDER}/new.${FILE_NAME##*.} | awk '{print $1}')

# Compare the hashes
if [ -z "${LAT_HASH}" ]; then
  echo "---Can't calculate hash for new file. Exiting.---"
  exit 1
elif [ "${CUR_HASH}" != "${LAT_HASH}" ]; then
  echo "---Update found for ${FILE_NAME}, restarting container: ${CONTAINER_NAME}!---"
  cp ${UB_FOLDER}/new.${FILE_NAME##*.} ${UB_FOLDER}/${FILE_NAME}
  docker restart ${CONTAINER_NAME}
else
  echo "---Nothing to do, ${FILE_NAME} is up-to-date!---"
  rm ${UB_FOLDER}/new.${FILE_NAME##*.}
fi

 

  • Like 2
Link to comment
15 hours ago, p0thi said:

Das script darf gerne in die Anleitung aufgenommen werden, falls andere auch selbe Problem wie ich haben.

Danke für den Hinweis, aktuell hab ich es bei mir sogar schon geändert und ich vergleich das Erstellungsdatum der Datei anstatt ein hash zu erstellen.

 

Ich werde das bei Gelegenheit mal updaten, danke nochmal.

 

Evtl. kommen sowieso bald coole features für LXC auf Unraid. 😉

 

 

EDIT: Ist aktualisiert.

BTW, freut mich das LXC und meine Tutorials auch jemand nutzt. :)

  • Like 1
Link to comment
On 3/4/2023 at 4:12 PM, ich777 said:

Abschließend müssen wir noch AdGuard-Home konfigurieren das alle Anfragen die über den LANCache laufen sollen umgeleitet werden

Hi zusammen,

Nochmal ich :)
Auch für das Einstellen der Rewrites vom AdGuard habe ich ein Script geschrieben, das die Rewrites erstellt und bei jeder Ausführung die aktuelle Liste einspielt.

Dazu wird das offizielle GitHub Repository verwendet, das auch standardmäßig von LanCache genutzt wird: uklans/cache-domains

 

Zusammengefasst klonen wir das GitHub Repo auf unseren LXC Container, erstellen das Script und führen es aus. Das Script holt sich die aktuelle Liste, trägt die Cache Domains zusammen und fügt sie in die AdGuardHome config YAML Datei ein.

 

Hier nun die Schritt für Schritt Anleitung, was man machen muss:

Zuerst müssen wir yt im Container installieren, damit das Script mit yaml Strukturen arbeiten kann. Dazu nehmen wir nicht den Weg über apt-get, sondern installieren es direkt von GitHub.
Als erstes müssen wir yq herunterladen:

wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64

 

 

Als nächstes müssen wir die eben heruntergeladene Datei ausführbar machen:

chmod a+x /usr/local/bin/yq

 

 

Nun wechseln wir in das Verzeichnis des root Users. Dorthin werden wir das cache-domains GitHub Repo klonen. Man kann auch einen beliebigen anderen Ort dafür wählen, jedoch sind die Befehle im weiteren Verlauf an diesen Ort angepasst:

1. Verzeichnis wechseln:

cd /root/

 

 

2. GitHub Repo klonen

git clone https://github.com/uklans/cache-domains.git

ACHTUNG: Dabei kann es vorkommen, dass man gefragt wird, ob man dem Fingerabdruck von GitHub vertraut und diesen speichern will. Das muss man mit "yes" bestätigen. Danach den "git clone ..." Befehl erneut ausführen.

 

 

Jetzt wechseln wir in das neu geklonte Verzeichnis

cd /root/cache-domains

 

 

Jetzt muss man sich die folgende Datei herunterladen:

create-rewrites.sh

 

Nun erstellen wir eine Datei mit dem Namen create-rewrites.sh

nano /root/cache-domains/create-rewrites.sh

 

 

Jetzt öffnen man die heruntergeladene create-rewrites.sh, kopiert den kompletten Inhalt in die Zwischenablage, fügt dann den Inhalt der Zwischenablage im Terminal in Nano ein und drückt wieder "STRG + S" (zum speichern) und "STRG + X" (zum schließen)

 

 

Jetzt müssen wir auch dieses Script noch ausführbar machen

chmod +x /root/cache-domains/create-rewrites.sh

 

 

Jetzt ist das setup schon fertig und das Script kann verwendet werden:

cd /root/cache-domains/ && ./create-rewrites.sh <lancache_ip> /docker/adguard_home/c
onfig/AdGuardHome.yaml

WICHTIG: auch hier <lancache_ip> durch die IP des LXC Containers ersetzen.

 

 

Jetzt kann man auch dafür einen Cronjob anlegen, der automatisch regelmäßig die rewrite Liste mit den aktuellen cache domains aktualisiert:

Crontab öffnen:

crontab -e

 

 

Das Folgende ganz zum Schluss einfügen. WICHTIG: Auch hier wieder <lancache_ip> durch die IP eures LXC Containers ersetzen:

0 4 */10 * * cd /root/cache-domains/ && ./create-rewrites.sh <ip_address> /docker/adguard_home/config/AdGuardHome.yaml > /var/log/create-rewrites.log

 

 

Nun ist alles fertig eingerichtet und die Rewrites des AdGuardHome aktualisiert sich automatisch.
Anzumerken ist hierbei, dass Rewrites, die über das AdGuard Web-Interface hinzugefügt wurden, dadurch jedes mal überschrieben werden. Wer das nicht will sollte den Cronjob nicht anlegen und das Script nicht ausführen.

 

 

 

Tip von mir:

Ich ersetze <ip_address> durch folgendes:

$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)

Dadurch wird automatisch die im lokalen Netzwerk sichtbare IP des Netzwerkadapters "eth0" verwendet, ohne, dass ich sie hier fix hinschreiben muss (eth0 sollte für dieses Setup immer der richtige Netzwerkadapter sein). Mein Cronjob sieht dann folgendermaßen aus:

0 4 */10 * * cd /root/cache-domains/ && ./create-rewrites.sh $(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) /docker/adguard_home/config/AdGuardHome.yaml > /var/log/create-rewrites.log

Das ist aber nicht notwendig. Es funktioniert genauso gut, wenn man die IP einfach hinschreibt.

 

 

 

Ich hoffe ich kann ein paar Menschen damit Helfen

  • Like 4
Link to comment
9 hours ago, Maurice97 said:

Sobald ich die rewrites wie im Tutorial einstelle bekomme ich nichts mehr zum laufen siehe Bild

Das sieht aber nicht nach einem rewrite Problem aus, hier startet Unbound nicht was eigentlich nichts mit den Rewrites zu tuhen hat.

 

Kannst du mal deine AdGuard config als datei posten (vergiss nicht das passwort zu entfernen).

Link to comment
11 hours ago, ich777 said:

Das sieht aber nicht nach einem rewrite Problem aus, hier startet Unbound nicht was eigentlich nichts mit den Rewrites zu tuhen hat.

 

Kannst du mal deine AdGuard config als datei posten (vergiss nicht das passwort zu entfernen).

Guten Tag, 

nach längerem Überlegen ist mir eingefallen die conifg mal über einen validator zu schicken und dort ist aufgefallen dass vor rewrites: noch ein blank space war und AdGuard deshalb nicht starten konnte. Seitdem ich es eben abgeändert habe fährt alles ohne Probleme wieder hoch und die rewrites wurden erfolgreich in AdGuard eingetragen.

P.S. mir ist leider aufgefallen nachdem alles wie in der guten Anleitung gemacht wurde wird die LanCache leider nicht auf meinem PC verwendet obwohl die Dns im dem Adapter Manuell eingetragen wurde. Kann mir dabei jemand helfen? 
 

Edited by Maurice97
  • Like 1
Link to comment
16 hours ago, Maurice97 said:

P.S. mir ist leider aufgefallen nachdem alles wie in der guten Anleitung gemacht wurde wird die LanCache leider nicht auf meinem PC verwendet obwohl die Dns im dem Adapter Manuell eingetragen wurde. Kann mir dabei jemand helfen? 

Du solltest immer einen neuen post machen, ich hab das nur per zufall gesehen.

 

Hast du denn als DNS den container in deinem DHCP server eingetragen?

Welchen DHCP server verwendet dein PC denn? Welche IP hat dein Container? siehst du in der AdGuard Weboberfläche das das blocking funktioniert und das es von Geräten im LAN benutzt wird?

Link to comment
  • 2 weeks later...

Guten Tag. Eine sehr schöne Anleitung, allerdings lädt auf meinem System nicht mal Debian- bzw. man kann den ersten Container nicht erstellen. Wo liegt denn da mein Fehler? ich nutze eine separate 2Tb Platte auf die der LXC Pfad in den Einstellungen zeigt- habe diese auch 2. formatiert.....

 

ERROR, failed to create container DNS!

Downloading the image index
Downloading the rootfs
Downloading the metadata
mkdir: cannot create directory '/var/cache/lxc': Too many levels of symbolic links
lxc-create: DNS: ../src/lxc/lxccontainer.c: create_run_template: 1628 Failed to create container from template
lxc-create: DNS: ../src/lxc/tools/lxc_create.c: main: 317 Failed to create container DNS

  • Like 1
Link to comment
40 minutes ago, zutschkutte said:

LXC Pfad in den Einstellungen zeigt- habe diese auch 2. formatiert.....

Kannst du mal einen screenshot von deinen LXC Einstellungen posten bitte?

 

Mountest du auf das root verzeichnis in der platte oder wie machst du das genau? Hast du es schon einmal mit einem Untervezeichnis auf der Platte versucht?

 

38 minutes ago, Mainfrezzer said:

woher kommt denn das "/var/"?

Ist der Standardpfad der per symlink eingebunden wird.

  • Like 2
Link to comment
6 minutes ago, zutschkutte said:

kann ich hier das .zip file rein stellen oder braucht man ne bestimmte datei im editor?

Du musst das aber nicht so machen das du die disk zwingend als cache mountest das ist dir schon klar oder?

Es wäre auch eine Möglichkeit die Disk anders zu benennen und dann dort den Pfad im plugin zu mounten.

 

Nutzt du exclusive shares?

 

Kannst du bitte mal bitte das ausführen und den output posten bitte:

ls -la /var/cache/lxc /mnt/cache/lxc/cache/

 

  • Like 1
Link to comment

ich fand  den gedanken den cache seperat zu haben aber gut, darum hatte ich das so gemacht / vllt. aber auch einfach missverstanden (was ich nicht ausschließen möchte).

 

Nein. Der Server war lange Zeit aus, wegen Renovierungsarbeiten und nach dem Update auf die neue Os Version hab ich bei null angefangen. Darum ist auch kein extra Share oder der gleichen vorhanden. Nur 2 SMB shares sind eingebunden zum Plex füttern.

 

 

root.png

Edited by zutschkutte
Link to comment
Just now, zutschkutte said:

aber auch einfach missverstanden (was ich nicht ausschließen möchte).

Nein, das passt schon. Okay, das ist komisch, bitte mach mal folgendes im terminal:

rm -rf /var/cache/lxc /mnt/cache/lxc/cache
mkdir -p /mnt/cache/lxc/cache
ln -s /mnt/cache/lxc/cache /var/cache/lxc

 

Und probier danach nochmal einen container an zu legen bitte.

  • Like 1
  • Thanks 1
Link to comment
  • ich777 changed the title to [ANLEITUNG] [VERALTET] Unbound/AdGuard-Home/LANCache LXC Container

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.