Guías

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

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

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.

Descripción general de Raspberry Pi

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.

Descripción general de Mullvad VPN

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

Terminal
nmcli con show

Lista de conexiones de NetworkManager

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:

Terminal
sudo nmtui

O 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.

Terminal
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 manual

Aplicar los cambios

Terminal
sudo nmcli device reapply eth0

Verificar la interfaz

Comprueba que dirección, puerta de enlace y DNS coinciden con los valores configurados.

Terminal
nmcli device show eth0

Detalles de la interfaz de NetworkManager

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.

Terminal
sudo apt update && sudo apt full-upgrade -ysudo reboot

Actualización del sistema de Raspberry Pi

Instalar Pi-hole

Usaremos el instalador oficial de un solo paso. Si quieres revisar lo que ejecutará, examina antes el script.

Terminal
curl -sSL https://install.pi-hole.net | bash

Pantalla de bienvenida del instalador de Pi-hole

El instalador mostrará varias pantallas. Confirma primero la IP estática y pulsa Continue.

Selección de interfaz del instalador de Pi-hole

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

Selección del DNS ascendente de Pi-hole

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

Instalación de Pi-hole completada

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.

Inicio de sesión de la interfaz web de Pi-hole

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.

Terminal
sudo pihole setpassword

Panel de Pi-hole

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

Terminal
sudo apt install wireguard wireguard-tools resolvconf -y

Instalación de WireGuard

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:

Terminal
sudo chmod 600 /etc/wireguard/mullvad.conf

Iniciar y verificar el túnel

Terminal
sudo wg-quick up mullvad
Terminal
sudo wg showcurl https://am.i.mullvad.net/connected

Deberías ver "You are connected to Mullvad", el servidor y su IP pública. Activa el inicio automático:

Terminal
sudo systemctl enable wg-quick@mullvad

Servicio WireGuard activado

Para detenerlo durante las pruebas:

Terminal
sudo wg-quick down mullvad

Dirigir 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:

Terminal
ip link show

Si la interfaz se llama wg0, sustituye mullvad por wg0.

Activar el reenvío IPv4

Terminal
sudo sysctl net.ipv4.ip_forward

Reenvío IPv4 desactivado

El valor debe ser 1. Si es 0, actívalo:

Terminal
sudo sysctl -w net.ipv4.ip_forward=1

Hazlo permanente:

Terminal
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.confsudo sysctl --system

Comprueba de nuevo:

Terminal
sudo sysctl net.ipv4.ip_forward

Reenvío IPv4 activado

Permitir el reenvío y añadir NAT

Terminal
sudo iptables -A FORWARD -i eth0 -o mullvad -j ACCEPTsudo iptables -A FORWARD -i mullvad -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Terminal
sudo iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADE

Guarda las reglas para que sobrevivan al reinicio:

Terminal
sudo apt install iptables-persistent -y

Configuración IPv4 guardada

Configuración IPv6 guardada

Terminal
sudo netfilter-persistent save

Reglas de firewall persistentes

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:

Terminal
ping 192.168.21.82

Después prueba el servidor DNS de Cloudflare 1.1.1.1:

Terminal
ping 1.1.1.1

Y finalmente una resolución DNS:

Terminal
nslookup example.com

Si 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.
Terminal
sudo wg show

Comprobación del tráfico de Mullvad

Los contadores deben aumentar. Comprueba la dirección pública desde el PC:

Terminal
curl https://am.i.mullvad.net/connected

Salida del comando de conexión de Mullvad

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.

Comprobación de conexión de Mullvad

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:

  • 1
    DNS interno de Mullvad: 10.64.0.1. Solo funciona con el túnel WireGuard activo.
  • 2
    DNS público de Mullvad sin filtrado: 194.242.2.2. Sigue funcionando si el túnel cae brevemente.
  • 3
    DNS público de Mullvad con bloqueo de anuncios, rastreadores y malware: 194.242.2.4.
  • 4
    DNS público de Mullvad solo con bloqueo de anuncios: 194.242.2.3.

En el panel de Pi-hole:

  • 1
    Abre la interfaz de administración de Pi-hole.
  • 2
    Ve a Settings y después a DNS.
  • 3
    En Upstream DNS Servers, desmarca Cloudflare y los demás proveedores.
  • 4
    Selecciona Custom e introduce una dirección DNS de Mullvad. Puedes añadir resolvers IPv4 e IPv6.
  • 5
    Pulsa Save al final de la página.

Configuración DNS de Pi-hole

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

  • 1
    Abre Settings y Privacy & Security.
  • 2
    Desplázate hasta DNS over HTTPS.
  • 3
    Selecciona Off.
  • 4
    Reinicia Firefox y repite la comprobación.

Chrome

  • 1
    Abre chrome://settings/security.
  • 2
    En Use secure DNS, desactiva la opción.
  • 3
    Reinicia Chrome y repite la comprobación.

Edge

  • 1
    Abre edge://settings/privacy.
  • 2
    Busca Use secure DNS y desactívalo.
  • 3
    Reinicia 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.

¿Para qué sirve usar Pi-hole con Mullvad en una Raspberry Pi?

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.

¿Puede una Raspberry Pi ejecutar Pi-hole y Mullvad WireGuard al mismo tiempo?

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.

¿Por qué necesita la Raspberry Pi una dirección IP estática?

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.

¿Cómo dirijo el tráfico de mi red doméstica a través de Mullvad?

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.

¿Qué servidor DNS de Mullvad debo usar con Pi-hole?

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.

¿Por qué la comprobación de Mullvad muestra una fuga DNS con Cloudflare?

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.

¿Cómo soluciono una fuga DNS causada por el navegador?

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.

Bruma

Autor

Bruma

Publicado:
Actualizado: