Ich versuche, über dnsmasq einen serverseitigen Werbeblockermechanismus zu erstellen, erhalte jedoch nur Ergebnisse auf dem Server selbst und nicht auf den Computern, die an mein lokales Netzwerk angeschlossen sind.
Zunächst einmal ist mein Router der Standard-DNS-Server, daher muss ich alle meine Geräte so einrichten, dass sie den dnsmasq-Server als primären DNS verwenden. Ich kann überprüfen, ob es funktioniert, wenn ich versuche, auf eine meiner selbst gehosteten Websites zuzugreifen: Wenn ich lokal darauf zugreifen kann, funktioniert der dnsmasq-DNS. In dieser Hinsicht ist alles in Ordnung.
Dann der Teil mit dem Werbeblocker. Ich überprüfe, ob die Blockierung funktioniert, indem ich diesen Befehl sowohl auf meinem Server als auch auf meinem Hauptcomputer eingebe:
# nslookup doubleclick.net
Auf dem Server erhalte ich:
Server: 192.168.1.51
Address: 192.168.1.51#53
Name: doubleclick.net
Address: 192.168.1.51
Also da klappt es.
Auf meinem Computer erhalte ich:
Server: 80.67.0.2
Address: 80.67.0.2#53
Non-authoritative answer:
Name: doubleclick.net
Address: 70.32.146.212
Also hier ist das nicht der Fall...
Mein Setup ist wie folgt:
Ich habe das Konfigurationsverzeichnis von dnsmasq eingerichtet:
conf-dir=/usr/local/etc/dnsmasq.d
Legen Sie dort die Datei dnsmasq.adlist.conf ab, die von einem Skript gefüllt wird, das eine Liste der Anzeigenserver von einer Site abruft und sie in für DNSMasq lesbare Einträge zusammenstellt.
Um es kurz zu machen: Von dnsmasq blockierte Domänen werden innerhalb des Servers korrekt umgeleitet, aber nicht von den anderen Geräten. Es ist, als ob dnsmasq die neu hinzugefügte Domänenliste nicht senden kann.
Ich kann Ihnen alle Informationen geben, die Sie benötigen, um mir bei der Lösung dieses Problems zu helfen. Es kann auch auf eine Fehlkonfiguration vor diesem Adblocking-Experiment hinweisen. Wie dem auch sei, ich hoffe, dass sich das Problem leicht lösen lässt …
Mein Server läuft auf FreeBSD 9.3
Antwort1
Das Problem kann auftreten, wenn Ihre Anfrage zwischengespeichert wird und Sie Ihren DNS-Cache nicht leeren.
Häufig speichert das Betriebssystem DNS-Einträge im Cache, sodass Änderungen im DNS nicht direkt sichtbar sind.
Unter Windows können Sie beispielsweise Ihren DNS-Cache wie folgt leeren:
ipconfig /flushdns
Antwort2
Ich habe nslookup seit einiger Zeit nicht mehr verwendet, aber bedeutet dieses Ergebnis nicht, dass die Namensauflösung für 80.67.0.2 und nicht für 192.168.1.51 (von dem ich annehme, dass es Ihr Router ist) durchgeführt wurde?
Ich vermute, dass Ihr Computer Ihre DNSMASQ-Instanz aus irgendeinem Grund nicht zur Namensauflösung verwendet.