En nuestro anterior tutorial hemos visto cómo instalar un sistema operativo ultraligero en una Raspbery Pi. En éste vamos a aprender cómo instalar pi-hole en esa misma raspberry para eliminar la publicidad de absolutamente todos los dispositivos que se conecten a nuestra red wifi (tablets, smart tv, teléfonos, ordenadores…) sin tener que instalar nada en ninguno de ellos. Además, como el consumo eléctrico de una raspberry es ínfimo, podemos tener la Raspberry encendida todo el día realizando esta tarea sin preocuparnos por la factura de la electricidad.
Nota importante: he creado otro tutorial con un método alternativo y más moderno de hacer todo lo que se dice en este artículo en este enlace.
Y sí… seguro que alguno está pensando «Pero eso se puede hacer instalando tal aplicación en mi móvil o este plugin en el navegador». Eso está muy bien, pero esa forma de proceder tiene tres problemas básicos que Pi-hole resuelve:
- Un plugin para el navegador quita la publicidad en ese navegador, pero no en otros navegadores o programas que tengas instalados en el equipo.
- Puedes instalar un software en el equipo que se ocupe de quitar la publicidad en cualquier programa, pero eso serviría para ese equipo (ordenador, móvil), pero no para el resto de dispositivos de tu casa.
- La gran mayoría de software que se dedica a estos temas NO son software libre. Muchos son gratis, pero no libres, lo que implica que no podemos estar seguros de qué es lo que hacen por detrás (¿enviar nuestro historial de navegación a alguna empresa? ¿espiarnos? ¿instalarnos una puerta trasera?…). Pi-hole sin embargo es completamente libre (podemos mironear su código para ver lo que hace), lo que es una garantía de seguridad.
Resumiendo: Es mucho más inteligente abordar la eliminación de la publicidad vía pi-hole que por medio de otras aplicaciones, aunque sean más sencillas de instalar (tanto por seguridad como por efectividad). Así que vamos al grano.
1) Requisitos
Vamos a suponer que habéis hecho todo lo que hemos aprendido en el tutorial anterior, es decir, tenéis una Raspberry Pi funcionando con Raspbian (sea la versión que sea, aunque os recomiendo Raspbian lite para que vaya más rápido) y tiene una IP fija asignada. También podéis aplicar este tutorial si tenéis un ordenador con Debian instalado o alguna distribución de linux basada en Debian (Ubuntu, Linux Mint…), aunque el consumo eléctrico de un ordenador de escritorio es muy superior al de una Raspberry, por lo que usar una Raspberry para esta tarea es lo ideal.
2) Instalación de Pi-hole
Para instalarlo, primero debemos acceder al terminal de nuestra raspberry. Si habéis seguido el tutorial de instalación, accederemos a ella mediante SSH, bien mediante Putty si usamos Windows o bien por el terminal de nuestro ordenador si usamos Linux o Mac Os. En mi caso accederé por terminal desde Mac OS, escribiendo el siguiente comando:
ssh pi@10.0.1.222
Nos logamos con nuestra contraseña para poder «hablar» con nuestra raspberry y escribiremos el comando de instalación de Pi-hole, de esta forma:
curl -sSL https://install.pi-hole.net | bash
Simplemente debemos esperar sin tocar nada hasta que nos salga esta pantalla en la que debemos pulsar en «Aceptar». El ratón no funcionará (recordad que estamos en modo texto), por lo que debemos pulsar «enter».
Debemos aceptar también la siguiente pantalla, que es ésta.
Y por último ésta también la aceptamos.
Ahora nos preguntará por qué interface se está conectando la raspberry. Los que la tengáis conectada por cable, debéis escoger eth0 y los que la tengáis por wifi debéis escoger wlan0. Se escoge subiendo y bajando el cursor con las teclas de dirección y seleccionando con la barra espaciadora. Pulsamos «Aceptar».
Ahora nos preguntará qué servidor de DNS va a usar. Esto es ya cuestión de gustos, pero os puedo decir que en lo personal estoy harto de la política de google y me niego a escoger ese servidor, así que voy a seleccionar Cloudflare y a pulsar en «aceptar».
La siguiente pantalla nos pregunta qué listas de bloqueos debe usar. En principio vamos a dejar todo tal y cómo está y pulsamos en «aceptar».
Siguiente pantalla. Nos pregunta por protocolos. Salvo sorpresas, hoy en día deberíais estar usando aún IPv4 (¡¡¡¿Pero cuándo van a implementar las operadoras de forma completa IPv6, por Jobs?!!!).
En la siguiente pantalla nos pregunta si la dirección es estática. Como es así, simplemente pulsamos «sí».
Ahora nos sale una adventencia acerca de que nuestro router puede usar la ip de la raspberry. Vale… reservar un rango de ip’s en el router mola (y yo lo tengo hecho) pero explicar esto es liar las cosas en un tutorial como éste y además en cada router se hace de forma distinta. Tal y cómo lo hemos hecho debería funcionar para el común de los mortales, así que tiramos pa’lante.
¿Queremos instalar el interfaz de administración? Por supuesto. ¿Cómo me haces esa pregunta?
¿Queremos instalar el servidor web? Pues como nuestra raspberry está recién instalada claro que sí, guapi.
¿Queremos archivos de registro para ver incidencias y reportes? Venga, ¿por qué no?
¿Modo de privacidad? Esto es por si nos interesa saber por dónde están navegando otros dispositivos y ver qué páginas se bloquean. La verdad es que es interesante, así que vamos a decirle que muestre todo.
Y ahora sí que sí. Empieza la instalación y tras unos minutos vemos algo parecido a esto.
Apuntamos esos datos (por favor, apuntadlos, que los necesitaremos luego) y pulsamos aceptar. Vemos que volvemos a ver nuestro terminal de color negro esperando a que tecleemos algo, pero vamos a hacerlo sufrir y lo dejaremos minimizado (lo usaremos más tarde para cambiar la contraseña de acceso a la gestión de pi-hole). En todo caso el proceso de instalación ha acabado y casi podríamos acabar aquí el tutorial, pero como somos muy perfeccionistas vamos a explicar algunos puntos a mayores.
(Sí… muchas fotos en el tutorial y se ha hecho muy largo de leer, pero al que me diga que ha sido complicado le doy una colleja).
3) Configurar el router.
La tentación de ir a la interfaz de configuración que nos dice ese último mensaje de la instalación es muy grande , pero vamos a configurar primero nuestro router. Sólo debemos entrar en su configuración (cada router es distinto, así que debéis averiguarlo según el modelo) y cambiar el servidor de DNS por la dirección IP de nuestra raspberry. Si no sabéis cómo hacerlo o vuestro router no es configurable, se puede hacer una «ñapa» que os explicaré más adelante.
Por el momento os voy a enseñar como lo he hecho yo en mi router, que es un «Time Capsule» de apple. Simplemente me voy al interfaz del router y en la pestaña «internet» cambio el servidor de DNS principal por la IP fija que le he asignado a la raspberry.
Sólo con este cambio, si conecto un dispositivo a la red wifi de mi casa, ya estará disfrutando de un filtrado de publicidad. Así de sencillo.
Pero puede ser que no podamos o no sepamos acceder a esa configuración. Entonces lo que debemos hacer es entrar en la configuración de red de todos los dispositivos de nuestra casa y cambiar manualmente el servidor de DNS de todos ellos. Debemos poner la dirección ip de nuestra raspberry. Por ejemplo, en un equipo con Windows iríamos a «panel de control» –> «redes e internet» –> «conexiones de red». Ahí pulsaríamos con el botón derecho en la tarjeta de red con la que nos conectemos, seleccionaríamos el protocolo de internet IPv4 y le daríamos a propiedades y en la nueva ventana marcaríamos la opción «Usar las siguientes direcciones de servidor DNS» y pondríamos como servidor de DNS preferido la ip de la raspberry.
Lo mismo deberíamos hacer para cada dispositivo (tablets, teléfonos, ordenadores, televisores…), pero sólo si no somos capaces de cambiar esa configuración en el router. Si hemos configurado el router con ese parámetro, entonces podemos ignorar todo esto que os estoy diciendo.
4) Probar el bloqueo de publicidad.
Aquí viene un punto sencillo. Simplemente hay que entrar en cualquier diario online español (están casi todos llenos de publicidad intrusiva) o alguna página de descarga de software para comprobar si pi-hole está ya bloqueando publicidad. Esta página puede también indicaros si os funciona el bloqueo:
https://blockads.fivefilters.org/?pihole
Puede que aún se nos escape algún anuncio pero eso lo vamos a corregir en un momento.
5) Cambiar la contraseña de pi-hole.
Es una política de seguridad obligada el cambiar las contraseñas que cualquier aparato nos pone por defecto, así que vamos a cambiar la contraseña del interface de pi-hole ahora mismo.
Entramos en el terminal (o putty) que habíamos minimizado al final de la instalación y tecleamos lo siguiente:
pihole -a -p
Nos saldrá un mensaje pidiéndonos la nueva contraseña. Ponemos una contraseña segura, pulsamos «enter», la volvemos a escribir y volvemos a pulsar «enter».
Y listo: a partir de ahora esa que hemos puesto será nuestra contraseña para acceder al interfaz de pi-hole.
6) Ajustes dentro del interfaz de pi-hole
Ahora sí que sí. Abrimos un navegador y vamos a entrar en la dirección que nos ha puesto el último mensaje de la instalación. En nuestro ejemplo es la siguiente:
http://10.0.1.22/admin
En la parte izquierda veremos esta columna. Pulsamos en «login».
Ahora ponemos la contraseña que hemos definido en el paso 5 y podremos ver el interfaz completo de pi-hole, que luce tal que así.
Entramos en el apartado «Blacklist». Ahí podemos ver páginas individuales que podemos bloquear. Podemos bloquear por ejemplo una URL (una página web en concreto), un subdominio o un dominio completo. Os voy a pasar la configuración que uso yo en mi casa en este apartado (que os recomiendo). Son todas entradas Regex. Simplemente id introduciendo una por una:
(^|.)affiliates.host1plus.com$ (^|.)cloudfront.net$ (^|.)codere.es$ (^|.)jwpcdn.com$ (^|.)oferplan.abc.es$ (^|.)outbrain.com$ (^|.)platform.sunmedia.tv$ (^|.)promo.blackview.hk$ (^|.)promo.blackview.hk$ (^|.)resizer-oferplan$ (^|.)resizer-oferplan.abc.es$ (^|.)resizer-oferplan.lavozdegalicia.es$ (^|.)smartadserver.com$ (^|.)sunmedia.tv$ (^|.)vuelosbaratos.com$ (^|.)vuelosbaratos.es$
Ahora vamos a la parte más importante de este servicio. Nos vamos a «settings» y pulsamos en la pestaña «Blocklists». Aquí van las listas de las cosas que queremos bloquear. Además de bloquear publicidad, hay gente que hace listas para bloquear porno (muy útiles si tenemos niños en casa), bloquear páginas con contenido peligroso para el ordenador, bloquear páginas de apuestas (gambling), etc… Os dejo aquí las listas que uso yo (que también os las recomiendo).
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://mirror1.malwaredomains.com/files/justdomains
http://sysctl.org/cameleon/hosts
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
https://hosts-file.net/ad_servers.txt
https://hosts-file.net/psh.txt
https://v.firebog.net/hosts/Airelle-hrsk.txt
https://v.firebog.net/hosts/Shalla-mal.txt
https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt
https://ransomwaretracker.abuse.ch/downloads/LY_C2_DOMBL.txt
https://ransomwaretracker.abuse.ch/downloads/CW_C2_DOMBL.txthttps://ransomwaretracker.abuse.ch/downloads/TC_C2_DOMBL.txt
https://ransomwaretracker.abuse.ch/downloads/TL_C2_DOMBL.txt
http://www.networksec.org/grabbho/block.txt
https://isc.sans.edu/feeds/suspiciousdomains_Medium.txt
https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/win10/spy.txt
https://v.firebog.net/hosts/static/SamsungSmart.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://v.firebog.net/hosts/Easyprivacy.txt
https://hosts-file.net/ad_servers.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
https://gist.githubusercontent.com/anudeepND/adac7982307fec6ee23605e281a57f1a/raw/5b8582b906a9497624c3f3187a49ebc23a9cf2fb/Test.txt
https://v.firebog.net/hosts/Easylist.txt
https://v.firebog.net/hosts/AdguardDNS.txt
https://pastebin.com/raw/9M5ALu8n
https://raw.githubusercontent.com/mmotti/pihole-regex/master/regex.list
https://raw.githubusercontent.com/Marfjeh/coinhive-block/master/domains
Y con esto creo que podemos dejarlo listo. Hay dentro de «settings» –> «DHCP» algunas opciones interesantes en caso de que no podamos poner las DNS correctas en nuestro router, de forma que podríamos hacer que fuera el Pi-hole el que asignara direcciones ip en nuestra red, pero esto creo que ya excede el objetivo de este tutorial. Llegados a este punto ya tenéis activado el filtrado de webs en toda vuestra red doméstica. Y por cierto… la raspberry haciendo este filtrado está bastante ociosa, así que puede hacer otras tareas además de quitarnos la publicidad.
En el próximo tutorial veremos cómo extender este filtrado a los dispositivos móviles cuando estén fuera de casa instalando un servidor de VPN en nuestra Raspberry. Además también nos servirá para acceder a nuestros dispositivos mientras estemos fuera de casa (por ejemplo para acceder al disco duro del ordenador de sobremesa).
Como siempre, si tenéis dudas, sugerencias o queréis indicarme alguna errata indicadlo en los comentarios.
No se me instala, al final me aparece que FTL Engine not installed
intenta esto
cd /etc
sudo nano resolv.conf
cambia 127.0.0.1 por 8.8.8.8 y guarda cambios (control+o y luego control+x). Luego haz un «pinole -r» y mira a ver si te deja continuar.
A mi me ha fincionado perfecto!. Muchas gracias.
Hay algun tutorial para hacerlo desde windows?
Muy buen tutorial me ha servido para instarlo y esta funcionando. Solo cuando quiero agregar alguna lista ( Blocklist) o poner alguna en blacklist me aparece el siguiente mensaje.
Error, something went wrong!
While executing: attempt to write a readonly database
Added 0 out of 1 domains
Me falta algo para que me deje escribir en la base de datos?
Gracias
Después de un rato de buscarle reinstale el programa y me jalo todo a la primera.
pihole -r
para reinstalar
Gracias
Buen día,
Requiero de su colaboracion para solucionar mi inconveniente.
He instalado open vpn y pihole y me funcionaba muy bien hasta que me fue necesario cambiar el puerto de pihole debido a la instalacion de nextcloud.
cambie el puerto en el archivo /etc/lighttpd/lighttpd.conf por el 8080 pero ahora no se como cambiar la vpn para que cuando me conecte desde la red movil me tome el pihole para bloquear los anuncios.
Gracias de antemano y quedo atento.
Muchas gracias por las instrucciones, me funcionaron a la perfección
¡Toda esta colección de tutoriales para Raspberry es la cañísima, Marcos! Acabo de comprarme una y estoy disfrutando como un enano. Muchísimas gracias por compartirlos y hacerlos tan accesibles.
Quería comentarte que quizá a la primera RegEx le falte un paréntesis: En vez de «^|.)affiliates.host1plus.com$», ¿no debería ser «(^|.)affiliates.host1plus.com$»?
Si no le pongo el paréntesis me bloquea absolutamente todo.
Con tu web he podido cubrir todas las «inquietudes» que tenía (inicialmente) en materia de proyectos para Raspberry, así que, de nuevo, muchas gracias por los tutoriales.
¡Un saludo!
Efectivamente, se me había colado un paréntesis en esa línea. Gracias por la indicación. Ya está corregido.
Ya que te veo interesado, decirte que tengo pendiente un par de tutoriales más sobre estos temas, que me han ido surgiendo.
Por un lado es interesante complementar el Pi-hole con «DNS over HTTPS», que es básicamente proteger las peticiones DNS para que la comunicación entre tu pi-hole y el servidor de DNS de cloudflare esté completamente cifrada. Eso hace que si por ejemplo el gobierno o tu operadora «capa» una página para que no puedas entrar en ella, al ir el tráfico cifrado no van a poder saber qué petición estás haciendo y puedas acceder igualmente a la página (Siempre que el contenido de la misma esté también sobre https y que el «capado» no sea impidiendo el acceso a la ip del servidor de la página, que no suele ser así porque lo normal es que en un hosting vayan más páginas sobre la misma IP).
Por otro lado tengo una pequeña vuelta de tuerca aplicada al servidor de emule, de forma, que si te bajas un archivo, puedes configurarlo para que la raspberry te mande un mensaje de telegram en cuanto el archivo se haya bajado. Es muy útil cuando dejas cosas que tardan bastante en bajar.
Como últimamente ando muy muy liado no voy a poner fechas, pero suelo acabar escribiendo un artículo cada dos-tres semanas, así que si tienes la suficiente paciencia por aquí estarán los dos dentro de poco.
¡Hola, y gracias a ti por tomarte el tiempo de contestar y corregir esa pequeñez!
Ambos tutoriales me parecen muy interesantes, así que estaré atento 🙂
Todavía tengo que «jugar» un poco más con mi Raspberry y montarle el servidor de Plex, pero justamente la notificación por Telegram cuando se finaliza una descarga es algo que me comentó un amigo, que también lo tiene hecho, y pensé que me gustaría poder hacer algo así yo también. Me vendrá de perlas leer tu artículo.
Un saludo y hasta pronto.
Muchas gracias. Más claro imposible
Hola Marcos.
He instalado un servidor siguiendo tus instrucciones y hasta donde puedo ver, funciona.
Buscando información sobre cómo configurar pi-hole, he encontrado esto:
https://thesmashy.medium.com/building-a-pihole-for-privacy-and-performance-f762dbcb66e5
Entiendo lo que dice, pero me cuesta comprender en qué medida completa o complementa tus instrucciones o qué puedo aplicar de las instrucciones que da, que no me lo cargue.
Gracias por la ayuda
todo bien indicado. eres un crack. Gracias a este tutorial parece todo mas facil.
Un saludo
Enhorabuena, son unos tutoriales fantásticos: útiles, bien explicaditos (pasito a pasito para los que somos un poco torpones) y divertidos de leer. Y aunque algunas pantallas han cambiado, por los cambios de versiones, se pueden seguir fácilmente.
El único problema que he tenido es que el Fortnite ha dejado de funcionar en la PS4. Lo cual ha sido una gran tragedia para mi hijo. En fin, de momento le he cambiado manualmente el DNS Play y ya está mantando a sus amigos otra vez.
Lo dicho, enhorabuena… y voy a por el resto.
Hola Marcos,
Acabo de caer en tu web y me he montado un Pi-hole en una raspberry que tenia por casa donde antes tenia una pequeña web montada.
He formateado la tarjeta y he montado Pi-hole de cero siguiendo tus pasos y todo ha salido perfecto.
Pero me gustaría poder alojar de nuevo el sitio web en php que tenia montado y por mucho que busco por internet no consigo saber como alojar los dos juntos, si es que se puede.
Gracias de antemano.
No me funciona, investigando en mi router (O2 – Movistar) creo que es porque trabaja con IPv6 y este tutorial solo incluye IPv4.
Entro en distintas webs, tanto con el móvil como con el PC, y me aparecen anuncios. Entro en la web del tutorial (https://blockads.fivefilters.org/?pihole) y pone «No ad blocking detected».
Los pasos los he hecho tal y como pone en el tutorial, habiendo probado tanto con la versión de SO de 64 como la de 32, y no hay manera. Lo único que no he probado es a poner «sudo» delante del comando «curl -sSL https://install.pi-hole.net | bash», pero no creo que sea los permisos porque la instalación la realiza.
Nos tocará esperar a los nuevos tutoriales cuando Marcos tenga tiempo.
Gracias por todo!! Un gran trabajo!! Un abrazo a todos.