Cómo usar Pi-hole y Mullvad VPN en una Raspberry Pi

Introducción
¿Te preocupa que tu proveedor de Internet pueda espiarte y leer todo el tráfico de tu red doméstica? ¿Estás cansado de ver anuncios por todas partes? ¿O simplemente no te gusta que una empresa cualquiera pueda ver y rastrear cada movimiento del ratón y cada pulsación mientras navegas?
Si esas son algunas de tus preocupaciones, estás en el lugar adecuado.
En esta guía práctica y sencilla configuraremos un bloqueador de anuncios y rastreadores para toda la red, creando una especie de escudo digital entre tú, tu proveedor y las empresas de analítica.
Usaremos Pi-hole (un sistema de filtrado DNS muy popular) para bloquear anuncios y rastreadores, y Mullvad VPN (un proveedor VPN muy respetuoso con la privacidad) para ocultar tu tráfico web al proveedor.
Qué necesitamos
Empecemos enumerando lo necesario para hacer nuestra red doméstica o de oficina más segura y privada.
Raspberry Pi
El elemento principal es la Raspberry Pi, un pequeño ordenador muy conocido que permite probar proyectos en casa sin un servidor caro. Su CPU ARM y su memoria son suficientes para nuestro escudo de red.

Usaremos Raspberry Pi OS, en concreto la versión Lite sin interfaz gráfica. Recomiendo la variante de 4 GB u 8 GB, aunque la instalación utilizará mucho menos. También conviene conocer lo básico del terminal y de las conexiones SSH.
Mullvad
Necesitaremos una cuenta de Mullvad. Es un proveedor VPN popular y centrado en la privacidad, y ni siquiera exige una dirección de correo: al registrarte recibes un número de cuenta aleatorio. Tampoco necesitas contraseña.

Mullvad aplica una política estricta de no guardar registros: no conserva historial de tráfico, consultas DNS, horas de conexión, direcciones IP ni uso de ancho de banda. Es una excelente opción para mantener el tráfico lejos del proveedor y evitar otro registro detallado de tu actividad.
Elegí Mullvad por esto y por su compromiso con la libertad de expresión y una Internet abierta.
1. Preparar la Raspberry Pi
No explicaremos cómo instalar y grabar el sistema operativo; iremos directamente a la configuración de red. Hay muchas guías detalladas disponibles en Internet.
Empecemos configurando la dirección IP de la Pi.
2. Establecer una IP estática
Para usar la Raspberry Pi como servidor DNS (Pi-hole) y puerta de enlace (Mullvad), necesitamos una IP estática. Normalmente el router asigna una dirección mediante DHCP, pero esa dirección puede cambiar y hacer que los demás dispositivos pierdan la Pi.
Por eso fijaremos una dirección permanente. Para cambiar la red usaremos NetworkManager.
Enumerar las interfaces de red
nmcli con show
En mi caso, la conexión se llama netplan-eth0 y el dispositivo eth0.
Configurarla con la interfaz de texto
Puedes usar la interfaz sencilla o la línea de comandos. Para abrir la interfaz:
sudo nmtuiO configurarla desde la línea de comandos
Recomiendo este método porque es más rápido. Sustituye los nombres y direcciones por los de tu red.
sudo nmcli con mod netplan-eth0 ipv4.addresses "192.168.21.82/24" ipv4.gateway "192.168.21.1" ipv4.dns "192.168.21.1,1.1.1.1" ipv4.method manualAplicar los cambios
sudo nmcli device reapply eth0Verificar la interfaz
Comprueba que dirección, puerta de enlace y DNS coinciden con los valores configurados.
nmcli device show eth0
La Raspberry Pi ya tiene una IP estática. Si estás conectado por SSH, la conexión puede cortarse; vuelve a conectarte usando la nueva dirección.
3. Instalar Pi-hole
Actualizar primero el sistema
Actualiza el sistema y los paquetes para disponer de los últimos parches de seguridad y reinicia la Pi.
sudo apt update && sudo apt full-upgrade -ysudo reboot
Instalar Pi-hole
Usaremos el instalador oficial de un solo paso. Si quieres revisar lo que ejecutará, examina antes el script.
curl -sSL https://install.pi-hole.net | bash
El instalador mostrará varias pantallas. Confirma primero la IP estática y pulsa Continue.

Selecciona Cloudflare como DNS ascendente por ahora; lo cambiaremos cuando funcione Mullvad.

Confirma la lista StevenBlack Unified Hosts, que bloquea dominios conocidos de publicidad y seguimiento.

La instalación ya está completa. Guarda el enlace y la contraseña del panel: normalmente http://<pi-ip>/admin o http://pi.hole/admin.

