Gracias al «poder» de instalar contenedores en el router Turris Omnia podemos crear servicios en el router. Uno de ellos es configurar Pi-Hole un servicio de bloqueo de publicidad. Aunque es una tarea que parece sencilla, hay algunos pasos que ayudarán a no tener «errores» en el camino.
Creación del contenedor LXC
1. Configura tu Turris Omnia y conéctate a su red. Debería poder cargar la interfaz LuCI y acceder a Internet.
2. Dentro de LuCI ir a Services -> LXC Containers. Crear un nuevo contenedor llamado ‘PiHole’ y seleccionar Debian 9 (stretch) o 10 (buster) o Ubuntu 16.x / 18.x / 20.x.
2.B También puedes hacerlo desde la línea de comandos. Te pedirá «Distribution», «Release» y «Architecture» (selecciona según corresponda):
lxc-create -t download -n PiHole Distribution: Debian Release: Buster Architecture: armv7l
3. Editar el contenedor, y añadir como nueva línea (esto nos asegurará que arranca automáticamente):
lxc.start.auto = 1 lxc.start.delay = 10 lxc.start.order = 100
3.A Opcionalmente puedes ejecutar este comando para que lo añada al final del fichero (recuerda haberte conectado por SSH al router):
echo "lxc.start.auto = 1" >> /srv/lxc/PiHole/config echo "lxc.start.delay = 10" >> /srv/lxc/PiHole/config echo "lxc.start.order = 100" >> /srv/lxc/PiHole/config
4. Conectate por SSH a tu router Omnia. Usa la contraseña con la que accedes al router normalmente.
ssh root@192.168.1.1
5. Por estética recomiendo cambiar el nombre del host del contenedor (así no aparecerá el LXC_NAME). Para ello hay que editar los siguientes ficheros. Ejecutarlo dentro del contenedor (en este caso ejecutarlo después del paso 6).
nano /etc/hosts /etc/hostname
También puedes cambiarlo sin entrar al contenedor desde la siguiente ruta (recuerda cambiar PiHole por el nombre del contenedor):
echo "LXC_PiHole" > /srv/lxc/
PiHole
/rootfs/etc/hostname sed -i -- 's/LXC_NAME/LXC_
PiHole
/g' /srv/lxc/
PiHole
/rootfs/etc/hosts
6. Arrancamos el contenedor:
lxc-start -n PiHole
8. Ahora hay que «entrar» en el contenedor LXC con este comando:
lxc-attach -n PiHole
Pasos a seguir dentro del contenedor:
1. Actualizamos paquetes
apt-get update apt-get upgrade
2. Instalamos paquetes necesarios. Recomendamos instalar el editor nano para poder editar desde la consola (opcional):
apt-get -y install nano curl ca-certificates
Pasos recomendados:
1. Configuramos para que se auto instalen las actualizaciones del sistema operativo (opcional pero muy recomendado).
apt-get -y install unattended-upgrades && dpkg-reconfigure unattended-upgrades
2. Crear un alias para el comando pihole:
echo "alias pihole='/usr/local/bin/pihole'" >> ~/.bash_aliases && source ~/.bash_aliases echo "alias pihole='/usr/local/bin/pihole'" >> ~/.bashrc
Instalación de Pi-Hole
1. Instalar Pi-hole con el comando recomendado por ellos:
curl -sSL https://install.pi-hole.net | bash
2. Aunque puedes seguir la instalación recomendada por PiHole, aquí van unas recomendaciones para el router Turris:
- Si tienes problemas con el comando «curl» puedes copiar/pegar el contenido al fichero «install.sh» con el comando curl -sSL https://install.pi-hole.net > install.sh, darle permisos de ejecución $ chmod +x install.sh , y ejecutarlo directamente $ ./install.sh
- Anota la IP que haya asignado PiHole al servidor (que luego usaremos para configurar el dhcp del router).
- Actualiza manualmente el listado de bloqueos con el comando: $ pihole -g (nota: para que esto funcione tendrás que haber creado el alias para el comando pihole)
3. Testear Pi-Hole, para lo cual podemos visitar la siguiente página:
http://pi.hole/
Con esto ya tendríamos el contenedor con Pi-Hole instalado y configurado. Ahora habría que modificar la configuración del router para que las DNS de todos los dispositivos apunte a Pi-Hole.
Configuración del router:
1. Hay que cambiar los DNS que se propagan por DHCP para que apunte a nuestro contenedor de Pi-Hole.
go to Network > Interfaces > LAN, at the bottom at DHCP Server > Advanced Settings:
DHCP-Options: 6,(IP Address of your PiHole)
So if your PiHole were running at 192.168.2.10, then you put 6,192.168.2.10
Bonus: Configurar un led del router para informar cuando se ha bloqueado un anuncio.
- Configure Turris Omnia
- Now it’s time to tell the router to apply the DNS at it’s level rather than the machine level so you don’t have to edit the DNS settings of every device you connect.
- In LuCI under System -> Startup, ‘Disable’ and ‘Stop’ both the ‘resolver’ and ‘kresd’ initscripts. ‘Enable’ the ‘lxc-auto’ script.
- Under Network -> Interfaces, click ‘Edit’ on WAN, then ‘Advanced Settings’. Uncheck ‘
- SSH into your Omnia again and inside /etc/config/dhcp change option port ‘0’ to option port ’53’.
- Edit /etc/config/lxc-auto to match this:
- config container
option name pi-hole
option timeout 60
- config container
- Copy this file https://raw.githubusercontent.com/NickBusey/pihole-led/master/pihole-led.sh to /root/pihole-led.sh
- crontab -e, add a new line: @reboot /root/pihole-led.sh
- Reboot your Turris Omnia.
Bibliografía:
Traducido de: http://www.nickbusey.com/installing-and-configuring-network-wide-adblock-with-pi-hole-and-the-turris-omnia/
Enlace de interés: