Pi-Hole + Openvpn: Bloquea la publicidad
2017-08-08
Índice
- Pasos previos
- Instalación
- Actualizar configuración de OpenVPN y pi-hole
- Configurando los clientes
- Probando Pi-Hole
Con PI-Hole podemos filtrar y bloquear la publicidad de toda nuestra red, ya sean telófonos, ordenadores, tablets, etc. Incluso llega a quitar los anuncios en las aplicaciones de los dispositivos Android e iOS. Tambión cuenta con un servidor DHCP para ayudarnos en la configurar estos dispositivos.
Los anuncios son bloqueados mediante DNS, además se puede usar junto a Openvpn para bloquear publicidad y ahorrar datos en las conexiones 3g/4g.
Pasos previos
Doy por hecho que tenemos instalado Openvpn en nuestra raspberry, si no es así en este articulo explico como hacerlo.
Debemos averiguar la dirección IP del servidor OpenVPN, para ello escribimos el siguiente comando:
ip a show dev tun0
Muestra una salida parecida a esta:
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 ****::****:****:****:a161/64 scope link flags 800
valid_lft forever preferred_lft forever
Vemos que la dirección IP del servidor es 10.8.0.1.
Tambión debemos de conocer la dirección IP de la puerta de enlace o gateway, si no la saber la puedes averiguar con el siguiente comando:
ip r | grep default
default via 192.168.1.1 dev eth0 metric 202
default dev tun0 scope link de metric 204
En mi caso es 192.168.1.1
Pi-hole tiene su propio servidor HTTP, es por eso de que si en tu sistema ya estas utilizando otro servidor HTTP (Nginx, Lighttpd, Apache, etc) escuchando en el puerto 80 deberás volver a configurarlo para que escuche por otro puerto diferente al 80.
Instalación
Comenzamos la instalación ejecutando el comando:
wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh
Actualizara el sistema y bajara los ficheros necesarios para realizar la instalación
Nos irán apareciendo una serie de ventanas, la primera nos informa que va a transformar nuestra raspberry en una bloqueador de publicidad.
Pi-Hole se licencia con GNU/GPL, aquí nos da su dirección por si deseamos hacer una donación al proyecto.
Nos informa que PI-Hole utiliza su propio servidor para funcionar por lo que necesita una dirección IP estática.
En esta pantalla es importante elegir tun0 como Interface de red, ya que es el que utiliza OpenVPN como vimos antes. Si no tuviósemos instalado OpenVPN eligiriamos eth0 en caso de tener la rpi conectada a Internet mediante un cable red o wlan0 en caso de estar conectada mediante wi-fi.
Aquí podemos elegir entre varios servicios de DNS para que Pi-Hole pueda resolver la dirección IP que no tenga cacheadas y que no tengan que ser filtradas, en mi caso elijo las de Google
Elegimos que trafico vamos a filtrar, yo selecciono tanto IPv4 como IPv6
Nos informa de la dirección IP estática que le va a asignar a la rpi así como la puerta de enlace, como antes, en caso de no utilizar Openvpn lo podríamos dejar así, pero en nuestro caso debemos cambiarla ya que queremos que el filtrado funcione para la red donde esta configurada nuestra VPN. Seleccionamos No
Ponemos la dirección IP del servidor Openvpn
Y la puerta de enlace
Verificamos que los datos son correctos y seleccionamos Si
En caso de tener IPv6, nos informa de la dirección usada para el bloqueo de la publicidad.
Debemos elegir si deseamos instalar la interfaz web para administrar pi-hole, recordar que si ya tenemos corriendo otro servidor HTTP en e puerto 80, debemos de cambiarlo a otro diferente para evitar conflictos.
Recomiendo activar el log de peticiones para así poder hacer un seguimiento y filtrado manual en caso de que sea necesario.
Termina la instalación
En mi caso tengo iptables como firewall, por lo que recibo un aviso de que se van modificar la reglas para poder permitir el trafico de los puertos 80 y 53 hacia el servidor de pi-hole
Cuando termina la instalación nos aparece la ventana con los datos de conexión a la interfaz web para poder administrar pi-hole y la contraseña de acceso
La contraseña de acceso se puede cambiar desde la terminal con el siguiente comando:
pihole -a -p nueva_contraseña
Ya podemos acceder a la interfaz web
Actualizar configuración de OpenVPN y pi-hole
Si no vas a utilizar OpenVPN puedes saltarte este punto.
Debemos actualizar la configuración de OpenVPN para que utilice pi-hole como servidor de DNS.
sudo nano /etc/openvpn/server.conf
Borramos o comentamos las entradas DNS
#Stop using Google DNS for our OpenVPN
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"
Y añadimos la direcion de nuestro servidor pi-hole como servidor de DNS
push "dhcp-option DNS 10.8.0.1"
Guardamos los cambios y reiniciamos el servador Openvpn:
sudo systemctl restart [email protected]
Ahora debemos configurar pi-hole para emparejarlo con OpenVPN
Editamos el fichero /etc/dnsmasq.conf
sudo nano /etc/dnsmasq.conf
Modificamos #listen-address= por listen-address=127.0.0.1, 192.168.xxx.xxx, 10.8.0.1
La segunda dirección IP (192.168.xxx.xxx) es la dirección IP local de nuestra rpi y la tercera IP (10.8.0.1) es el de la interface tun0.
Reiniciamos DNSMasq
sudo systemctl restart dnsmasq
Con esto ya tendremos configurado pi-hole para trabajar junto a Openvpn.
Configurando los clientes
Si utilizamos Openvpn en nuestros dispositivos no tendremos que hacer nada mas.
Si deseas utilizar pi-hole sin conectarte a tu VPN necesitas configurar tu red para que el servidor DNS sea la dirección IP de nuestro servidor pi-hole.
Lo ideal es configurar el router para que utilice el servidor pi-hole como servidor DNS, en mi caso, mi router no me permite modificar ese valor por lo que debo hacerlo manualmente en cada equipo.
Probando Pi-Hole
Desde esta pagina web https://pi-hole.net/pages-to-test-ad-blocking-performance/ podóis probar si realmente funciona el bloqueo de publicidad.
Para terminar os muestro unas capturas de pantalla del funcionamiento de pi-hole:
Espero que te haya gustado, pasa un buen día. 🐧