
Werbung blockieren mit dnsmasq
Wie funktioniert diese AdBlock-Variante?
Wenn ADseiten geladen werden im Internet, werden üblicherweise per DNS-Server Anfragen auf Drittseiten (zum
Beispiel ads.google.com) umgeleitet und der Inhalt dann von diesen Seiten zur Verfügung gestellt.
Da bevor eine DNS Anfrage gesendet wird, die Hostsdatei auf dem lokalen Rechner abgefragt wird, kann man diese
ADSeiten umleiten auf eine IP Adresse, die nicht verfügbar ist. Normalerweise leitet man die Anfragen auf
127.0.0.1 (oder localhost) um.
Wenn man selber einen DNS-Server betreibt, kann man auch
dem DNS-Server beibringen die Anfragen auf seine Loopbackadresse umzuleiten, was wir in dieser Anleitung machen.
Voraussetzungen
Installation
curl installieren
curl wird so installiert:
sudo apt-get install curl
sed installieren
sed wird so installiert:
sudo apt-get install sed
Hostfile vorbereiten
Die eigene Hostsdatei bereiten wir zuerst vor:
sudo nano /etc/hosts
Hier fügen wir eine eigene Zeile zuunterst ein:
#ADBLOCKING
Nach diesem Eintrag werden die Einträge aus der Datei, die wir gleich herunterladen eingefügt.
Nano beenden kannst Du mit ctrl-x und Y oder J um zu speichern
Und sichern die Datei:
sudo cp /etc/hosts /etc/hosts.eigene_backup
Vorbereiteter Hostfile-Anhang von meinem Server einbinden
Dafür wechseln wir auf eine Root-Console:
sudo su
Jetzt brauchen wir nur noch folgenden Befehl auszuführen:
curl -s -A "Mozilla/5.0" http://easelee.ddns.net/inhalt/downloads/hosts sed -e '/START/d' >> /etc/hosts
Die Datei kann man überprüfen ob die Daten angekommen sind:
sudo nano /etc/hosts
Wenn hier Einträge unterhalb #ADBLOCKING stehen, hat es funktioniert!
Wenn Du jetzt eine Seite mit viel Werbung öffnest, wird die Werbung nicht mehr angezeigt und auch gar nicht mehr
geladen.
Automatisiertest Update einrichten
Script erstellen
Shellscript erstellen in /home/USER:
cd ~
sudo nano update_adblocker.sh
Diesen Inhalt einfügen:
#!/bin/sh
sudo cp /etc/hosts.eigene_backup /etc/hosts
sudo sh -c "curl -s -A \"Mozilla/5.0\" http://easelee.ddns.net/inhalt/downloads/hosts | sed -e '/START/d' >> /etc/hosts"
sudo service dnsmasq restart
...und die Datei ausführbar machen:
chmod +x update_adblocker.sh
Cronjob einrichten
Root-Crontab zur Bearbeitung öffnen:
sudo crontab -e
Nach unten Scrollen und folgendes nach der Linie # m h dom mon dow, wie hier angezeigt einfügen:
# m h dom mon dow command
#Update des hostfiles mit den neuesten Adblockdaten
30 3 1 * * cd /home/pi && sudo ./update_adblocker.sh
#weitere Cronaufgaben hier listen
Jetzt wird das Script an jedem ersten Tag des Monats um 3:30 Uhr ausgeführt.
ACHTUNG:
Wenn Du später die Hostsdatei anpasst, wird sie jeweils wieder mit der in hosts.eigene_backup überschrieben!
Es macht also Sinn, die Änderungen (zusätzlich) in die Backupdatei zu schreiben.
Infos zum Dokument
Author: Christoph Iseli
Datum: 25.03.2015
Letzte Änderung: 03.07.2015