Self-hosting: Adiós anuncios

Share on facebook
Share on twitter
Share on linkedin

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:

Contenedores en ejecución

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:

Panel de configuración del modem

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.

Configuración del servidor DHCP

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:

Información de los dispositivos de red

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:

Servidor DNS primario

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:

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:

Dirección MAC 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:

Dirección IP fija para nuestro equipo

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:

Panel de configuración de Pi-hole

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.

Share on facebook
Share on twitter
Share on linkedin

No hay comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¡Conozcámonos mejor!

Te haremos llegar las novedades de SoldAI, ofertas exclusivas, notificaciones, y mucho más.

¡Deja tu correo, tenemos mucho que contarte!