Cómo configurar Pi-hole en tu Raspberry Pi para bloquear todos los anuncios de internet

Actualizada:

¿Quieres mejorar tu privacidad y bloquear todos los anuncios, cookies de seguimiento y monitores de actividad generados por los servicios online cuando navegas por internet desde tu casa? Pi-hole – Network-wide Ad Blocking es el camino a seguir, y además es un programa totalmente gratuito y fácil de instalar.

  • Puedes instalar Pi-hole mediante Docker, y en multitud de sistemas operativos como Ubuntu, Fedora, CentOS y en Raspbian, el sistema operativo de la Raspberry Pi.

Hoy me voy a centrar en como instalar Pi-hole en tu Raspberry Pi (tal y como acabo de hacer yo), la mejor manera de hacerlo, ya que vas a tener el cacharro encendido todo el día (la Raspberry Pi es muy eficiente). Solo vas a necesitar 52MB de espacio en tu tarjeta micro SD y 512MB de RAM. La Raspberry Pi 4 b cumple con creces en todas sus versiones.

Es otro paso que estoy dando para mejorar mi privacidad online, después de los que ya conté en Las mejores alternativas a Google para mejorar tu privacidad.

¿Qué hace y cómo funciona Pi-Hole?

¿Qué hace y cómo funciona Pi-Hole?

Basicamente lo que hace Pi-hole es ponerse entre tus dispositivos y los servicios DNS que te dan acceso a todas las páginas de internet, y filtrar todos los anuncios y servicios de tracking gracias a que consulta una serie de listas con dominios de internet que están «fichados». Con Pi-hole vas a conseguir lo siguiente:

  • Protección de la red: En lugar de los plugins de los navegadores u otro software en cada ordenador, instalas Pi-hole y toda tu red estará protegida.
  • Bloquear anuncios en aplicaciones: El bloqueo a nivel de red te permite bloquear los anuncios en aplicaciones móviles y televisores inteligentes (SmartTV), independientemente del hardware o del sistema operativo.
  • Mejorar el rendimiento de la red: Como los anuncios se bloquean antes de ser descargados, el rendimiento de la red mejora.
  • Control de estadísticas: vas a poder controlar las estadísticas de bloqueos en tu red y averiguar que servicios son los menos respetan tu privacidad.

Cómo podemos instalar y configurar Pi-hole

Se puede instalar en muchos sistemas Linux compatibles o como contenedor en Docker (para ponerlo por ejemplo en tu NAS), pero creo que la mejor opción es hacerse con una Raspberry Pi y montar Pi-hole en ella.

Instalación de Pi-hole en una Raspberry Pi 4 b

La mejor opción es usar una Raspberry Pi específica para este servicio. La colocas al lado de tu router, y la dejas funcionando en tu casa para bloquear los anuncios hasta el infinito y más allá en todos tus dispositivos. El coste en electricidad es mínimo, teniendo en cuenta que vas a tener 24 horas y 7 días a la semana el aparato encendido.

1.-Comprar la Raspberry Pi y accesorios

  • Puedes comprar una Raspberry Pi4b por separado o en un kit con los elementos principales como cable de conexión, carcasa, tarjeta SD, cable HDMI, etc.

¿Hace falta la carcasa? Creo que sí. Va a estar libre de polvo y más protegida

¿Hace falta ventilador? Puedes probar con los disipadores de calor que suelen venir en los kits, pero me he dado cuenta de que es muy importante elegir una buena carcasa.

Yo me compré un kit en eBay, pero en Amazon también tienes buenas opciones: Raspberry Pi 4 Model B 2GB ARM-Cortex-A72 4x 1,50GHz, 2GB RAM, WLAN-ac, Bluetooth 5.0, LAN, 4x USB, 2x Micro-HDMI

Temperatura Raspberry Pi 4b con carcasa de plástico y con carcasa de aluminio usando Pi-hole (habitación a unos 21ºC)

En la imagen superior se puede ver claramente: tome una captura de pantalla de la interfaz de Pi-hole donde te indican la temperatura y la carga del servidor. En la primera foto la Raspberry Pi estaba con la carcasa de plástico oficial (67,7ºC). en la segunda con la nueva carcasa de aluminio (47,7ºC). La diferencia de temperatura es notable (la temperatura de la habitación era la misma).

En pleno invierno, con 5 grados en el exterior y unos 20-23 grados en casa, la Raspberry Pi se ponía a unos 65ºC… en verano con 35-40ºC, la Raspberry Pi podría llega los 80-85ºC… algo que no es muy bueno para su funcionamiento (suelen recomendar unos 60-65ºC como mucho).

  • Para solucionar el problema, o pones un ventilador en tu carcasa, o compras una buena carcasa. He optado por la segunda opción.
FLIRC Raspberry Pi 4 carcasa

¿Qué carcasa para la Raspberry Pi 4b he comprado? Un modelo en aluminio que ha conseguido que la temperatura pasase de 65ºC a solo 45ºC, y sin ventilador: FLIRC Raspberry Pi 4 Case. Perfecta y fácil de instalar. Una parte de la carcasa toca la CPU con una almohadilla incluida, y la temperatura baja 20ºC casi de inmediato.

He conectado la Raspberry Pi mediante el cable HDMI a un monitor, a la red de alimentación y he conectado un ratón y un teclado… y a funcionar.

2.-Instalar el SO Raspbian en la Raspberry Pi 4b

Instalamos el SO en la tarjeta SD mediante NOOBS y SD Formatter 4.0:

  1. Formateamos la tarjeta SD en nuestro ordenador con SD Formatter 4.0 (Windows y Mac).
  2. Descargamos NOOBS en formato zip y descomprimimos la carpeta
  3. Copiamos todos los archivos descomprimidos a la tarjeta SD tal y como están. Copiar y pegar.
  4. Podemos conectar la Raspberry Pi mediante ethernet a nuestra red para que tenga conexión a internet (luego podemos hacerlo también mediante WIFI)
  5. Metemos la tarjeta SD en la Raspberry Pi y la conectamos a la fuente de alimentación (y al teclado y a la pantalla y al ratón).
  6. Elegimos Raspbian como SO en el menú que nos aparece.
  7. Esperamos a que se instale el sistema.
  8. El usuario inicial es pi y la password raspberry (cambiala)
  9. Aparece en la pantalla la GUI de Raspbian.

Toda la información detallada la puedes encontrar en Installing Raspbian with NOOBS.

Yo he optado por la situación más sencilla: conectar mi Raspberry Pi a una pantalla de ordenador mediante HDMI, pero también te puedes conectar a ella mediante ssh desde un ordenador en tu LAN (ssh -p 22 pi@CAMBIA-POR-IP-raspberry-pi).

3.-Instalar el Pi-hole en la Raspberry Pi 4b

Instalar el Pi-hole en la Raspberry Pi 4b

Primero actualiza Raspbian

Antes de instalar Pi-hole, nos aseguramos de que Raspbian esta completamente actualizado poniendo los siguientes comandos en la LXTerminal (pantalla negra que aparece en la barra superior a la izquierda):

sudo apt update

sudo apt full-upgrade

Instalar Pi-hole

Ahora solo tenemos que seguir en LXTerminal y poner lo siguiente:

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

También puedes optar por poner lo siguiente (cualquiera de los dos métodos debería de funcionar):

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh

Y desde aquí todo es muy sencillo, ya que nos aparece una pantalla y solo hay que seguir los pasos. Solo hay que seleccionar unas cosas importantes:

  • eht0 o wlan0: conexión mediante ethernet a internet o WIFI. En mi caso lo tengo con WIFI, pero lo más sencillo es tener un cable ethernet de la Rpasberry Pi al router si lo tienes cerca.
  • Upstream DNS provider: he elegido Cloudflare porque respeta mi privacidad.
  • Ad Block Third Party List: Selecciona todas las que te indican, luego puedes añadir más o quitarlas.
  • Static IP Address: Asigna una IP fija en tu router a la Raspberry Pi. Es imprescindible. Luego voy a comentar como evitar que tu router cambie esta IP.
  • Web admin interface: Activa la interface web de Pi-hole. Imprescindible.
  • Install web server: On, lighttpd
  • Log queries: On.

