Montar un server DNS para filtrar un poco desde allí publicidad

Podemos montarnos nuestro server DNS con la finalidad de poder filtrar desde allí determinados dominios que sabemos son de webs con anuncios, malware, spyware, …
 
Existe la posibilidad de hacer esto a nivel individual en cada dispositivo de por ejemplo una oficina (tablets, smartphones, impresoras, relojes, ordenadores, …) editando el archivo hosts y añadiendo los dominios que apuntarán a 0.0.0.0 en vez de a la IP real.
 
Eso es un poco rollo. Lo ideal es que la gente se lleve el ordenador a otras oficinas, restaurantes, .. y que al final de cuentas contectarán fuera de la oficina. Lo ideal es configurarles como server DNS el que vamos a montar.
Sin saberlo siempre estarán pasando por el filtro y determinadas webs directamente no les cargarán.
 
Las instrucciones para montar el tinglado son estas:
 

# apt-get install bind9 bind9utils dnsutils

 
Se puede dejar el archivo /etc/bind/named.conf.options tal que así por ejemplo:
 

options {
	directory "/var/cache/bind";
	#forwarders { 8.8.8.8; };
	recursion yes;
	dnssec-validation auto;
	auth-nxdomain no;
	allow-query { any; };
	listen-on-v6 { any; };
};

 
Y el archivo named.conf.default-zones por ejemplo así:
 

zone "." { type hint; file "/etc/bind/db.root"; };
zone "localhost" { type master; file "/etc/bind/db.local"; };
zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; };
zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; };
zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; };
zone "google.com" { type master; file "/etc/bind/dominios/db.google.com"; };

 
Hemos de crear archivos dentro del directorio domain. Hemos de crear ese directorio.
 

mkdir /etc/bind/dominios
touch /etc/bind/dominios/db.google.com

 
Y reiniciar bind9 así por ejemplo:
 

/etc/init.d/bind9 restart

 
Si probamos con dig desde nuestro PC a ver si resuelve podemos hacerlo así suponiendo que esa sea la IP del server en el que hemos configurado el servicio DNS:
 
dig google.com @92.222.121.7
 
El de google.com no tendría que resolver. El resto si.
  

El script del almendruco

 
Ir uno a uno añadiendo dominios que queremos que no resuelvan es pesado y cansino. Para ello simplemente podemos ejecutar este script:
 

#!/bin/bash

while read dominio
do
	echo $dominio
	echo "zone \"$dominio\" { type master; file \"/etc/bind/dominios/db.$dominio\"; };" >> /etc/bind/named.conf.default-zones
	touch /etc/bind/dominios/db.$dominio
done < /etc/bind/h3.txt

Pero no sin antes realizar esto en /etc/bind:

wget "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" -O h.txt 
cat h.txt | sort | uniq | grep "0.0.0.0" | grep -v "#" > h2.txt
cat h2.txt | cut -d " " -f 2 > h3.txt

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *