AdGuard Home
AdGuard Home (AGH) es un servidor DNS gratuito y de código abierto que bloquea publicidad y seguimiento en toda la red. Funciona como un servidor DNS que redirige los dominios de seguimiento a un “agujero negro”, evitando así que sus dispositivos se conecten a esos servidores. Está basado en software utilizado con servidores DNS públicos de AdGuard.
Además, AdGuard Home también ofrece funciones de cifrado DNS como DNS sobre TLS (DoT) y DNS sobre HTTPS (DoH) integradas sin necesidad de paquetes adicionales.
Requisitos previos
Los enrutadores con poca RAM, espacio de almacenamiento/flash o procesadores más lentos serán potencialmente no recomendados para ejecutar AdGuard Home. Es posible que desee ejecutar AdGuard Home en otro cliente si tiene alguna de las limitaciones de recursos del sistema mencionadas con su enrutador. Los siguientes requisitos se proporcionan a continuación como orientación general.
- Mínimo de 50 MB de RAM libre
- Mínimo de 100 MB de espacio libre en disco/flash (ver requisitos de flash/almacenamiento).
- Se recomiendan enrutadores de mayor rendimiento, es decir, de doble núcleo con velocidades de reloj de procesador más altas.
La cantidad de RAM requerida también será relativa a las listas de filtros que utilice.
Los enrutadores con menos de 128 MB de RAM o que solo tienen un procesador de un solo núcleo tenderán a tener un rendimiento deficiente. El homehub_v5a fue usado para probar las compilaciones 'edge' y 'release' 0.107.0.
Una opción alternativa podría ser utilizar una Raspberry Pi Zero conectada al puerto USB de su enrutador para ejecutar AGH. Usando un Pi Zero para AGH.
Latencia/rendimiento de DNS
Para obtener el mejor rendimiento y la menor latencia en las solicitudes de DNS, AGH debe ser su solucionador de DNS principal en su cadena de DNS. Si actualmente tiene instalado dnsmasq o unbound, debe mover estos servicios a un puerto alternativo y hacer que AGH use el puerto DNS 53 con los solucionadores de DNS ascendentes de su elección configurados. Este wiki recomienda mantener dnsmasq/unbound como su solucionador local/PTR para DNS inverso.
La razón de esto se debe a que los solucionadores como dnsmasq bifurcan cada solicitud de DNS cuando AGH está configurado como ascendente, esto tendrá un impacto en la latencia de DNS que se puede ver en el panel de control de AGH. Tampoco se beneficiará de poder ver las solicitudes de DNS realizadas por cada cliente si AGH no es su solucionador de DNS principal, ya que todo el tráfico aparecerá desde su enrutador.
El script de instalación en la sección de configuración moverá dnsmasq al puerto 54 y lo configurará para que AGH lo use como PTR local/búsquedas DNS inversas.
Requisitos de espacio de almacenamiento/flash
El binario compilado AdGuardHome
ha crecido desde la versión 0.107.0. Para muchos enrutadores, esta será una cantidad bastante significativa de almacenamiento ocupada en el sistema de archivos superpuesto. Además, funciones como estadísticas y registro de consultas también requerirán más espacio de almacenamiento cuando se escriban en el directorio de trabajo. Para enrutadores con menos espacio flash, se recomienda encarecidamente utilizar USB o una ruta de almacenamiento externo para evitar llenar su sistema de archivos superpuesto. Si tiene poco espacio flash, es posible que desee utilizar el método de instalación personalizado y tener toda la instalación de AdGuard Home almacenada fuera de su almacenamiento flash. Alternativamente también puedes realizar una configuración exroot.
Actualmente (May 2022 edge build 108) una instalación completa en la carpeta /opt, realmente necesita alrededor de 100 MB de espacio.
- (70MB) 35MB x2 para el binario AGH y nuevamente para cuando realiza copias de seguridad y actualizaciones. (eso está en la carpeta agh-backup)
- 20MB para los filtros. (Nuevamente puede subir o bajar esto dependiendo de las listas que use)
- 2MB - 90 días de estadísticas.
- 53MB - 7 días de registros de consulta.
Puede modificar su registro para mantener las cosas más pequeñas si es necesario.
Registro de consultas/estadísticas
Uno de los principales beneficios de AGH es la consulta detallada y los datos estadísticos proporcionados; sin embargo, para muchos enrutadores, tener períodos de retención prolongados para estos datos puede causar problemas (consulte los requisitos de espacio de almacenamiento/flash). Si está utilizando el almacenamiento tmpfs predeterminado, debe establecer un período de retención relativamente corto o deshabilitar el registro por completo. Si desea tener períodos de retención más prolongados para los datos de consultas/estadísticas, considere mover el directorio de almacenamiento fuera del espacio flash de su enrutador.
Instalación
Desde 21.02, hay un paquete AdGuard Home oficial, el cual puede ser instalado a través opkg.
También se ha confirmado que el paquete opkg para 21.02 funcionará en 19.07, pero requerirá transferir el ipk correcto a través de SSH o SCP e instalarlo manualmente con opkg debido a que no está presente en el repositorio de paquetes 19.07.
Las dependencias requeridas (ca-bundle) se resuelven e instalan automáticamente cuando se usa el paquete oficial.
opkg update
opkg install adguardhome
El paquete oficial OpenWrt utiliza las siguientes rutas y directorios de forma predeterminada:
- La aplicación
AdGuardHome
se instalará en/usr/bin/AdGuardHome
. - El archivo de configuración principal
adguardhome.yaml
se almacena en/etc/adguardhome.yaml
. - El directorio de trabajo predeterminado es
/var/adguardhome
(por defecto/var
es un enlace simbólico a/tmp
). - El directorio de trabajo se puede configurar en
/etc/config/adguardhome
- Se proporciona un script init.d en
/etc/init.d/adguardhome
.
El directorio de trabajo predeterminado configurado significará que los registros de consultas y las estadísticas se perderán al reiniciar. Para evitar esto, debe configurar una ruta de almacenamiento persistente como /opt o /mnt con almacenamiento externo y actualizar el directorio de trabajo en consecuencia.
Para que AdGuard Home se inicie automáticamente al arrancar y para iniciar el servicio:
service adguardhome enable
service adguardhome start
Configuración
Después de instalar el paquete opkg, ejecute los siguientes comandos a través de SSH para prepararse para convertir a AGH en el solucionador de DNS principal. Estas instrucciones asumen que está utilizando dnsmasq. Esto degradará dnsmasq a un solucionador de DNS interno únicamente.
Los puertos elegidos son puertos alternativos bien conocidos o compromisos razonables. Puede editar los scripts para usar sus propios puertos, pero debe consultar https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers para conocer los puertos reservados.
# Obtener la primera dirección IPv4 e IPv6 del enrutador y guardarlas en las siguientes variables para usarlas durante el script. NET_ADDR=$(/sbin/ip -o -4 addr list br-lan | awk 'NR==1{ split($4, ip_addr, "/"); print ip_addr[1] }') NET_ADDR6=$(/sbin/ip -o -6 addr list br-lan scope global | awk 'NR==1{ split($4, ip_addr, "/"); print ip_addr[1] }') echo "Router IPv4 : ""${NET_ADDR}" echo "Router IPv6 : ""${NET_ADDR6}" # 1. Habilitar dnsmasq para realizar solicitudes PTR. # 2. Reducir el tamaño de la caché de dnsmasq, ya que solo proporcionará información PTR/rDNS. # 3. Deshabilitar la protección de revinculación. Las respuestas del servicio DNS filtradas de dominios bloqueados son 0.0.0.0, lo que hace que dnsmasq llene el registro del sistema con posibles mensajes detectados de ataques de revinculación DNS. # 4. Mover dnsmasq al puerto 54. # 5. Establecer DNS Ipv4 anunciado por la opción 6 DHCP # 6. Establecer DNS Ipv6 anunciado por DHCP uci set dhcp.@dnsmasq[0].noresolv="0" uci set dhcp.@dnsmasq[0].cachesize="1000" uci set dhcp.@dnsmasq[0].rebind_protection='0' uci set dhcp.@dnsmasq[0].port="54" uci -q delete dhcp.@dnsmasq[0].server uci add_list dhcp.@dnsmasq[0].server="${NET_ADDR}" #Eliminar la configuración existente, en preparación para instalar nuevas opciones. uci -q delete dhcp.lan.dhcp_option uci -q delete dhcp.lan.dns # DHCP opción 6: qué DNS (servidor de nombres de dominio) incluir en la configuración de IP para la resolución de nombres uci add_list dhcp.lan.dhcp_option='6,'"${NET_ADDR}" #DHCP opción 3: enrutador predeterminado o puerta de enlace de último recurso para esta interfaz uci add_list dhcp.lan.dhcp_option='3,'"${NET_ADDR}" #Establecer DNS Anunciado por IPv6 for OUTPUT in $(ip -o -6 addr list br-lan scope global | awk '{ split($4, ip_addr, "/"); print ip_addr[1] }') do echo "Adding $OUTPUT to IPV6 DNS" uci add_list dhcp.lan.dns=$OUTPUT done uci commit dhcp /etc/init.d/dnsmasq restart
Configurar AGH a través de la interfaz web
La primera vez que configura, el puerto de interfaz web predeterminado es TCP 3000.
- Vaya a http://192.168.1.1:3000/ (si la IP de su enrutador no es 192.168.1.1, cámbielo en consecuencia)
- Configure la interfaz web de administración para escuchar en
192.168.1.1
en el puerto8080
. (Cambiar el puerto de la interfaz web es opcional) - Configure el servidor DNS para que escuche en
192.168.1.1
en el puerto53
. - Cree un usuario y elija una contraseña segura.
Iniciar sesión en AGH
- http://192.168.1.1:8080/ (o cualquier puerto de escucha que configure)
Siéntase libre de cambiar los servidores DNS ascendentes a los que desee (Adguard Home admite DoH, DoT y DoQ de forma nativa), agregue las listas negras de su preferencia y disfrute de una navegación sin publicidad en todos sus dispositivos.
Instalación Manual
Para compilaciones más antiguas, una instalación personalizada o la ejecución de las últimas compilaciones edge, puede seguir varias guías bien escritas por miembros de la comunidad:
Configuración
Recomendaciones y mejores prácticas de configuración para usar AGH en OpenWrt.
Interfaz Web
AdGuard Home tiene su propia interfaz web para configuración y administración y no se administra a través de LuCI. No existe una aplicación LuCI oficial para administrar AdGuard Home. De forma predeterminada, la interfaz de configuración web estará en el puerto TCP 3000. Para acceder a la interfaz web, utilice la IP de su enrutador: http://192.168.1.1:3000. Si es la primera vez que instala AdGuard Home, pasará por el proceso de configuración.
De forma predeterminada, LuCI se configurará para utilizar los puertos estándar TCP 80/443, por lo que AdGuard Home deberá utilizar un puerto alternativo para la interfaz web. Puede utilizar el puerto de configuración predeterminado TCP 3000 o cambiarlo por uno alternativo (8080 es el reemplazo habitual del puerto 80).
Una vez que AGH esté activo entonces siga las instrucciones oficiales de la wiki de AdGuard Home para configurar upstreams y filtros. Una lista de configuraciones y proveedores de DNS conocidos está aquí : Proveedores de DNS conocidos
Nota: Es posible que algunas configuraciones no se puedan editar a través de la interfaz web y, en su lugar, será necesario cambiarlas editando el archivo de configuración adguardhome.yaml
.
Proxy inverso Nginx a través de LuCI
Si ya usa Nginx con LuCI en vez de uHTTPd, puede invertir el proxy en la interfaz de inicio de AdGuard. Esto puede simplificar el acceso a la interfaz de inicio de AdGuard y no tener que preocuparse por las URL con puertos HTTP no estándar. El uso de un proxy inverso también significa que no tiene que configurar específicamente el acceso HTTPS a través de AdGuard Home y, en su lugar, puede utilizar la configuración HTTPS de LuCI.
El siguiente ejemplo permitirá acceder a la interfaz de inicio de AdGuard como una ruta de subdirectorio /adguard-home. Si la IP de su enrutador o el valor http_port
de AdGuard Home es diferente, cámbielo en consecuencia.
location /adguard-home/ { proxy_pass http://192.168.1.1:8080/; proxy_redirect / /adguard-home/; proxy_cookie_path / /adguard-home/; }
Accediendo en su navegador: http://[ROUTER]/adguard-home.
Puede leer más configuraciones de proxy inverso desde los documentos de Nginx.
Deshabilite el cifrado DoH en AdGuard Home
Si ha configurado TLS en LuCI, no es necesario utilizar TLS en AdGuard Home. Establezca allow_unencrypted_doh
en falso en adguardhome.yaml
para permitir que AdGuard Home responda a las solicitudes de DoH sin cifrado TLS.
DNS Inverso (rDNS)
Habilitar rDNS para que AGH recoja sus asignaciones DHCP de OpenWrt.
- Desde la interfaz web de AdGuard Home Configuración → Configuración de DNS
- Desplácese hasta “Servidores DNS inversos privados”
- Agregue
192.168.1.1:54
- Marque las casillas “Usar resolutores DNS inversos y privados” y “Habilitar resolución inversa de las direcciones IP de clientes” y haga clic en Aplicar.
Interceptación de dominio LAN
Agregar lo siguiente a la configuración del servidor DNS ascendente interceptará cualquier solicitud o solicitudes de dominio LAN sin un FQDN y pasará esas solicitudes al solucionador apropiado, que es generalmente su enrutador OpenWrt, aunque no necesariamente.
El dominio LAN predeterminado configurado por OpenWrt es “lan”, pero si ha configurado su propio dominio, puede usarlo en el siguiente código de ejemplo:
El bucle invertido local (127.0.0.1) se usa aquí para habilitar el seguimiento de estadísticas, pero también puede usar la IP de su enrutador (192.168.1.1) aquí.
Configuración → Configuración de DNS > Servidores ascendentes
[/lan/]127.0.0.1:54 [//]127.0.0.1:54
Creando políticas ipset
Para los usuarios que utilizan políticas ipset para fines tales como túnel dividido VPN, AGH proporciona una funcionalidad ipset similar a dnsmasq. La configuración/sintaxis es ligeramente diferente y deberá migrar cualquier política ipset de dnsmasq existente al formato AGH y aplicarla a AGH en su lugar.
Se define una política ipset en el archivo adguardhome.yaml
; actualmente no hay ninguna interfaz web disponible para agregar estas políticas; por lo tanto, debe agregarlas manualmente a la configuración de yaml.
Si ipset aún no está instalado, instálelo:
opkg update
opkg install ipset
Ejemplo de sintaxis de dnsmasq
Utilizando el siguiente ejemplo de reglas ipset en dnsmasq como referencia, se demuestra el equivalente de AGH.
ipset=/domain.com/ipset_name ipset=/domain1.com/domain2.com/ipset_name,ipset_name2
Ejemplo de sintaxis AGH
dns: ipset: - domain.com/ipset_name - domain1.com,domain2.com/ipset_name,ipset_name2 ...
La principal diferencia de sintaxis es que cada dominio está separado mediante una coma (,
), no una barra diagonal (/
). Una barra diagonal indica el final de una regla de dominio con AGH. Al especificar la cadena ipset, se utiliza una coma en ambos ejemplos para indicar varias cadenas si es necesario.
Al igual que dnsmasq, una política de ipset en AGH puede tener uno o más dominios y también estar asignada a múltiples cadenas de ipset. Puede encontrar más información sobre la funcionalidad ipset en la wiki oficial de AdGuard Home en “otras configuraciones”.
Nota: Las cadenas ipset deben existir antes de usarse o hacer referencia a ellas, ya que AGH no las inicializa. Es posible encontrar una condición de carrera en el inicio si las cadenas ipset no se crean a tiempo cuando AGH intenta iniciar. Una alternativa es crear un script de inicio personalizado que ejecute el comando ipset create antes del valor INICIO de AGH.
AGH como cliente NextDNS
Se recomienda utilizar AGH con el filtrado desactivado como cliente NextDNS. Usando AGH como cliente NextDNS
Interceptación DNS
Algunos dispositivos omitirán los servidores DNS proporcionados por DHCP, p. ej. Google Chromecast.
Para asegurarse de que todo el tráfico de DNS pase por su solucionador de DNS principal, puede aplicar esto a través de reglas de firewall.
Tenga en cuenta que esto SÓLO aplica consultas de DNS simples desde su LAN para que sean redirigidas a través de su DNS. Para bloquear DOH u otros DNS cifrados se requieren reglas adicionales.
IPTables (firewall3)
Copie y pegue estas reglas de iptables en Network → Firewall → Custom Rules Tab o directamente a /etc/firewall.user
.
iptables -t nat -A PREROUTING -i br-lan -p tcp --dport 53 -j DNAT --to 192.168.1.1:53 iptables -t nat -A PREROUTING -i br-lan -p udp --dport 53 -j DNAT --to 192.168.1.1:53
También puede implementar esto mediante una regla fw3 dentro de /etc/config/firewall
:
config redirect 'adguardhome_dns_53' option src 'lan' option proto 'tcp udp' option src_dport '53' option target 'DNAT' option name 'Adguard Home' option dest 'lan' option dest_port '53'
Estos ejemplos son solo para tráfico DNS IPv4, ya que utilizan DNAT.
NFT Tables (firewall4)
nft add rule nat pre udp dport 53 ip saddr 192.168.1.0/24 dnat 192.168.1.1:53
Esto redirigirá todo el tráfico DNS desde 192.168.1.0/24 al servidor 192.168.1.1.
Omitir DNS cifrado para NTP
Para que SSL funcione, DEBE configurarse la fecha y hora correctas en el dispositivo. No todos los enrutadores tienen un reloj en tiempo real y, por lo tanto, deben usar NTP para actualizar a la fecha y hora correctas al arrancar. Como SSL NO funcionará sin la fecha/hora correcta, DEBE omitir el DNS cifrado para permitir que funcionen las actualizaciones de NTP.
Su enrutador NO necesita DNS cifrado. Sólo sus clientes detrás del enrutador requieren filtrado y cifrado. Configurar su enrutador para usar AGH como su DNS RESULTARÁ en búsquedas NTP fallidas a menos que omita las búsquedas cifradas para NTP. Esta NO es una configuración recomendada. Su enrutador debe tener su propio flujo ascendente sin cifrar para búsquedas de NTP.
Cuando se utiliza una configuración DNS ascendente que utiliza cifrado DNS, p.ej. DoT o DoH, puede encontrarse con una condición de carrera al inicio donde la comunicación con dichos solucionadores de DNS no es posible debido a que el servicio NTP no puede establecer una conexión a una fuente de hora de la red y establecer la hora correcta en su enrutador. Dado que el DNS cifrado se basa en certificados/TLS, tener la hora exacta es más importante. Para evitar esto, puede permitir que las solicitudes de DNS NTP utilicen DNS simple, independientemente de los solucionadores de DNS ascendentes configurados.
Desde la interfaz web de AdGuard Home: Configuración → Configuración de DNS → Servidores DNS ascendentes
Agregue lo siguiente para garantizar que cualquier solicitud de DNS para NTP utilice DNS simple. En este ejemplo, se han utilizado solucionadores de Cloudflare. Sin embargo, puede utilizar cualquier solucionador que desee.
[/pool.ntp.org/]1.1.1.1 [/pool.ntp.org/]1.0.0.1 [/pool.ntp.org/]2606:4700:4700::1111 [/pool.ntp.org/]2606:4700:4700::1001
Haga clic en Aplicar para habilitar estas reglas DNS específicas.
Depuración
Si AdGuard Home no se inicia, querrá ver los registros de errores para comprender el motivo.
Si usa el paquete opkg, puede ver syslog en busca de errores usando logread
.
logread -e AdGuardHome
También puede ejecutar AdGuardHome desde la línea de comandos y ver el resultado directamente.
AdGuardHome -v -c /etc/adguardhome.yaml -w /var/adguardhome --no-check-update
Este ejemplo utiliza los valores predeterminados establecidos en el script de inicio con la adición extra del indicador detallado.
-v --verbose
- Habilita la salida detallada (útil para la depuración).-c --config
- Ruta a la configuración YAML de AdGuard Home.-w --work-dir
- Ruta al directorio de trabajo establecido donde se almacenan datos como registros y estadísticas.--no-check-update
- Deshabilita el verificador de actualizaciones incorporado.
La razón más común por la que AdGuard Home no se inicia se debe a errores de sintaxis en la configuración adguardhome.yaml
.
Desinstalación
Este script desinstala AGH y restablece el DNS de su enrutador al DNS de Google. Este es un buen valor predeterminado conocido y siempre debería funcionar.
Nota: Si su enrutador no está en 192.168.1.1
, reemplace la dirección IP del enrutador utilizada en los siguientes comandos en consecuencia.
uninstallAGH.sh
#!/bin/sh opkg update service adguardhome stop service adguardhome disable opkg remove adguardhome # 1. Revierte la configuración de AdGuard Home y restablece la configuración predeterminada. # 2. Habilita la protección de reenlace. # 3. Eliminar opciones de DHCP para IPv4 e IPv6 uci -q delete dhcp.@dnsmasq[0].noresolv uci -q delete dhcp.@dnsmasq[0].cachesize uci set dhcp.@dnsmasq[0].rebind_protection='1' uci -q delete dhcp.@dnsmasq[0].server uci -q delete dhcp.@dnsmasq[0].port uci -q delete dhcp.lan.dhcp_option uci -q delete dhcp.lan.dns # configuración de la red # Deshabilita DNS de pares/ISP uci set network.wan.peerdns="0" uci set network.wan6.peerdns="0" # Configura el proveedor de DNS a Google DNS uci -q delete network.wan.dns uci add_list network.wan.dns="8.8.8.8" uci add_list network.wan.dns="8.8.4.4" # Configure el proveedor de DNS IPv6 a Google DNS uci -q delete network.wan6.dns uci add_list network.wan6.dns="2001:4860:4860::8888" uci add_list network.wan6.dns="2001:4860:4860::8844" # Guardar y aplicar uci commit dhcp uci commit network /etc/init.d/network restart /etc/init.d/dnsmasq restart /etc/init.d/odhcpd restart
Reconecte sus clientes para aplicar los cambios.
Archivos de información
La carpeta AdGuardHome/data
contiene lo siguiente.
root@OpenWrt:/opt/AdGuardHome/data# ll -h drwxr-xr-x 3 root root 512 Oct 29 09:42 ./ drwxrwxrwx 4 root root 736 Oct 30 09:06 ../ drwxr-xr-x 2 root root 800 Nov 2 09:52 filters/ -rw-r--r-- 1 root root 45.4M Nov 2 20:42 querylog.json -rw-r--r-- 1 root root 8.9M Oct 29 09:00 querylog.json.1 -rw-r--r-- 1 root root 32.0K Oct 30 05:28 sessions.db -rw-r--r-- 1 root root 4.0M Nov 2 21:00 stats.db
querylog.json
: Estas son sus consultas de DNS. Se puede quitar.sessions.db
: inicios de sesión activos en AGH actualmente. Esto se puede eliminar, pero deberá volver a iniciar sesión.stats.db
: Su base de datos de estadísticas. Puede eliminarla pero perderá sus datos estadísticos.
La carpeta de filtros contiene todas las descargas de filtros. Elimine si está lleno, pero AGH volverá a descargar sus filtros.
Si sus filtros son demasiado grandes para su espacio en disco, tendrá que desactivar los filtros grandes y restringir su uso.
La carpeta AdGuardHome/agh-backup
contiene la versión anterior de AGH. Esto también se puede eliminar si el espacio es escaso.