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/24
Luego:
sudo netplan apply
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:
net.ipv4.ip_forward=1
Aplica los cambios:
sudo sysctl -p
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:
# Permitir forwarding desde la red interna a la externa
sudo iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Hacer NAT (enmascaramiento)
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Para hacerlo persistente tras reinicio, puedes instalar iptables-persistent
:
sudo apt install iptables-persistent
sudo netfilter-persistent save
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.1
o8.8.8.8
como upstream.Permita solicitudes de toda la red interna.
4. Instalar pihole
Primero empezaremos por actualizar el sistema como buena práctica:
sudo apt update && sudo apt upgrade -y
También nos aseguraremos que esté instalado curl
curl --help
y, si no lo tienes, lo instalas con:
sudo apt install curl -y
Ahora, ejecuta el instalador oficial de Pi-hole:
curl -sSL https://install.pi-hole.net | bash
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:
pihole -a -p
Si ya lo instalaste previamente (por el motivo que sea) puedes "reconfigurarlo" con:
pihole -r
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:
ping 10.0.0.5 # al Pi-hole
ping 8.8.8.8 # a internet por IP
ping google.com # debe resolver por DNS del Pi-hole
En el servidor:
sudo tail -f /var/log/pihole.log
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:


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