Establecer una contraseña nueva
Puedes cambiar la contraseña generada automáticamente desde la terminal. Usa una contraseña segura que no reutilices en otro servicio.
sudo pihole setpassword
Ya tenemos un bloqueador de anuncios y rastreadores para toda la red. Consulta la documentación oficial para saber más.
4. Configurar el DNS de la red
Pi-hole solo filtra las consultas DNS que recibe. Para aplicar el filtrado a toda la red, configura el DHCP del router para distribuir la IP de la Raspberry Pi como DNS principal. Renueva después la concesión o reconecta los clientes y comprueba que la Pi aparece como DNS.
Si el router no permite cambiar el DNS por DHCP, configúralo manualmente en cada dispositivo. También puedes configurar la Pi para usar Pi-hole mediante /etc/dhcpcd.conf o NetworkManager, con cuidado: una configuración incorrecta puede romper la conectividad.
5. Instalar WireGuard y Mullvad
Cuando Pi-hole funcione, instala WireGuard. WireGuard crea un túnel VPN cifrado, ligero y rápido entre la Pi y un servidor. Mullvad proporciona los archivos de configuración; WireGuard los lee, conecta con Mullvad y dirige por el túnel el tráfico de Internet de la Pi, mientras Pi-hole filtra el DNS.
Instalar WireGuard
sudo apt install wireguard wireguard-tools resolvconf -y
Configurar WireGuard
Descarga desde tu cuenta Mullvad una configuración para WireGuard y Linux, elige un servidor y guárdala como mullvad.conf en /etc/wireguard. Protege la clave privada:
sudo chmod 600 /etc/wireguard/mullvad.confIniciar y verificar el túnel
sudo wg-quick up mullvadsudo wg showcurl https://am.i.mullvad.net/connectedDeberías ver "You are connected to Mullvad", el servidor y su IP pública. Activa el inicio automático:
sudo systemctl enable wg-quick@mullvad
Para detenerlo durante las pruebas:
sudo wg-quick down mullvadDirigir el tráfico por Mullvad
La Pi ya usa Mullvad, pero para otros dispositivos debe reenviar y enmascarar el tráfico. Supondremos que:
- La interfaz LAN es eth0.
- La interfaz WireGuard de Mullvad es mullvad porque el archivo se llama mullvad.conf.
- La dirección LAN de la Raspberry Pi es 192.168.21.82.
Sustituye los valores de ejemplo por los tuyos. Comprueba los nombres con:
ip link showSi la interfaz se llama wg0, sustituye mullvad por wg0.
Activar el reenvío IPv4
sudo sysctl net.ipv4.ip_forward
El valor debe ser 1. Si es 0, actívalo:
sudo sysctl -w net.ipv4.ip_forward=1Hazlo permanente:
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.confsudo sysctl --systemComprueba de nuevo:
sudo sysctl net.ipv4.ip_forward
Permitir el reenvío y añadir NAT
sudo iptables -A FORWARD -i eth0 -o mullvad -j ACCEPTsudo iptables -A FORWARD -i mullvad -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTsudo iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADEGuarda las reglas para que sobrevivan al reinicio:
sudo apt install iptables-persistent -y

sudo netfilter-persistent save
Configurar los dispositivos de red
Configura todos los dispositivos con estos valores:
- Una IP en la misma LAN que la Raspberry Pi.
- La IP de la Raspberry Pi como puerta de enlace predeterminada.
- La IP de la Raspberry Pi como servidor DNS.
Probar la ruta por etapas
Comprueba primero la Pi:
ping 192.168.21.82Después prueba el servidor DNS de Cloudflare 1.1.1.1:
ping 1.1.1.1Y finalmente una resolución DNS:
nslookup example.comSi falla algo:
- Si falla la primera prueba, revisa la red y la puerta de enlace del PC.
- Si la primera funciona pero falla 1.1.1.1, revisa el reenvío IPv4, NAT y el firewall de Mullvad.
- Si funciona la IP pública pero falla DNS, comprueba que Pi-hole escucha en la LAN y que el PC lo usa como DNS.
sudo wg show
Los contadores deben aumentar. Comprueba la dirección pública desde el PC:
curl https://am.i.mullvad.net/connected
6. Comprobar si estamos realmente protegidos
Abre la comprobación de conexión de Mullvad y revisa la IP de salida y los resolvedores DNS.