Y finalmente te aparecera una pantalla que te indica que la instalación esta completa, con la dirección web que tienes que usar para acceder a la interfaz web (http://pi.hole/admin) y tu login y password. Apunta el password y luego lo cambias si quieres.

  • Con el comando pihole -a -p puedes cambiar la password por si se te olvida.

Ahora ya tienes instalado Pi-hole y puedes acceder mediante el navegador de la Raspberry Pi a la interfaz de usuario, donde hay que configurar una cosa importante.

DNS setting Pi-hole

En el menú de la izquierda vas a Settings > DNS, compruebas que Cloudflare esta seleccionado, quitas las tres primeras opciones de Advanced DNS Settings y al final de todo añades los datos de «Use Condicional Forwarding»: La IP de tu router, y el nombre de dominio que hayas puesto en tu router.

Con ello te aseguras que va a poder resolver los nombres locales en tu red (el nombre de tus dispositivos), y aparecerán las estadísticas con nombres, en lugar de sólo las direcciones IP.

También te puedes pasar por la pestaña Blocklist y añadir más fuentes de bloqueo de anuncios si así lo deseas. Te recomiendo que visites:

Pero con las que vienen por defecto suele ser suficiente.

4.-Configurar Pi-hole para que bloquear los anuncios en nuestros dispositivos de casa

Te habrás dado cuenta de que todavía Pi-hole no ha bloqueado nada. Tienes que configurar en el router que Pi-hole se encargue de las peticiones DNS en tu LAN. Esta es la mejor opción si no quieres tener que ir dispositivo por dispositivo cambiando sus valores DNS.

Asus router config Pi-hole

En mi caso tengo un router Asus con el firmware original. He tenido que ir a Advanced Setting > LAN > DHCP Server y añadir lo siguiente:

  • Domain name: nombre de tu red para distinguir fácilmente tus dispositivos conectados en la LAN (no es imprescindible pero si recomendable).
  • DNS Server: Poner la IP de la RaspberryPi (puedes comprobar su IP en el propio router).

NO hay que cambiar el valor de los DNS en la sección WAN.

IMPORTANTE: Para asegurarnos que la IP de nuestra Raspberry no cambia nunca, podemos decirle al router que la asignamos de manera manual (en esta misma pantalla en mi caso):

Vas a Manually Assigned IP around the DHCP list en Advanced Setting > LAN > DHCP Server, seleccionas el Client Name de tu Raspberry (aparece) y la dejas fija. Das a guardar los cambios.

Y todo debería de empezar a funcionar. Solo tienes que ir a la interfaz web de Pi-hole, visitar algunas página web con muchos anuncios y ver como se empieza a bloquear todo.

En discourse.pi-hole.net tienes más opciones para configurar Pi-hole en tus dispositivos.

Y por si alguien se lo esta preguntando, no he notado que baje la velocidad de mi conexión a las distintas páginas web que visito por haber activado Pi-hole, ni por haberlo hecho a través de WIFI.

Y en caso de que tengas problemas con Pi-hole, siempre puedes reconfigurarla o reparar la instalación con el comando pihole -r:

puedes reconfigurarla o reparar la instalación con el comando pihole -r

5.-Hay que mantener actualizada tu instalación de Pi-hole

Mucho ojo con esto. Ya has instalado Pi-Hole pero de vez en cuando vas a tener que actualizar el programa para mantener tu seguridad y para conseguir las últimas funcionalidades. Suelen actualizar el programa cada 1 o 2 meses.

¿Cómo podemos actualizar Pi-Hole? Muy sencillo. Solo tenemos que acceder vía SSH a nuestro servidor o Raspberry Pi y en la linea de comando poner lo siguiente:

pihole -up

Te pedirá tu contraseña de administrador y se procederá a actualizar el programa y todos sus componentes.

En Github puedes consultar el changelog o registro de cambios de las distintas versiones de Pi-hole. El cambio más importante de los últimos tiempos ha sido el paso a la rama 5.0 donde han añadido soporte total a IPv6, soporte para crear una lista blanca creada por regex, o el paso de la gestión de dominios a una base SQL.

Tienes interesantes lecturas en:

EXTRA: configurar DNS-Over-HTTPS en Pi-hole con cloudflared

Un paso extra muy interesante si quieres que tu instalación de Pi-hole sea más segura.

DNS-Over-HTTPS es un protocolo para realizar peticiones DNS a través del mismo protocolo que utilizas para navegar por la web de forma segura: HTTPS.

Con el DNS estándar, las peticiones se envían en texto plano, por lo que tu ISP o cualquiera con recursos puede ver todas las solicitudes DNS que haces (y sitios web estás visitando), y puede manipular la respuesta y redirigir tu dispositivo a algún lugar bajo su control.

DNS-Over-HTTPS previene esto usando peticiones HTTPS estándar para recuperar la información DNS.

¿Cómo configuramos DNS-Over-HTTPS en Pi-hole? Con cloudflared, tal y como nos indican en la documentación oficial de Pi-hole: Configuring DNS-Over-HTTPS on Pi-hole.

1.-Instalamos Cloudflared en la Raspberry-pi en el directorio /usr/local/bin/

Primero descargamos el paquete (64-bit Raspberry Pi) en el directorio que prefieras, lo descomprimimos y lo copiamos en /usr/local/bin/. Luego cambiamos sus permisos y comprobamos que está en el sistema.

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64
sudo mv -f ./cloudflared-linux-arm64 /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v

2.-Configuramos Cloudflared para que se inicie cuando encendemos la Raspberry Pi

Creamos un nuevo usuario para el daemon:

sudo useradd -s /usr/sbin/nologin -r -M cloudflared

Creamos el archivo de configuración en /etc/default/cloudflared:

sudo nano /etc/default/cloudflared

y añadimos lo siguiente al archivo:

# Commandline args for cloudflared CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query

Le damos los permisos correspondientes para funcionar en el sistema:

sudo chown cloudflared:cloudflared /etc/default/cloudflared 
sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared

Creamos un script systemd para se inicie solo y controle su puesta en marcha:

sudo nano /etc/systemd/system/cloudflared.service

y ponemos lo siguiente dentro del archivo:

[Unit] 
Description=cloudflared DNS over HTTPS proxy 
After=syslog.target network-online.target 

[Service] 
Type=simple 
User=cloudflared 
EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS 
Restart=on-failure 
RestartSec=10 
KillMode=process 

[Install] 
WantedBy=multi-user.target

Lo ponemos en marcha:

sudo systemctl enable cloudflared 
sudo systemctl start cloudflared 
sudo systemctl status cloudflared

Comprobamos que funciona correctamente con el comando (debemos obtener respuesta del servidor de Google desde el servidor 127.0.0.1#5053):

dig @127.0.0.1 -p 5053 google.com

3.-Configuramos Pi-hole para usar cloudflared

Tenemos que quitar la selección de Cloudflare de Upstream DNS Servers que hemos colocado en los pasos anteriores, y completar Custom 1 (IPv4) con 127.0.0.1#5053:

Luego le das a guardar los datos y ya lo tienes listo. Si quieres comprobar si funciona correctamente, solo tienes que visitar: https://1.1.1.1/help:

pi-hole cloudflared check

EXTRA: como actualizar Pi-hole a una nueva versión y como asegurar tu Raspberry Pi

Comandos Pi-hole

En la imagen podéis ver más comandos para controlar Pi-hole desde la consola.

EXTRA: ¿Has instalado un Firewall en la Raspberry Pi?

¿Has instalado un Firewall en la Raspberry Pi?

En este caso tienes que abrir unos cuantos puertos para que Pi-hole funcione. Yo instale ufw y tuve que añadir las siguientes reglas en la terminal o directamente en la GUI del Firewall (hay que instalar Gufw):

ufw allow 80/tcp
ufw allow 53/tcp
ufw allow 53/udp
ufw allow 67/tcp
ufw allow 67/udp
ufw allow 546:547/udp

Para otros firewalls puedes consultar la siguiente web: https://docs.pi-hole.net/main/prerequesites/#supported-operating-systems

EXTRA: ¿Quieres actualizar automáticamente Raspbian en tu Raspberry Pi?

Parece interesante que el SO se actualice solo con las actualizaciones de seguridad. Para ello, vete a la terminal y pon lo siguiente:

apt-get install unattended-upgrades

Y configuramos unas cuantas cosas en /etc/apt/apt.conf.d/50unattended-upgrades:

1.-Añades las siguientes lineas (fuente: stackexchange) en el archivo editándolo mediante vi o nano:

"origin=Raspbian,codename=${distro_codename},label=Raspbian";
"origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";

2.-Hacemos que después de instalarse la Raspberry Pi se reinicie (ponemos lo siguiente en el terminal directamente. Fuente: blog.dantup.com):

sudo sed -i 's/^\/\/Unattended-Upgrade::Automatic-Reboot "false";/Unattended-Upgrade::Automatic-Reboot "true";/g' /etc/apt/apt.conf.d/50unattended-upgrades
sudo sed -i 's/^\/\/Unattended-Upgrade::Automatic-Reboot-Time "02:00";/Unattended-Upgrade::Automatic-Reboot-Time "02:00";/g' /etc/apt/apt.conf.d/50unattended-upgrades

O directamente cambiamos los valores de estas lineas de false a true editando el archivo con vi o nano.

3.-Comprobamos que existe /etc/apt/apt.conf.d/20auto-upgrades y que contiene:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

EXTRA: ¿Se va a estropear mi tarjeta SD por escribir constantemente en ella los logs de Pi-hole?

Yo creo que no. La tarjeta que he instalado es de una buena marca, Sandisk, de 32GB, y por lo que he podido leer en Reddit y demás sitios, lo que más afecta a una tarjeta SD en una Raspberry Pi es enchufarla con una fuente de alimentación poco adecuada o los cortes de luz (conéctala a una UPS).

Además, al tener un espacio de almacenamiento tan grande para el uso que le doy, el SO tiene mucho espacio para escribir en distintos bloques, lo que va a impedir que la tarjeta sufra mucho.

Si te preocupa el tema, siempre puedes pasar la carga a la memoria RAM con log2ram o desactivar los logs de las query.

O puedes dejarlo todo como esta y hacer una copia de seguridad de la tarjeta SD de tu Raspberry Pi: www.howtogeek.com. Por sí pasa lo peor.


Descubre más desde algoentremanos.com

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Foto del autor

Ivan Benito

Apasionado de la lectura y los viajes, experto en tecnología e informática y fan de la privacidad online. Desde el año 2007 me he dedicado al SEO, a escribir y a crear páginas web con WordPress sobre todo tipo de temáticas. Si tienes alguna duda y necesitas ayuda... ¡Pregúntame!

Si tienes preguntas, quieres que hagamos una review de una app, programa o producto, simplemente mándanos un e-mail mediante nuestro formulario de contacto. Te contestaremos en el menor tiempo posible. ¡Muchas gracias y salU2! Algoentremanos realiza reviews de manera profesional y en muchas ocasiones recibimos compensación de las compañías cuyos productos revisamos. Probamos cada producto a fondo y otorgamos altas calificaciones solo a los mejores. La propiedad de Algoentremanos.com es independiente y las opiniones expresadas aquí son solo nuestras. Algunos enlaces del artículo son afiliados: pueden generar un beneficio a algoentremanos.com. Saber más.

7 comentarios en «Cómo configurar Pi-hole en tu Raspberry Pi para bloquear todos los anuncios de internet»

  1. Buenas tardes.

    Lo primero, gran trabajo con el tutorial!

    Lo tenía hecho, pero a medias, me faltó toda la parte de Cloudflared.

    Estoy teniendo un problemilla, a ver si sabes la solución.

    Cuando estoy configurando el archivo /etc/systemd/system/cloudflared.service, me falta una instrucción, porque al lanzar el systemctl start me dice;

    Failed to start cloudflared.service: Unit cloudflared.service has a bad unit file setting.
    See system logs and ‘systemctl status cloudflared.service’ for details.

    Y al lanzar el systemctl status:
    ● cloudflared.service – cloudflared DNS over HTTPS proxy
    Loaded: bad-setting (Reason: Unit cloudflared.service has a bad unit file setting.)
    Active: inactive (dead)

    dic 15 19:01:39 systemd[1]: cloudflared.service: Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing.

    A ver si me puedes echar un cable 🙂

    Muchas gracias!

    Responder
      • Yo tengo el mismo problema
        ¿como debería quedar?
        He probado como pongo aquí abajo y sigue dando el mismo problema.

        [Unit]
        Description=cloudflared DNS over HTTPS proxy
        After=syslog.target network-online.target

        [Service]
        Type=simple
        User=cloudflared
        EnvironmentFile=/etc/default/cloudflared
        ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
        Restart=on-failure
        RestartSec=10
        KillMode=process

        [Install]
        WantedBy=multi-user.target

        Responder
  2. Vaya tutorial más cojonudo, para un manco, sin tener ni papa, perfecto y a la primera todo. Bueno, por no mentir, no baje NOOBS, sino Raspberry OS del tirón y aunque lo baje en 64 bits, me recomendaba el programa 32 y no funcionaba, así que lo bajé dos veces, jajaaj.

    Por lo demás pensaba que haría corto con mi 3B (LAN 10/100), pero hice prueba de velocidad y no limita, pues supongo que una vez resuelto todo con la DNS, la velocidad es la que es, solo que quizás ganes algo en esa «resolución» con una 4-4B por el LAN gigabit, pero vamos…uso que le he dado estupendo a mi 3B muerta de asco que nunca encontraba un uso realmente útil.

    Ahora mi LAN para mi es una bomba, porque va rápida, sin fallos con la domótica y reservo información privada que no va a servidores de dudosa finalidad. Y se nota que la navegación en general es más ágil.

    MUCHAS GRACIAS !!!

    Responder
    • Hola. Tienes razón. He actualizado las instrucciones:

      wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64
      sudo mv -f ./cloudflared-linux-arm64 /usr/local/bin/cloudflared
      sudo chmod +x /usr/local/bin/cloudflared
      cloudflared -v

      Para 64-bit Raspberry Pi. Espero que te funcione. Tienes más opciones en: https://docs.pi-hole.net/guides/dns/cloudflared/

      Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.