Jump to content

p0thi

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by p0thi

  1. 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
  2. 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
×
×
  • Create New...