Pi-Hole + Openvpn: Bloquea la publicidad

2017-08-08

Índice

  1. Pasos previos
  2. Instalación
  3. Actualizar configuración de OpenVPN y pi-hole
  4. Configurando los clientes
  5. 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

img

Actualizara el sistema y bajara los ficheros necesarios para realizar la instalación

img

Nos irán apareciendo una serie de ventanas, la primera nos informa que va a transformar nuestra raspberry en una bloqueador de publicidad.

img

Pi-Hole se licencia con GNU/GPL, aquí nos da su dirección por si deseamos hacer una donación al proyecto.

img

Nos informa que PI-Hole utiliza su propio servidor para funcionar por lo que necesita una dirección IP estática.

img

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.

img

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

img

Elegimos que trafico vamos a filtrar, yo selecciono tanto IPv4 como IPv6

img

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

img

Ponemos la dirección IP del servidor Openvpn

img

Y la puerta de enlace

img

Verificamos que los datos son correctos y seleccionamos Si

img

En caso de tener IPv6, nos informa de la dirección usada para el bloqueo de la publicidad.

img

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.

img

Recomiendo activar el log de peticiones para así poder hacer un seguimiento y filtrado manual en caso de que sea necesario.

img

Termina la instalación

img

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

img

img

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

img

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

img

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.

img

img

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:

img

img

img

Espero que te haya gustado, pasa un buen día. 🐧


Ingrese la dirección de su instancia