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

By | 23/11/2018

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

reklamy reklam

Po implementaci:

po implementaci reklam

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.

ping

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
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.

Automatické spuštění scriptu:

Pro automatické spuštění scriptu, je možné využít již predinstalovanou aplikaci Cron, který se hodí pro spuštění scriptu v např. určitý den, čas, …

V OS Linux spustit úlohy pro aplikaci Cron pomocí příkazu:

crontab -e
A vložit řádek níže. Tento script se bude spouštět každý den v 3 hod ráno:
0 3 * * * /etc/bind/aut_down_ad
Pro optimalizaci data a času, lze využít této užitečné stránky: https://crontab.guru

Leave a Reply

Your email address will not be published. Required fields are marked *