Anteriores:
Self-hosting: Yo me encargo de mis datos
En esta entrada de nuestra serie de tutoriales sobre self-hosting, vamos a instalar Pi-hole, el cual es un servidor DNS que tiene como función principal, bloquear publicidad y sitios maliciosos en toda nuestra red. Para realizar esta tarea, utilizaremos Docker, una tecnología que nos permite la creación y uso de contenedores que son máquinas virtuales, extremadamente livianas.
1.- Instalar Docker en nuestro sistema
Iniciamos actualizando la lista de paquetes:
sudo apt update
Después instalamos curl para poder descargar el script de instalación de Docker:
sudo apt install -y curl
Luego, instalamos Docker:
curl -sSL https://get.docker.com | sh
2.- Añadir permiso para ejecutar el comando docker sin sudo (opcional)
Si no queremos agregar sudo cada vez que tengamos que ejecutar el comando ‘docker’, podemos ejecutar la siguiente instrucción:
sudo usermod -aG docker ${USER}
Sólo será necesario reiniciar la sesión para poder hacer uso de nuestros nuevos permisos. En caso de no realizar este paso, hay que tener en cuenta agregar ‘sudo’ siempre que vayamos a ejecutar ‘docker’.
3.- Crear un script para iniciar el contenedor Pihole
El siguiente paso en el proceso, es utilizar Docker para iniciar un contenedor a partir de la imagen oficial de Pi-hole, pues éste trabajará como servidor DNS, pero bloqueando las peticiones a las direcciones que agreguemos en su lista negra, la cual estará conformada por proveedores de anuncios.
Primero, crearemos un archivo ejecutable que contendrá la instrucción para iniciar el contenedor:
touch pihole.sh
Después, daremos permisos de ejecución al archivo creado:
chmod +x pihole.sh
A continuación, utilizando nuestro editor de texto preferido, agregaremos el siguiente texto al archivo que acabamos de crear:
#!/bin/bash
docker run -d \
--name service-pihole \
--restart always \
--publish 53:53/tcp --publish 53:53/udp \
--publish 8001:80 --publish 8002:443 \
--env TZ="America/Merida" \
--volume $(pwd)/etc/pihole:/etc/pihole \
--volume $(pwd)/etc/dnsmasq.d:/etc/dnsmasq.d \
--dns=127.0.0.1 --dns=1.1.1.1 \
pihole/pihole:latest
Las descripciones de las opciones agregadas al comando son las siguientes:
- –name pihole: Nuestro contenedor tendrá el nombre ‘pihole’, podemos modificar esto a nuestro parecer.
- –restart always: El contenedor se reiniciará siempre que se pueda.
- –publish 53:53/tcp –publish 53/53/udp: Estamos realizando un mapeo de puertos, en este caso son los utilizados para el servidor DNS.
- –publish 8001:80 –publish 8002:443: Otro mapeo de puertos, esta vez para poder acceder a el panel web de Pi-hole.
- –env TZ=”America/Merida”: Indicamos por medio de una variable de entorno la zona horaria.
- –volume $(pwd)/etc/pihole:/etc/pihole: Enlazamos un volumen de nuestro equipo al contenedor, con la finalidad de mantener nuestras configuraciones aunque borremos el contenedor.
- –volume $(pwd)/etc/dnsmasq.d:/etc/dnsmasq.d: Lo mismo que el punto anterior.
- –dns=127.0.0.1 –dns=1.1.1.1: Indicamos los servidores dns que utilizará el contenedor para hacer la resolución de nombres que no estén en la lista negra.
Para finalizar esta parte, creamos un par de carpetas, donde se almacenará la información de Pi-hole en nuestro equipo:
mkdir -p etc/{pihole,dnsmasq.d}
Y utilizamos el archivo ejecutable para iniciar Pi-hole:
./pihole.sh
Comprobamos que nuestro contenedor esté en linea, utilizando el siguiente comando:
docker ps
Y debemos ver algo parecido a lo siguiente:

Como se puede observar, ‘service-pihole’ aparece entre los contenedores. En caso de quien siga este tutorial desde 0, sólo deberá aparecer un único contenedor.
Ahora ya tenemos en ejecución nuestro Pi-hole, el cual tiene mapeado algunos puertos con nuestro equipo, es decir, todas las peticiones que lleguen al puerto 53 de nuestra máquina, serán respondidas por el contenedor de Pi-hole.
4.- Configuramos nuestro modem
La siguiente tarea es configurar nuestro modem, para que su servidor dhcp entregue la dirección IP de nuestra máquina como el servidor DNS, y de esta manera todos los dispositivos de nuestra red, estarán protegidos por la lista negra de Pi-hole.
En mi caso el proveedor de internet es Telmex, pero los pasos que voy a describir se pueden seguir para otros proveedores y otros modelos de modems/routers.
Primero accedemos a la dirección de nuestro modem, en mi caso es 192.168.1.254 (dependiendo de nuestro modem/router esto puede variar), a continuación podremos visualizar el panel web de configuración:

Continuamos colocando la contraseña, en este caso es la clave del wifi, pero para otros puede ser admin/admin, admin/password, etc.
Una vez en el panel de configuración, accedemos al apartado LAN -> Configuración del servidor DHCP, aquí configuraremos que el servidor DHCP del modem entregue la dirección de nuestro equipo como servidor DNS.

En el apartado ‘Servidor DNS primario’ ingresamos la dirección IP de nuestro equipo, en caso de no conocerla podemos utilizar el siguiente comando para encontrarla:
ip addr show
Lo que nos dará como resultado algo como esto:

Nuestra dirección IP será la que más parecida a la dirección de nuestro modem/router, en este caso la que inicie con 192.168.1… Ya que esa es la red en la que nos encontramos.
Cocamos la dirección de nuestro equipo en el apartado y le damos a aplicar:

Un punto que debemos tomar en cuenta, es que la dirección de nuestro equipo tiene que ser fija, en caso de que desconozcamos si lo es, lo más probable es que no, pero se puede arreglar.
En el panel de nuestro modem/router nos dirigimos al apartado LAN -> Configuración IP estática DHCP:

Aquí le indicaremos al servidor DHCP de nuestro modem/router, que siempre le entregue la misma dirección a nuestro equipo, para lograr esto necesitaremos la dirección MAC de nuestro equipo (identificador único que nunca cambia), lo bueno es que se encuentra en el mismo lugar en el que obtuvimos la dirección IP de nuestro equipo:

Podemos encontrar la dirección MAC justo encima de la dirección IP, es la que se encuentra en la línea ‘link/ether’ y contiene una serie de números y letras separados por el caracter ‘:’ (no confundir con ff:ff:ff:ff:ff:ff), en este caso es 74:d4:35:eb:b0:d7.
Finalizamos agregando los datos en el panel de configuración del modem como se muestra en la siguiente imagen:

Le damos a aplicar y ya estamos listos para hacer nuestra primera prueba. Reiniciamos el wifi en nuestro celular para que vuelva a hacer una solicitud al servidor DHCP. Si todo parece seguir funcionando normalmente, ya hemos terminado.
Para acceder al panel web de Pihole, sólo debemos utilizar un explorador web y colocar como dirección, lo siguiente:
http://<dirección IP>:8001/admin
Entonces, podremos observar algo parecido a lo siguiente:

Como último paso vamos a actualizar la contraseña de Pi-hole, para poder acceder a una configuración más detallada desde el panel. Esto lo logramos ejecutando el siguiente comando en el equipo, donde realizamos toda la instalación:
docker exec -it service-pihole pihole -a -p
Una vez ingresada la nueva contraseña ya hemos acabado nuestra tarea de instalar Pi-hole.
Con estos pasos que hemos realizado, ahora tenemos instalando Docker en nuestro equipo, éste nos será de utilidad para los próximos tutoriales. Además tendremos Pi-hole bloqueando anuncios y sitios web maliciosos en toda la red de nuestra casa.
Para comentar debe estar registrado.