Wer seinen eigenen DNS Server nutzt kann damit wunderbar bestimmte Domains blocken z.B. Tracking Seiten, Layer-Ad Anbieter oder Facebook. Beispielhafte Erklärung für bind9 und facebook:
Im bind Verzeichnis müssen wir zwei Dateien erstellen, in einer werden alle Domains aufgelistet die wir sperren/umleiten wollen, die zweite Datei ist ein Dummy Zonenfile.
1. /etc/bind/named.conf.blocked-domains
:
zone “facebook.com” { type master; file “dummy-zonefile”; };
2. /etc/bind/dummy-zonefile
$TTL 24h
@ IN SOA euer.dns.server. hostmaster.dns.server. (
2013030800 86400 300 604800 3600 )
@ IN NS euer.dns.server.
@ IN A 127.0.0.1
* IN A 127.0.0.1
@ IN AAAA ::1
* IN A ::1
Damit werden alle alle Anfragen an facebook.com sowie die Subdomains an euren lokalen Rechner geleitet und landen in einem Timeout. Alternativ kann man auf dem DNS Server auch einen Webserver installieren der dann für jede Anfrage 410 (Gone) oder 507 (googlet es :)) zurückliefert.
In seiner bind Konfiguration muss man nur noch eintragen das man die /etc/bind/named.conf.blocked-domains
laden möchte, dies geschieht meist in der /etc/bind/named.conf"
:
include "/etc/bind/named.conf.blocked-domains";
Hier ein mini Shellscript das eine Domain zur Blockliste hinzufügt:
#!/bin/bash
add_domain(){
exists=$(grep -i $1 /etc/bind/named.conf.blocked-domains)
if [ -z "$exists" ]; then
echo "zone \"$1\" { type master; file \"dummy-zonefile\"; };" >> /etc/bind/named.conf.blocked-domains
fi
}
reload_bind(){
rndc reload
rndc flush
}
get_domain_list(){
tmpfile=$(mktemp)
wget -q --output-document=$tmpfile 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&startdate[day]=&startdate[month]=&startdate[year]=&mimetype=plaintext'
cat ${tmpfile} | while read domain; do add_domain $domain; done
}
if [ -z "$1" ]; then
get_domain_list
reload_bind
else
add_domain $1
reload_bind
fi
Aufruf ist ./script.sh domain-zum-blocken.de zum blocken einer bestimmten Domain. Ruft man das Script ohne Parameter auf wird von der angegebenen URL eine Liste von Layer Anbietern heruntergeladen und hinzugefügt.