DNS y bloqueador de anuncios con Pi-hole
Pi-hole es un servidor DNS que bloquea publicidad y rastreadores a nivel de red.
Funciona interceptando las peticiones DNS de los dispositivos conectados y bloqueando dominios conocidos de publicidad antes de que carguen. Se instala normalmente en un servidor local (como una Raspberry Pi o máquina virtual) y protege toda la red sin necesidad de instalar extensiones en cada equipo.
En nuestro caso planteamos el siguiente escenario para su funcionamiento:
Escenario actual
Debemos primero plantear el escenario de máquinas virtuales con el que nos encontramos:
Ubuntu Server (Pi-hole)
1. Adaptador puente 2. Red interna “LAB”
1. IP LAN real 2. 10.0.0.5
DNS y puerta de enlace interna
Ubuntu Desktop (Cliente)
1. Red interna “LAB”
10.0.0.x
Cliente
👉 El problema es que la máquina cliente no tiene acceso a Internet, ya que solo está en la red interna y no hay NAT configurado. Para ello, la solución general va a pasar por configurar el Pi-hole como gateway y NAT. Básicamente:
El cliente usa el Pi-hole como DNS y puerta de enlace.
El servidor hace NAT hacia el adaptador puente.
Esto se hace con unas pocas configuraciones en el servidor:
1. Asignar IP estática al adaptador interno (Pi-hole)
Edita /etc/netplan/01-netcfg.yaml (o el archivo correspondiente a tu versión de Ubuntu Server):
network:
version: 2
renderer: networkd
ethernets:
enp0s3: # Adaptador puente
dhcp4: true
enp0s8: # Adaptador interno
addresses:
- 10.0.0.5/24Luego:
2. Habilitar el reenvío de paquetes IP en el servidor y configurar NAT con iptables
Disclaimer:
Este paso es necesario por el hecho de que la red NAT en VirtualBox con Windows esta temporalmente estroepada hasta que quieran parchearla.
Edita /etc/sysctl.conf con nano y descomenta o agrega:
Aplica los cambios:
Ahora vamos a configurar el servicio NAT para permitir la entrada de datos de Internet a través de la segunda interfaz. Para ello, si tu adaptador puente es enp0s3 y el interno enp0s8 escribe lo siguiente:
Para hacerlo persistente tras reinicio, puedes instalar iptables-persistent:
3. Configurar Pi-hole para escuchar en la red interna
Durante o después de la instalación de Pi-hole, asegúrate que:
Escuche en la IP
10.0.0.5.Resuelva DNS usando, por ejemplo,
1.1.1.1o8.8.8.8como upstream.Permita solicitudes de toda la red interna.
4. Instalar pihole
Primero empezaremos por actualizar el sistema como buena práctica:
También nos aseguraremos que esté instalado curl
y, si no lo tienes, lo instalas con:
Ahora, ejecuta el instalador oficial de Pi-hole:
Sigue ahora el asistente interactivo:
Elegir interfaz de red con IP estática, en nuestro caso enp0s8 (red interna).
Elegir activar DHCP.
Seleccionar DNS upstream (Google, Cloudflare, etc.).
Al final te mostrará la contraseña de acceso a la interfaz web y como acceder:

Desde un navegador de tu máquina host (Windows):
http://<IP-del-servidor>/admin:80
Si no te acuerdas de la contraseña, para cambiar contraseña si la olvidas:
Si ya lo instalaste previamente (por el motivo que sea) puedes "reconfigurarlo" con:
y seleccionas reconfigure.
5. Probar conectividad y Uso
Desde la interfaz de pi-hole, accede a la opción de DHCP y configúrala tal que así:

Ahora para probar si ha funcionado todo, desde el cliente probamos:
En el servidor:
Deberías ver las consultas DNS pasando por Pi-hole, si hacemos una prueba entrando a una web con anuncios veremos la diferencia:

Prueba ahora a acceder a la interfaz de pihole y entra a alguna página potencialmente maliciosa (Por ejemplo, www.annualconsumersurvey.com), verás que no te deja acceder y ahora las queries bloqueadas en pihole:


Si pruebas con youtube, te darás cuenta que pi-hole no funciona, ¿Por qué?
La respuesta es muy sencilla, Pi-hole solo trabaja a nivel de DNS (dominios), no puede distinguir si esa IP sirve un anuncio o el video en sí. Si bloqueas ese dominio, también bloqueas el video 😅. Además, los anuncios se insertan dinámicamente en la misma conexión HTTPS y YouTube cambia constantemente los endpoints de anuncios por lo que aunque instales algunas blacklist concretas, youtube las romperá en cuestión de dias.
Que listos son estos de youtube! Pero recuerda que siempre puedes usar adblocker 😉
Puedes tratar ahora tú de configurar un dominio excluido, es una buena forma de establecer un "control parental" o filtrar en tu empresa o domicilio.

Última actualización