Hromadné blokování reklam v prohlížeči pomocí DNS aplikace Bind

By | 23/11/2018

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í:

reklamy reklam

Po implementaci:

po implementaci reklam

Princip funkce:

Všechny reklamní servery jsou dostupné pod nějakými doménovými jmeny (např. reklamní server od iDnes.cz beží 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:

Implemetance 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ů naleznete zde:
http://pgl.yoyo.org/adservers/serverlist.php/?hostformat=bindconfig;showintro=0
Tu můžeme v linuxu 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 definujeme cestu uložení souboru, který přejmenováváme na  AD_servers_raw.

Aby byl soubor jasně čitelný pro DNS, musíme vše ostatní co nezačíná “zone” ořezat a to uděláme pomocí:

cat /etc/bind/AD_servers_raw | sed '/^\zone/!d' > /etc/bind/AD_servers

Dostaneme tak čistý soubor AD_servers se zónama

Zóny pro DNS bind máme nachystaný, teď ho vložíme do souboru named.conf.local, kde přidáme řádek:

include "/etc/bind/AD_servers";

Nyní musíme ještě 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 můžeme stáhnout zde: http://pgl.yoyo.org/adservers/null.zone.file. Soubor vytvořte, tam kde máte umístěné soubory aplikace Bind. V mém případě je to /etc/bind

V souboru named.conf.options, přepsat absolutní cestu aplikace Bind

options {
directory "/etc/bind";
}

Nakonec provedeme restart aplikace Bind.

service bind9 restart

Test blokace:

Příkaz níže smaže DNS cache ve windowsu:

ipconfig /flushdns

Otestujeme jeden z reklamních serverů:

ping bbelements.com

Jak již bylo avízováno výše, jeden z reklamních serverů iDnes.cz je bbelements.com. Proto vyzkoušíme 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.

ping

Automatické stahování aktuálních reklamních doménových serverů:

Tento bod je nepovinný, ale je fajn si toto celé zautomatizovat a dostávát tak další 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
Script jsem si pojmenoval aut_down_ad
Popis scriptu:
Při spuštění dojde k stažení aktuálního souboru reklamních serverů a soubor AD_servers_raw je uložen do /etc/bind/.
Následně se čeká 5 sec.
Ze souboru AD_servers_raw je vyfiltrováno vše co začíná “zone” a to zapsáno do nového souboru AD_Servers.
Aplikace Bind je restarnuta.
Pro automatické spuštení scriptu, můžeme využít již predinstalovanou aplikaci Cron, který se hodí pro spuštění scriptu v např. určitý den, čas, …

V linuxu spustíme úlohy pro aplikaci Cron pomocí příkazu:

crontab -e
A vložíme řádek níže:
0 3 * * * /etc/bind/aut_down_ad

 

Tento script se bude spouštet každý den v 3 hod ráno. Pro optimalizaci data a času, lze využít této užitečné stránky: https://crontab.guru

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *