AdGuard: Docker

2 minuto(s) de lectura

Docker

AdGuard es un software a nivel de red para bloqueo de anuncios y rastreadores.

Vamos a realizar una pequeña comparativa entre los dos grandes servicios de seguridad DNS:

Novedad AdGuard Pi-Hole
Bloqueo publicidad
Personalizar listas bloqueo
Soporte servidor DHCP
Servidores DNS Encriptados (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) P3DNS
Multi-plataforma Docker
Bloqueo phishing y malware Listas
Bloqueo contenido dominios adultos Listas
Forzar realizar busqueda servidores seguros No soporta perfiles individuales
Configuración dispositivos
Acceso individualizado configuración No soporta perfiles individuales
Frecuencia actualizaciones Listas en constante actualización por la comunidad
Desarrolladores globales Software Libre no Privativo

La comparativa esta bastante equilibrada, solamente voy a recomendar usar AdGuard en dispositivos de bajos recursos como he probado en una Raspberry 1B+ y en entornos donde sea imperativo el uso de perfiles individuales en vez de uno general.

El motivo es que esta desarrollado en Go y requiere de menor uso de recursos del sistema.

NOTA: Para uso en el servidor recomiendo usar P3DNS como solución más completa.

Vamos a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:

mkdir -p $HOME/docker/adguard/{config,datos} && \
cd $HOME/docker/adguard

Ahora vamos a crear el fichero de configuración docker-compose.yml lanzando el siguiente comando:

cat << EOF > $HOME/docker/adguard/docker-compose.yml
version: "2.1"
services:
  adguardhome:
    image: adguard/adguardhome
    container_name: AdGuard
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 67:67/udp
      - 68:68/tcp
      - 68:68/udp
      - 853:853/tcp
      - 3000:3000/tcp
      - 80:80/tcp
    volumes:
      - '~/docker/adguard/datos:/opt/adguardhome/work'
      - '~/docker/adguard/config:/opt/adguardhome/conf'
    restart: always
EOF

Vamos a repasar los principales parámetros a modificar para adaptarlos a nuestro sistema y configuración especifica:

Parámetro Función
53:53/tcp Puerto de gestión DNS TCP
53:53/udp Puerto de gestión DNS UDP
67:67/udp Puerto utilizado para gestión servicios DHCP UDP
68:68/tcp Puerto utilizado para gestión servicios DHCP TCP
68:68/udp Puerto utilizado para gestión servicios DHCP UDP
853:853/tcp Puerto utilizado para gestión conexiones DNS-over-TLS
3000:3000/tcp Puerto utilizado para configurar instalación
80:80/tcp Puerto utilizado para gestión interfaz Web
~/docker/adguard/datos:/opt/adguardhome/work Ruta donde se almacena los datos
~/docker/adguard/config:/opt/adguardhome/conf Ruta donde se almacena la configuración
restart: always Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio

Una vez configurado, lo levantamos para ser creado y ejecutado:

docker-compose up -d

Ahora para activar nuestro servidor de DNS, asignamos nuestro localhost como servidor de resolución DNS y protegemos el fichero contra escritura:

sudo mv /etc/resolv.conf /etc/resolv.conf.adg && \
echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolv.conf && \
sudo chattr +i /etc/resolv.conf

Tras ello, podremos configurar el servicio, que en mi caso estaría disponible en la dirección web http://rpi1b.local:3000

Durante el primer acceso veremos un asistente de configuración dandonos la bienvenida:

Nos solicita los puertos e interfaces donde puede gestionar la protección, por defecto lo dejamos como la imágen para proteger todas las interfaces:

Debemos de crear un usuario y contraseña de administración:

Nos da unas pautas de configuración en diferentes dispositivos, podemos obviar el proceso y continuar:

Obtenemos un nuevo aviso de que el servicio ha sio debidamente configurado:

A partir de este momento ya podremos entrar a la interfaz Web que se encuentra en el puerto :80 http://rpi1b.local

Y listo!