Last Updated on 13/03/2021 by administrator
Hromadné blokování reklam v prohlížeči pomocí DNS aplikace Bind
Motivace:
Existují Adblocky a všelijaké doplňky do prohlížečů pro blokaci reklam – to všichni víme. Tato metoda ukazuje, jak hromadně pro všechna zařízení v domácí síti filtrovat reklamy, nebo aspoň část reklam.
Před implementací:
Po implementaci:
Princip funkce:
Všechny reklamní servery jsou dostupné pod nějakými doménovými jmény (např. reklamní server od iDnes.cz běží na bbelements.com, atd…) Obyčejně je DNS server překládá na IP adresy a stahuje si z nich reklamu. Nicméně pokud budou přeloženy naším lokálním DNS serverem (což je v našem případě aplikace Bind, může tyto doménová jména přeložit na adresu localhostu 127.0.0.1. Surfující klient tak nestáhne žádné z reklam.
Nebudu se tady zabývat instalaci a nastavení aplikace Bind (snad na to udělám taky časem článek) ale přejdu rovnou na věc.
OS:
Implementace byla prováděna na Ubuntu 12.04.5 LTS. U vyšších verzí Ubuntu se může implementace mírně lišit.
Implementace:
Pravidelnou aktualizaci reklamních serverů lze nalézt zde: http://pgl.yoyo.org/adservers/serverlist.php/?hostformat=bindconfig;showintro=0
Soubor s aktualizacemi reklamních serverů je možné v Os Linux stáhnout pomocí:
wget "http://pgl.yoyo.org/adservers/serverlist.php/?hostformat=bindconfig&showintro=0&mimetype=plaintext" -O /etc/bind/AD_servers_raw
Výstupem -O je definována cestu uložení souboru, který bude mít jméno AD_servers_raw.
Aby byl soubor jasně čitelný pro Bind, je potřeba vše ostatní, co nezačíná „zone“ ořezat a to lze provést pomocí:
cat /etc/bind/AD_servers_raw | sed '/^\zone/!d' > /etc/bind/AD_servers
Tímto se vytvoří čistý soubor AD_servers se zónami.
Zóny pro DNS Bind server je nachystaný v souboru AD_servers, ten bude vložen do souboru named.conf.local:
vim /etc/bind/named.conf.local
, kde přidat řádek:
include "/etc/bind/AD_servers";
Nyní je potřeba vytvořit zónu localhostu null.zone.file, na který se budou odkazovat všechna doménová jména reklamních serverů. Obsah souboru null.zone.file lze stáhnout zde: http://pgl.yoyo.org/adservers/null.zone.file. Soubor stáhnout, tam kde jsou umístěné soubory aplikace Bind. V tomto případě by to mělo být v lokaci /etc/bind
cd /etc/bind wget "http://pgl.yoyo.org/adservers/null.zone.file"
V souboru named.conf.options, přepsat absolutní cestu aplikace Bind:
vim /etc/bind/named.conf.options
Přepsat na /etc/bind:
options { directory "/etc/bind"; }
Nakonec restartovat aplikaci Bind.
service bind9 restart
Test blokace:
Příkaz níže smaže DNS cache v OS Windows:
ipconfig /flushdns
Otestování DNS resolvungu jednoho z reklamních serverů:
ping bbelements.com
Jak již bylo avizováno výše, jeden z reklamních serverů iDnes.cz je bbelements.com. Proto bude vyzkoušeno pomocí prográmku ping
, zda se nyní odkazuje na 127.0.0.1 čili localhost.
Níže je vidět, že je reklamní server přeložen jen na localhost.
Automatické stahování aktuálních reklamních doménových jmen:
Tento bod je nepovinný, ale je fajn si toto celé zautomatizovat a dostávat tak další a aktuální listy reklamních serverů.
Napsal jsem si na to jednoduchý script, který je dostupný níže:
#!/bin/bash wget -q "http://pgl.yoyo.org/adservers/serverlist.php/?hostformat=bindconfig&showintro=0&mimetype=plaintext" -O /etc/bind/AD_servers_raw sleep 5 cat /etc/bind/AD_servers_raw | sed '/^\zone/!d' > /etc/bind/AD_servers sleep 1
service bind9 restart
Popis scriptu:
Automatické spuštění scriptu:
V OS Linux spustit úlohy pro aplikaci Cron pomocí příkazu:
crontab -e
0 3 * * * /etc/bind/aut_down_ad