AdGuard: 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!