Werbung kann das Surfvergnügen schnell zunichte machen, da es auf diversen Seiten beinahe unmöglich ist, einen Text vernünftig zu lesen. Natürlich ist es nachvollziehbar, dass Seitenbetreiber für Ihre Arbeit entlohnt werden möchten. Wenn jedoch die monitären Gründe im Vordergrund stehen und ein Großteil einer Seite aus blinkenden Werbeflächen besteht, darf sich keiner wundern, wenn etwas dagegen unternommen wird. Für Browser gibt es schon längere Zeit entsprechende Add-ons, sogenannte „Ad Blocker“, die nervige Werbung unterdrücken sollen. Erst kürzlich habe ich über uBlock berichtet (Klick).
Browser basierte Add-ons haben den Nachteil, dass sie jeweils einzelt gepflegt werden müssen. Auf iOS Geräten gibt es zumindest aktuell unter Safari noch gar keine Möglichkeit Werbung zu unterdrücken. Hier helfen höchstens alternative Browser. Eine zentrale Lösung ist hier also wünschenswert. In meinem eigenen Netzwerk laufen sowohl Router als auch WLAN Access Points mit der freien Router Software OpenWRT. Dadurch habe ich die Möglichkeit, Konfigurationen an meine eigenen Wünsche und Bedürfnisse anzupassen. Auf Github findet sich auch eine skriptbasierte Adblock Lösung, die auf einem OpenWRT Router betrieben werden kann. Die Implementierung geht ziemlich einfach. Am einfachsten ist es, dass Skript lokal anzupassen und dann auf den Router zu kopieren. Wer unter Linux bereits „git“ installiert hat, kann sich die Files bequem abholen.
git clone https://gist.github.com/7227752.git
Alternativ lässt sich auch der Inhalt des Skripts kopieren. https://gist.github.com/teffalump/7227752#file-adblock-sh. Generell müssen jetzt nur noch bei Bedarf die Zeilen der „CONFIG SECTION“ angepasst werden. Danach kann das Skript direkt per SCP auf den Router kopiert werden. Die IP Adresse muss der des Routers entsprechen.
scp adblock.sh root@192.168.1.1:/etc/adblock.sh
Windows User können hierfür das Tool WinSCP verwenden oder den Inhalt des Skripts auch per Copy & Paste über die Terminalsession einfügen. Sobald das Skript auf dem Router liegt, muss das Skript innerhalb einer Terminalsession ausführbar gemacht und dann gestartet werden.
ssh root@192.168.1.1
chmod +x /etc/adblock.sh
sh /etc/adblock.sh -f
Das Skript fängt dann an, die Blocklisten zu erstellen und die Konfiguration des Routers gemäß den durchgeführten Einstellungen durchzuführen. Der Adblocker ist nach erfolgreichem Durchlauf des Skripts bereits aktiv. Stoppen und starten lässt sich der Adblocker mit folgendem Befehl.
sh /etc/adblock.sh -t
Die Blocklisten werden automatisch durch einen Cronjob aktualisiert. Bei mir hat sich hier jedoch ein kleiner Fehler eingeschlichen, da bereits ein Cronjob vorhanden war. Der Updateeintrag für Adblock hat sich nicht in eine neue Zeile eingetragen. Dies muss ggf. angepasst werden.
crontab -e
Ab sofort sollte zumindest ein Großteil der Werbung geblockt werden, ohne ein zusätzliches Add-on im Browser zu benötigen. Natürlich lassen sich spezifische Hosts in eine Black- bzw. Whitelist eintragen, falls zusätzliche Quellen geblockt oder erlaubt werden sollen. Die URLs werden dazu einfach in die Datei „/etc/black.list“ bzw. „/etc/white.list“ eingetragen. Um die Adblock Konfiguration bei einem OpenWRT Upgrade nicht zu verlieren, sollten die entsprechenden Adblock Dateien in die „/etc/sysupgrade.conf“ eingetragen werden. Somit bleiben die Daten bei einem Upgrade mit bestehender Konfiguration erhalten.
vi /etc/sysupgrade.conf
# adblock files /etc/adblock.sh /etc/white.list /etc/block.hosts /etc/black.list
Wer auf dem OpenWRT Router noch einen OpenVPN Server laufen lässt, wird die DNSMasq Konfiguration anpassen müssen, da ansonsten Hostnamen nicht mehr aufgelöst werden, und der Zugriff auf das Internet nicht mehr funktioniert. Standardmäßig sind DNS Anfragen aus „fremden“ Netzen nicht erlaubt. Dazu gehört auch das VPN Netz. Um dies zu ermöglichen, kann in der Standard dnsmasq Konfiguration die Option „localservice“ auf den Wert „0“ gesetzt werden.
vi /etc/config/dhcp
option localservice '0'
Alternativ kann auch in der Konfiguration des adblock.sh Skripts der Wert „EXEMPT=“N““ auf „EXEMPT=“Y““ geändert werden. Die darauffolgende IP Range muss dann an das eigene VPN Netz angepasst werden. Mit dieser Konfiguration wird dann jedoch keine Werbung mehr für VPN Clients geblockt.
Getestet habe ich das Adblock Skript unter OpenWRT „Barrier Breaker“ und „Chaos Calmer“. Erfahrungen, Alternativen und Änderungen würden mich sehr interessieren. Dazu bitte einfach das Kommentarfeld benutzen.
Quelle: https://github.com/teffalump/adblock