Bind: Blocken von Werbung und Trackern je nach Quell-IP

  • Hallo zusammen.


    Vielleicht kann mir jemand bei meinem Problem mit Bind9 helfen.

    Ich möchte meine (Android) Smartphones von all den Trackern befreien, die meine Privatsspäre verletzten. Dafür habe ich mir folgendes Setup überlegt:

    [Blockierte Grafik: https://www.xplod.de/images/Nameserver.gif]


    1.) Der (ohnehin vorhandene) BIND-Nameserver verwendet einen Filter von yoyo.org, somit kann ich in meinem Router einfach meinen Server als Nameserver angeben, und ein Großteil der Werbung ist damit futsch -> Klappt einwandfrei

    2.) Die Smartphones gehen per VPN ins Internet, um Freifunk, Firmen-WLAN und sonstige Hotspots nutzen zu können -> Funktioniert auch super

    3.) Nun hätte ich gerne, dass der BIND9 anhand der Quell-IP erkennt, wer sich da verbinden möchte, und die Anfrage

    a.) erst durch den yoyo-Filter jagt, und ggf. an den öffentlichen Nameserver (Google, Cloudflare, ...) weiterzuleiten, oder

    b.) die Anfrage direkt an dnsmasq weiterreicht, welcher dann über diverse Filter sämtlichen Werbung, Tracker, Pornos,... herausfiltert.


    Bei Punkt 3 scheitere ich leider.



    Fehlermeldung BIND:

    Code
    named[16608]: found 4 CPUs, using 4 worker threads
    named[16608]: using 2 UDP listeners per interface
    named[16608]: using up to 4096 sockets
    named[16608]: loading configuration from '/etc/bind/named.conf'
    named[16608]: /etc/bind/named.conf.local:11: when using 'view' statements, all zones must be in views
    systemd[1]: bind9.service: Main process exited, code=exited, status=1/FAILURE
    systemd[1]: bind9.service: Control process exited, code=exited status=1
    systemd[1]: bind9.service: Unit entered failed state.
    systemd[1]: bind9.service: Failed with result 'exit-code'.

    named.conf.local beinhaltet die lokalen Domains:

    Code: /etc/bind/named.conf.local
    zone "(servername)" {
      type master;
      file "/etc/bind/keyhelpdomain.conf";
    };

    Hat jemand eine Ahnung, wie ich die views ans Rennen bekomme, und dabei weiterhin keyhelp funktioniert?


    Danke und Gruß,

    Dirk

  • In einem Bind view müssen alle Zonen eingebunden werden, die der Server authorative kennt. D.h. in allen Views müssen alle Zonen eingebunden sein, es ist nicht erlaubt diese nur in einen View zu tun.


    Wenn ich das richtig verstehe versuchst Du hier authorative Server und rekursive Resolver zu mischen. Davon kann ich nur abraten. Vor allem erlaubt Deine Konfiguration Abfragen durch alle. Damit kann Dein Server für Amplification Angriffe missbraucht werden. Ich würde empfehlen den recursive Resolver nur auf den VPN IPs lauschen zu lassen.


    keyhelp und seine Besonderheiten kenne ich nicht.

  • Danke für den Hinweis.


    Ich hatte schon überlegt, per IP-Tables-Forward den dnsmasq virtuell vor BIND zu schieben. Der Server selbst hat keine 10.1.1.x Adresse (die Virtualisierung hatte mal Probleme bei Netzwerkkarten mit Alias-IP-Adressen, und Strongswan stellt kein Tunnel-Interface zur Verfügung).


    Es wird also schwer, den dnsmasq nur mit dem VPN direkt zu verbinden...


    Um wirklich sauber zu sein, sollte ich also noch eine Möglichkeit finden, dass wirklich nur meine Fritzbox DNS anfragen stellen darf, und nicht sämtliche Internet-Teilnehmer...

  • Mal eine Frage: was nutzt Du als VPN Server?

    Strongswan. Das wird mittlerweile von Android unterstützt (man bemötigt leider eine App dafür),aber es geht dafür sparsam mit dem Handy um.

    Davor hatte ich L2TP/IPSec am laufen (OpenSwan, war das, glaube ich) . Aber da war das Handy fast am glühen, und der Akku war schnell leer...


    Mit Strongswan bin ich sehr zufrieden, und es funktioniert auch nativ mit Windows 10


    Übrigens Danke noch mal für die Warnung mit dem Amplification-Angriffen. Der Server war keinen Tag am Laufen, und wurde schon für einen Angriff auf USADF.org misbraucht... Mal schauen, wann die Attacken aufhören, wenn der Server diese jetzt wieder ablehnt...

  • Der VPN Server läuft unter Linux? Dann würde ich den Bind an eine IP binden, die nur via VPN erreichbar ist. Das hilft jetzt aber der FritzBox noch nicht. Ich habe hier einen Raspi als DNS-Server im LAN. Die FritzBox kann ja leider noch kein DoH oder DoT. :(

  • ...Dann würde ich den Bind an eine IP binden, die nur via VPN erreichbar ist. Das hilft jetzt aber der FritzBox noch nicht. Ich habe hier einen Raspi als DNS-Server im LAN. Die FritzBox kann ja leider noch kein DoH oder DoT. :(

    Da der Bind Server von Keyhelp genutzt wird, muss er auf der Netzwerkschnittstelle (ens3) arbeiten.

    Allerdings habe ich den Port per

    Code
    acl vpn {10.1.1.0/24; localhost;};
    
    options {
      allow-recursion { vpn;};
      allow-query { vpn;};
      ...
      forwarders {
         1.1.1.1;
      }

    abgedichtet.


    Dazu habe ich mittlerweile per iptables den Port 53 von extern blockiert, und nur für das 10.1.10/24 Subnetz erlaubt...


    Wenn ich also das DNS meines Servers von der Fritzbox nutzen wollte, müsste ich die Fritzbox in das StrongSwan-VPN kriegen, was theoretisch wohl geht...

    Aktuell sieht es so aus, dass es mehr Sinn ergibt, einen weiteren Router mit offener Software ins Haus zu holen, der z.B. die ganzen "Smart"-Devices versorgt, und nebenher noch als DNS Filter agiert...



    Ich habe also noch reichlich zu tun :)


  • Dazu habe ich mittlerweile per iptables den Port 53 von extern blockiert, und nur für das 10.1.10/24 Subnetz erlaubt...

    hast Du Deine IPtables Firewall nach umgekehrtem Prinzip aufgebaut?

    ('es ist alles erlaubt außer explizit geblockt' vs. 'es ist alles geblockt außer explizit erlaubt')


    wo bedindet sich bei Deinem Setup tatsächlich die rDNS Zone f. Dein VPN-Subnet (10.1.1.0/24)?


    daß dies durch 1.1.1.1 od. 8.8.8.8 bewerkstelligt wird, glaub ich weniger ...


    Dein Argument wegen Privatsphäre und so:

    wieso forwardest Du nach 1.1.1.1 bzw. 8.8.8.8 und macht das nicht direkt selbst als Caching-Resolver?

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • hast Du Deine IPtables Firewall nach umgekehrtem Prinzip aufgebaut?

    ('es ist alles erlaubt außer explizit geblockt' vs. 'es ist alles geblockt außer explizit erlaubt')

    Die Firewall ist auf "alles geblockt" konfiguiert, nur der Port 53 war explizit offen. Der ist jetzt komplett dicht...


    Ich verstehe deine Frage nicht... Was meinst du mit rDNS Zone? Reverse DNS, sprich aus der IP einen Namen auflösen? Wofür sollte ich das benötigen?


    DNS-caching ist eins meiner nächsten Ziele, wenn ich mal wieder Langeweile habe. Aktuell soll Bind nur die gängige Werbung blockieren, und ansonsten einen der altbekannten DNS fragen...

  • xplod Die Zeile

    allow-query { vpn;};

    verhindert alle Abfragen außer vom VPN. Muss das Keyhelp keine authorativen Zonen hosten?

    In VPN ist auch noch localhost mit dabei.


    Wenn ich das richtig sehe, ist Keyhelp per Default so eingestellt, dass man den Server auch direkt als primären Nameserver benutzen könnte. Für "meine" Domains hingegen nutzte ich die offiziellen DNS von Netcup - Die haben mehr Ahnung vom Thema.

    Somit wird BIND nur bemüht, wenn mein Server seine eigenen Domains auflösen soll... Aber korrigiert mich, wenn ich was Falsches sage...

  • In VPN ist auch noch localhost mit dabei.


    Wenn ich das richtig sehe, ist Keyhelp per Default so eingestellt, dass man den Server auch direkt als primären Nameserver benutzen könnte. Für "meine" Domains hingegen nutzte ich die offiziellen DNS von Netcup - Die haben mehr Ahnung vom Thema.

    Somit wird BIND nur bemüht, wenn mein Server seine eigenen Domains auflösen soll... Aber korrigiert mich, wenn ich was Falsches sage...

    Okay, das sollte passen. Ich wollte nur sicher gehen.

  • Ich verstehe deine Frage nicht... Was meinst du mit rDNS Zone? Reverse DNS, sprich aus der IP einen Namen auflösen? Wofür sollte ich das benötigen?

    wofür soll das in der config

    1. zone "1.1.10-in-addr.arpa" {
    2. type forward;
    3. };

    dann gut sein?

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • wofür soll das in der config

    1. zone "1.1.10-in-addr.arpa" {
    2. type forward;
    3. };

    dann gut sein?


    <stammel> Das habe ich mir aus den vielen Beispielen bei Google so abgeschaut... Da BIND über Zonen gemeckert hat, habe ich die dort kurzerhand mal eingefügt... Hat mit und ohne nicht funktioniert...