[Gelöst] dnsmasq/DNS Forwarder: umfangreiche DNS-Liste blockieren
-
Hat wer Erfahrung mit DNSMasq und wie man erfolgreich eine umfangreiche Blockliste mit
address=/adverts.com/
respektive
server=/adverts.com/
konfiguriert?
Ich fahre 'ne APU mit NanoBSD 2.2.6. Meine Erfahrung mit der GUI: Host bzw. Domain Overrides erzeugt in der XML-Konfigdatei zu viel Text. Eine Liste mit 20.000 Einträgen war nach einem Neustart nach 6 Stunden noch nicht fertig eingelesen.
Also versuche ich, die Einträge nach dem obigen Muster address= lokal aufm Linux-Rechner zu testen und dann in das Eingabefeld "Advanced" zu übernehmen.
Bei 300 Einträgen klappt das vorzüglich, bei 30.000 Einträgen startet dnsmasq einfach nicht mehr und hinterläßt auch keine Spuren in den Logfiles.
Wer weiß Rat?
Update:
- Wenn ich die Domains (Beispieleintrag: address=/bsp.tld/) mit Leerzeichen statt <lf>getrennt in das Textarea-Feld "Advanced" einzugeben, rödelt pfsense eine Weile rum und startet dann dnsmasq. Beim wiederholten Aufrufen der Konfig-Seite ist das Feld "Advanced" aber leer.
- Schiebe ich dnsmasq die Domains über eine dnsmasq.xml unter, erscheinen diese zwar im Feld "Advanced", aber dnsmasq startet nicht. grrr</lf>
-
Hallo
müsste der Eintrag nicht folgendermaßen aussehen?
address=/domain.tld/127.0.0.1
-
address=/override.tld/127.0.0.1 ist die "normale" Syntax zur Vorgabe bestimmer Domains. Das läßt sich auch mit Angabe einer (zusätzlichen) Host-Datei nach dem Muster
127.0.0.1 override.tld
erreichen. Bei Weglassen der IP-Adresse liefert dnsmasq die Meldung "NXDOMAIN" (Domäne nicht gefunden/vorhanden) zurück. Das ist in der Praxis als Werbeblocker effizienter, weil der Browser erst gar keine weitere Anfrage ins Netz stellt. Keine Anfrage, kein Timeout, bis zu dem man die Website u.U. nicht anschauen kann.
Zurück zu dnsmasq: Der Hund liegt in pfSense begraben, wie ich feststellen durfte. Zumindest die NanoBSD-Variante übergibt sämtliche Parameter nicht als Datei, sondern beim Programmstart auf Kommandozeilenebene. Ein
ps -Aww | grep dnsmasq
spuckt bei mir 5 Zeilen Parameter aus (900 Zeichen). Das heißt: jeder Domain/Host Override erzeugt weitere Zeichen, und irgendwann ist die maximale Länge der Shell erreicht.
Die "einfache" Lösung war dann: eine mehrere hundert KB schwere Blocklist nach /cf/conf zu kopieren, damit beide nanoBSD-Images darauf zugreifen können, und im Feld "Advanced" im GUI den Parameter
conf-file=/cf/conf/dnsmasq.conf
anzugeben. Oder, weil pfSense wegen angeblich ungültigem Befehl gemeckert hat, das in die config.xml reinzuschreiben und für den DNS forwarder zu importieren (Restore). Funzt und die Seiten werden endlich wieder flott werbefrei geladen.
Unbound: Es gibt an verschiedenen Stellen des (englischsprachigen) Forums den Vorschlag, unbound (DNS resolver) statt dnsmasq zu verwenden. Das ist einerseits für meine Zwecke overkill, andererseits enthält ein Domaineintrag wesentlich mehr Zeichen, so daß (in der Annahme, daß es auch hier keine Konfigurationsdatei gibt) noch weniger Domains gesperrt werden können.
-
Hallo zusammen,
einen Zusatz zu @guru hätte ich noch:
Unbound: Es gibt an verschiedenen Stellen des (englischsprachigen) Forums den Vorschlag, unbound (DNS resolver) statt dnsmasq zu verwenden. Das ist einerseits für meine Zwecke overkill, andererseits enthält ein Domaineintrag wesentlich mehr Zeichen, so daß (in der Annahme, daß es auch hier keine Konfigurationsdatei gibt) noch weniger Domains gesperrt werden können.
Es gibt schon einen Grund, warum unbound seit 2.2 gern per Default aktiv ist, u.a. weil er eben mehr Möglichkeiten bietet, aber auch genauso simpel wie dnsmasq als Forwarder arbeiten kann (Haken rein und gut). Ein Grund ist aber auch der Folgende:
https://forum.pfsense.org/index.php?topic=102470.msg572943#msg572943
unbound wird z.B. von pfBlockerNG genutzt, um hier AdBlocking zu realisieren und das soweit ich gesehen habe recht automatisch. Das manuelle basteln mit conf-file via dnsmasq etc. sollte damit überflüssig sein. Vielleicht mag das jemand testen? :)
-
@JeGr: Danke für den Hinweis auf pfBlockerNG. Ich habe mir das mal angeschaut:
Ohne zu sehr ins Detail gegangen zu sein, habe ich bei pfBlockerNG lediglich mit "EasyList" eine Liste gefunden, in der ich einzelne Kategorien mit vorbelegten DNS-Einträgen (Adservers, Tracking) auswählen kann.
Dort kann man weder sehen, welche Domains enthalten sind, noch kann ich manuell Domains hinzufügen.
Imgrunde ist DNS-Blocken eher eine unter vielen Funktionen von pfBlockerNG, die für mich Overkill wären.
Als Adblocker mit einer Konfigurationsdatei von ca. 700KB tut dnsmasq gute Dienste. Mit der externen Liste liegt die Startzeit (Restart im Menü Services) unter Verwendung der APU bei fünf bis sechs Sekunden. Verglichen mit dem, was SquidGuard nach jeder Änderung rumrödelt ist das Lichtgeschwindigkeit.
-
Dort kann man weder sehen, welche Domains enthalten sind, noch kann ich manuell Domains hinzufügen.
Es ist doch eindeutig genannt, welche Domains enthalten sind, nämlich die Einträge der EasyList bzw. EasyPrivacy Listen, die bspw. auch für AdBlocker wie Ublock und Co aktiv sind.
Zusätzlich ist in meinem Link unter "DNSBL" m.E. auch genau beschrieben, wie eigene Listen hinzugefügt werden können:Zitat:
Enter the Header/Label and Source URL as follows:
(Use copy/paste as plain text for the URL)Adaway: https://adaway.org/hosts.txt
…Natürlich ist es aber auch schön wenn das bei dir so funktioniert und das tut, was du möchtest. Ich denke nur dass es gerade bei Adware/Adverts einfacher ist, wenn man eine Liste lädt, die ggf. extern betreut und angepasst wird, anstatt man selbst die Liste runterladen und aktuell halten muss :)
-
Vielleicht eine andere Alternative:
https://pi-hole.net/ist alles auf der Kommandozeile, aber macht bei mir genau was ich möchte.
Läuft bei mir zwar noch auf dem Pi aber soll auf die pfSense wandern -
-
Das "soll" ist hier ziemlich langfristig…
Momentan finde ich die aktuelle, getrennte Lösung sogar besser, denn sie hat einen entscheidenden Vorteil, ich habe im Netz zwei DNS!
Mein dnsmasq auf dem Pi ist auch der DHCP-Server für das Netzwerk der sich selbst als DNS anbietet
Bei allen Clients blocke ich damit per default mit dem Pi-Hole.Braucht der ein oder andere Client keinen AdBlocker auf DNS-Basis, so erhält er im dnsmasq ein bestimmtest Tag und bekommt dann per DHCP den DNS vom router zugewiesen.
So wie hier:
http://stackoverflow.com/questions/22467430/dnsmasq-tags-and-conditional-dns-serverQuasi Opt-out und damit recht flexibel.