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!