DNS-Redirect auf pi-hole

Es gibt 30 Antworten in diesem Thema, welches 8.613 mal aufgerufen wurde. Der letzte Beitrag () ist von DKeppi.

  • Jetzt muss ich nur noch rausfinden, wie die Iptables Regeln automatisch bei einem Reboot der UDM-SE oder Firmware update beim start ausgeführt werden. :thinking_face:


    Über einen geeigneten funktionierenden Tip würde ich mich freuen.

    Such mal im Forum nach CronJobs, meine letztens was wegen DDNS gelesen zu haben, die sind auch nach einem Reboot und eventull upgrade weiter aktiv.


  • sebcodes


    Danke für den Link, ich meine, den habe ich schon mal gelesen gehabt. Allerdings beim Überfliegen ist mir schon aufgefallen, das der eher für die UDM/Pro ist. Die genannten Tools funktionieren bei der UDM Pro SE wohl nicht mehr, vor allem wenn da jetzt schon die 3.x drauf ist.

    Aber ich lese mich da heute Nachmittag nochmal rein. Ist auf der Arbeit gerade etwas schlecht. :winking_face:


    Hallo @all,


    so hab heute Nachmittag nochmal nach einer Lösung gesucht und für mich eine Zufriedene Lösung gefunden, die sogar einen Reboot übersteht. :smiling_face:


    Da ja auf der UDM-SE ein Debian Bullseye Unterbau besteht konnte man das Problem relativ einfach lösen ohne zusätzliche Software zu installieren.


    und zwar über die aktuell Entfernte Datei in Debian Bullseye /etc/rc.local


    Also per SSH auf die UDM-SE einloggen und die Datei /etc/rc.local mit folgendem Standard-Inhalt anlegen:


    Die Datei mit folgenden Kommando ausführbar machen: chmod +x /etc/rc.local


    Danach den systemd Manager mit systemctl daemon-reload konfigurieren.


    Jetzt wird der rc-local Daemon mit systemctl start rc-local gestartet.


    Läuft alles? Ein kurzer Check des Status vom rc-local mit systemctl status rc-local. Jetzt sollte die Ausgabe so aussehen:

    Code
    ● rc-local.service - /etc/rc.local Compatibility
         Loaded: loaded (/lib/systemd/system/rc-local.service; enabled-runtime; vendor preset: enabled)
        Drop-In: /lib/systemd/system/rc-local.service.d
                 └─debian.conf
         Active: active (exited) since Wed 2023-08-09 17:08:32 CEST; 43min ago
           Docs: man:systemd-rc-local-generator(8)
          Tasks: 0 (limit: 4724)
         Memory: 0B
            CPU: 0
         CGroup: /system.slice/rc-local.service


    Danach hatte ich dann meine eigentliche rc.local mit meinen Iptables Inhalt gefüllt. Das sah dann so aus:

    10.x.x.x ist natürlich die IP des Pihole.


    Danach habe ich den rc.local Daemon mit systemctl restart rc-local neugestartet und et voilà: fertig war meine Reboot-resistente Änderung für die Umleitung des DNS-Traffics über meine Pi-Holes (hab das nach der Arbeit natürlich gleich mit einem reboot der UDM-SE getestet, läuft :thumbs_up: :smiling_face: ). Jetzt kann sich kein fest einprogrammierter DNS-Server-Eintrag von irgendwelchen Geräten an meinen Pi-Holes vorbeimogeln. Außer natürlich verschlüsselter Traffic über DNS over HTTPS (DoH). Für das Schlupfloch habe zusätzlich eine Liste auf dem Pi-Hole eingepflegt, die einige DoH-Server filtert.


    Beim mir funktioniert die Iptables-Umleitung ohne die Masquerade-Regel, da mein Pi-Hole in einem separaten Subnetz liegt, wie der Rest der Netzwerke. Die Clients bekommen davon nichts mit, das passiert transparent, die meinen die Antwort von ihren einprogrammierten DNS Server zu erhalten. Wie in folgenden Beispiel hab ich mal einfach die Abfrage von einem Client gestartet und einen abzufragenden DNS-Server angegeben:

    Angeblich wurde der 8.8.8.8 abgefragt, aber die Antwort kam von meinem Pi-Hole:


    Nicht wundern über den Pi-Hole-Port 533. Das ist mein BIND-DNS Upstream-Server für den Pi-Hole. Der ist für die lokale Namensauflösung meines lokalen Netzwerks und die eigentlich Auflösungen der IP-Adressen des Internets verantwortlich. Dieser leitet dann alle Anfragen, die er nicht selbst beantworten kann entweder über den DNSCrypt-Proxy oder Stubby weiter, damit diese dann die korrekte IP liefern. Der Pihole ist also praktisch die Vorfilterung meiner IP-Abfragen. :winking_face:

    Einmal editiert, zuletzt von razor () aus folgendem Grund: Ein Beitrag von Curiosity mit diesem Beitrag zusammengefügt.

  • Hallo zusammen,


    erst einmal herzlichen Dank für Eure investierte Arbeit und die super Anleitung.

    Leider bin ich zwar UniFi-Nutzer, allerdings habe ich einen UDR, also keine UDM.

    Und da immer mehr Geräte im Heimnetz hart codierte DNS-Server nutzen und damit die im Netzwerk installierten DNS-Server verwenden, die per DHCP verteilt werden, würde ich die Lösung gerne bei mir umsetzen.

    Gibt es Erfahrungen, ob das Vorgehen auch in einem Unifi Dream Router funktioniert oder ob ggf. Anpassungen erforderlich sind?


    Danke und viele Grüße,

    Matthias

  • Die UDR basiert auf dem selben Betriebssystem wie die UDM SE. Somit sollte das gehen.

  • Aso, da ist meine Frage glaube ich falsch angekommen.

    Der Pi hängt dran (mit AdGuardHome, das finde ich besser als piHole), ein paar Subnetzen und so weiter.

    Konkret ging es dann um die Frage, ob die NAT-Regeln aus dem Post von curiosity so funktionieren. Da hat mir jkasten ja weitergeholfen und ich versuche am Wochenende, die momentan implementierten Block-Regeln in der Firewall für alle Geräte außer meinem Pi durch die NAT-Regeln zu ersetzen, damit auch wirklich der Verkehr umgebogen wird.

    Früher hatte ich das über json-Files auf dem USG, das ist aber ja leider mit den neuen Geräten nicht mehr direkt möglich.


    Viele Grüße,

    Matthias

  • So, kleines Update der ganzen Aktion:

    Hat im Prinzip genau so geklappt wie beschrieben.

    Ich habe zur Sicherheit noch per ifconfig geprüft, welches Interface ich denn überhaupt beeinflussen will, da habe ich mehrere Netze laufen. Das Standard-Netz ist aber auch beim UDR br0.

    Vielleicht noch ein Hinweis für alle, die durch die neue Lösung ihre alten Blocking-Regeln ablösen: Diese musste ich rausnehmen, da sie ansonsten mit den per NAT umgebogenen Botschaften kollidieren.


    Vielen Dank nochmal für Eure Hilfe und Eure Anleitungen,

    Matthias

  • So, heute hat sich ein kleines Problem ergeben: Beim Start scheint es eine Kollision zu geben, die zu folgender Ausgabe führt:

    (leider abgeschnitten, sollte aber erkennbar sein).


    Wenn ich das Skript ausführe nach dem Start, also auf der Konsole, gibt es kein Problem. Ich vermute, dass hier die Ausführung gleichzeitig mit den Änderungen kommt, die das System für die über die UI angelegten Regeln durchführt.


    Kann damit Jemand etwas anfangen bzw. kennt eine Lösung?

  • Another app is currently holding the xtables lock. Perhaps you want to us>

    Du Versuchst Regel hinzuzufügen während irgendwas anders grade regeln hinzufügt.

    Bau in das Script ein "sleep 10“ (oder höher) damit das Unifi System seinen kram in ruhe einträgt bevorzugst.

    du dein kram einträgst.


    ODER:


    weil so genau kann man das nicht sagen es könnte sein


    /run/xtables.lock existiert noch und ist geöffnet von einem anderen process

    (lsof /run/xtables.lock würde sagen wer). Da ggf drauf warten das da keiner zugreift

    bzw. file löschen...


    Aber das warten oben sollte ausreichen.

  • Ich hatte bei mir auch das Problem mit dem @reboot.
    Hab zwar nicht rausgefunden an was es lag, aber es ging nicht.

    Mache das dann einfach minütlich im Nachhinein und prüfe aber vorab, ob es die Regel schon gibts, sonst hat man sie ja doppelt und dreifach...
    Nur so als Möglichkeit für dich - schau einfach mal rein wenns dich interessiert -->


    Bin auch für Verbesserungsvorschläge offen :winking_face:

    P.S.: Merke grad', dass bei mir der Port 853 noch fehlt... gleich eingefügt!

    Einmal editiert, zuletzt von DKeppi ()