Saltar al contenido

Bloqueando Anuncios en Casa con Pi-hole

  • PROYECTO

Navegar en internet hoy en día nos expone a ser constantemente interrumpido por anuncios. Estos anuncios pueden obstaculizar la lectura de una noticia, la visualización de un episodio de una serie, e incluso, impedir continuar un juego en el teléfono, son molestos. Alguien que trabaje en tecnología podría pensar que basta con instalar un bloqueador de anuncios como uBlockOrigin o AdBlockPlus, pero es es sorprendente ver que muchas personas, aunque navegan diariamente y trabajan con un computador, perciben los anuncios como algo inevitable, algo con lo que deben conformarse. Este es el caso de algunos miembros de mi familia, y  aunque lo más sencillo sería decirles que usen un bloqueador o instalarlo yo mismo, decidí buscar una alternativa aún más fácil para ellos, donde la carga técnica recayera en mí.

Entre las opciones que encontré, Pi-hole llamó especialmente la atención. Básicamente, Pi-hole actúa como un servidor DNS privado que opera sobre la red local. Cuando se hace una solicitud para cargar una página web, el dispositivo consulta a Pi-hole en lugar de a un servidor DNS público. Pi-hole verifica si la dirección pertenece a un servidor de publicidad y, de ser así, bloquea la solicitud, evitando que se carguen los anuncios. Además de bloquear anuncios, Pi-hole contribuye a la privacidad del usuario al reducir la cantidad de datos que los anunciantes pueden recopilar sobre los hábitos de navegación. Como su nombre lo indica, está diseñado para funcionar en una Raspberry Pi, aunque también funciona en otros equipos que soportan algunas distribuciones de Linux. Para probarlo, utilicé una Raspberry Pi 1 Model B+ que tenía guardada hace tiempo, donde instalé Raspberry Pi OS y Pi-hole. Desde junio de 2023, esta Raspberry Pi ha estado en funcionamiento en casa, el único problema es que cada vez que se reinician los puntos de acceso (Access Points) de la casa, es necesario reconfigurar la dirección IP de la Raspberry Pi como servidor DNS, aunque no resulta ser un inconveniente mayor.

Con la idea de mejorar la configuración, decidí adquirir un par de Raspberry Pi Zero 2 W: una para reemplazar la Raspberry Pi 1 Model B+, que tiene más de 10 años y no rinde igual, y otra para añadir un Pi-hole redundante en la red. Con esto, puedo asegurarme de que todas las solicitudes web pasen por alguna de las Pi-hole y no se cuele ningún anuncio. Cada Raspberry Pi Zero 2 W tiene una memoria microSD de 32 GB, que es almacenamiento suficiente para el sistema operativo, la instalación de Pi-hole y algunos experimentos que quiero hacer en el futuro.

Para instalar el sistema operativo, utilicé la herramienta Raspberry Pi Imager, en la cual configuré la cuenta de usuario y las credenciales de la red local. También añadí el archivo ssh, ya que toda la configuración la realicé desde la consola y sin uso de una pantalla o “headless”, como se conoce a este método. Primero configuré el sistema con el siguiente comando:

sudo raspi-config

Dentro de los parámetros relevantes configuré los siguientes:

  • 1 System Options > S5 Boot / Auto Login > B2 Console Autologin
  • 1 System Options > S6 Splash Screen > No
  • 1 System Options > S7 Power LED > Yes
  • 2 Display Settings > D4 Composite Output > No
  • 3 Interface Options > I1 SSH > Yes
  • 3 Interface Options > I2 RPi Connect > No > No
  • 3 Interface Options > I3 VNC > No
  • 3 Interface Options > I4 SPI > No
  • 3 Interface Options > I5 I2C > No
  • 3 Interface Options > I6 Serial Port > No > No
  • 3 Interface Options > I7 1-Wire > No
  • 3 Interface Options > I8 Remote GPIO > No

Luego expandí el sistema de archivos para aprovechar todo el espacio de la memoria microSD e hice un reinicio de la Raspberry Pi Zero 2 W. Posteriormente, ejecuté este comando para actualizar todos los componentes del sistema:

sudo apt update && sudo apt upgrade -y

También fue necesario configurar una IP fija para la Raspberry Pi Zero 2 W, por una parte lo hice reservando la IP con la dirección MAC de la Raspberry Pi Zero desde la pagina de gestión del router de la casa; por otra parte desactivé el DHCP de la Raspberry Pi Zero y le asigné la IP usando el Network Manager desde el terminal con el comando:

sudo nmtui

Después de reiniciar para que el cambio de IP surtiera efecto, comencé la instalación de Pi-hole con el siguiente comando:

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

La instalación incluye un asistente que toma algo de tiempo.

En mi caso le indiqué al asistente que la Raspberry Pi Zero 2 W tenía una IP fija, que el DNS al que se iba a conectar era Cloudflare (1.1.1.1), que usaría la lista de bloqueo de StevenBlack’s Unified Hosts List, que instalaría la interfaz web para gestión, que instalaría los modulos para la interfaz web y que habilitaría el log de todas las solicitudes hechas a los DNS.

Al finalizar, se muestra una pantalla con la IP configurada, la URL para gestionar Pi-hole y la contraseña.

Para cambiar la contraseña de la interfaz de gestión, se utiliza el comando:

pihole -a -p

Una vez completada esta configuración, ya podemos cerrar la conexión ssh con la Raspberry Pi Zero 2 W, y realizar la gestión directamente desde un navegador mediante la interfaz gráfica.

En la sección de Adlists, se pueden agregar las listas de bloqueo. Estas contienen los dominios de servidores de publicidad, rastreo y medición. En la primera instalación utilicé listas recomendadas en The Best Pi-Hole Blocklists (2024) y en The Firebog, para este caso exporté las listas que estaban en la Raspberry Pi 1 Model B+ y las importé a las Raspberry Pi Zero 2 W. Recomiendan no agregar todas las listas, pues algunas pueden interferir con el funcionamiento de ciertas páginas web, no solo bloqueando anuncios. Luego de añadir las listas, hay que ir a la sección Tools, seleccionar Update Gravity y presionar el botón Update. Este proceso lee las listas previamente configuradas y añade los dominios correspondientes a la base de datos de Pi-hole.

Lo único que resta es acceder al router de nuestra red local y configurar las IP de las Raspberry Pi Zero 2 W como los servidores DNS. En algunos routers, puede que no se permita modificar estos parámetros; de ser así, será necesario ingresar a la configuración de red del computador y añadir las IP de la Raspberry Pi Zero 2 W en el espacio destinado a los servidores DNS.

La Raspberry Pi 1 Model B+ venía con una carcasa comprada hace tiempo, pero para las Raspberry Pi Zero 2 W decidí imprimir dos copias del modelo Raspberry Pi Zero case/Zero W case/Zero 2 W case (2h print) de Nikolica en Printables. De las dos opciones de impresión, seleccioné la que no incluye soportes y dejé que el slicer decidiera dónde ubicarlos.

Implementar Pi-hole en casa ha sido una solución efectiva para eliminar anuncios y mejorar la experiencia de navegación de mi familia sin necesidad de instalar bloqueadores en cada dispositivo. Además de contribuir un poco con la privacidad y simplificar el uso de dispositivos para quienes no están familiarizados con el manejo de bloqueadores de anuncios. Esta configuración mejora la seguridad y el control sobre el tráfico en la red, convirtiéndose en una herramienta robusta y accesible, gracias al soporte de su amplia comunidad de usuarios.

Más información:
Pi-hole
Installation – Pi-hole documentation
pi-hole/pi-hole
Set Static IP Address on Raspberry Pi
pi-hole/PADD

Si tienes alguna inquietud no dudes en comentar.

Deja un comentario