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