Qué significa el resultado
Si todo está verde, está bien; las secciones rojas indican un problema.
- Si la IP de salida pertenece a Mullvad, como **it-mil-wg-001** en Milán, el tráfico pasa correctamente por Mullvad.
- Si los resolvedores son direcciones de Cloudflare como **172.70.x.x**, **1.1.1.1** o su IPv6 equivalente, Pi-hole reenvía el DNS a Cloudflare.
Normalmente Using Mullvad VPN y No WebRTC leaks aparecen en verde, pero No DNS leaks en rojo porque usamos Cloudflare. Mullvad solo marca esta sección como correcta cuando los resolvedores pertenecen a Mullvad.
Poner en verde la comprobación DNS
Cambia el DNS ascendente de Pi-hole por uno de Mullvad:
- 1DNS interno de Mullvad: 10.64.0.1. Solo funciona con el túnel WireGuard activo.
- 2DNS público de Mullvad sin filtrado: 194.242.2.2. Sigue funcionando si el túnel cae brevemente.
- 3DNS público de Mullvad con bloqueo de anuncios, rastreadores y malware: 194.242.2.4.
- 4DNS público de Mullvad solo con bloqueo de anuncios: 194.242.2.3.
En el panel de Pi-hole:
- 1Abre la interfaz de administración de Pi-hole.
- 2Ve a Settings y después a DNS.
- 3En Upstream DNS Servers, desmarca Cloudflare y los demás proveedores.
- 4Selecciona Custom e introduce una dirección DNS de Mullvad. Puedes añadir resolvers IPv4 e IPv6.
- 5Pulsa Save al final de la página.

Espera unos segundos y repite la prueba en mullvad.net/check. Debería aparecer No DNS leaks en verde.
Si la comprobación sigue mostrando una fuga DNS
La causa más común es que el navegador use su propio DNS over HTTPS y omita la configuración del sistema y de Pi-hole. Desactiva el DNS seguro.
Firefox
- 1Abre Settings y Privacy & Security.
- 2Desplázate hasta DNS over HTTPS.
- 3Selecciona Off.
- 4Reinicia Firefox y repite la comprobación.
Chrome
- 1Abre chrome://settings/security.
- 2En Use secure DNS, desactiva la opción.
- 3Reinicia Chrome y repite la comprobación.
Edge
- 1Abre edge://settings/privacy.
- 2Busca Use secure DNS y desactívalo.
- 3Reinicia Edge y repite la comprobación.
Si no cambia, prueba una ventana privada o un navegador diferente para confirmar si el navegador es la causa.
Conclusión
Tu Raspberry Pi ya funciona como bloqueador de anuncios y rastreadores para toda la red y dirige el tráfico por Mullvad VPN. Mantén Raspberry Pi OS, Pi-hole, WireGuard y la configuración de Mullvad actualizados para recibir los últimos parches y conservar la fiabilidad.
¡Eso es todo por hoy! Espero que te haya gustado la guía y nos vemos pronto.
Preguntas frecuentes
Encuentra respuestas rapidas a las preguntas mas comunes sobre este tema.
Pi-hole bloquea anuncios y rastreadores a nivel DNS, mientras Mullvad dirige el tráfico de Internet por un túnel VPN cifrado. Juntos ofrecen filtrado DNS para toda la red y protección VPN a los dispositivos que usan la Raspberry Pi como servidor DNS y puerta de enlace.
Sí. Puede ejecutar Pi-hole como servidor DNS de la red y WireGuard como cliente VPN de Mullvad. Con el reenvío IPv4 y NAT configurados, también puede dirigir por el túnel el tráfico de otros dispositivos.
Necesita una dirección estable para que los demás dispositivos siempre puedan encontrarla como servidor DNS y puerta de enlace. Una dirección DHCP cambiante podría interrumpir el filtrado DNS e impedir el acceso a la puerta de enlace VPN.
Activa el reenvío IPv4, permite el reenvío entre las interfaces LAN y WireGuard, añade una regla de masquerade para la interfaz VPN y configura cada dispositivo para usar la Pi como puerta de enlace y servidor DNS.
Usa el DNS interno de Mullvad, 10.64.0.1, con el túnel WireGuard activo. Para el DNS público de Mullvad, usa 194.242.2.2 sin filtrado, 194.242.2.4 con bloqueo de anuncios y rastreadores o 194.242.2.3 solo con bloqueo de anuncios.
Cloudflare no es operado por Mullvad, por lo que su comprobación puede informar de una fuga aunque el túnel funcione correctamente. Para mostrar No DNS leaks, configura Pi-hole con un resolvedor DNS de Mullvad en lugar de Cloudflare.
Desactiva DNS over HTTPS o DNS seguro en el navegador y vuelve a ejecutar la comprobación de Mullvad. Si el resultado no cambia, prueba una ventana privada u otro navegador para comprobar si está evitando Pi-hole.
