Tutorial: ¿Y ahora un AdBlock? Venga, por supuesto

Esquema de conexion a la nube y mediante wireguard, generad por nanobanana 2, con una calidad increible pero con errores cuestionables, ademas de una extraña sensacion de valle inquietante XD

Y esta es la entrada número… Me vale. Pero en realidad me sorprendí al darme cuenta de la cantidad de posts que implican WireGuard en mis travesuras, así que ahora podríamos llamar a esto una serie de artículos. Por supuesto, no tengo ni tendré un artículo sobre cómo instalar WireGuard, pero… ¿a quién le importa?

Por supuesto, me está llamando la atención que hacer un simple script que muestre en la cabecera de la página algo tan simple como post y categoría no debería ser tan difícil, pero presiento que hay cierta flexibilidad en hacerlo a mano que me llama la atención. Pero qué más da, ya tenemos resaltado de código manual, sigamos así hasta que me aburra. Por el momento, la etiqueta de WireGuard basta para englobar todas las travesuras que he hecho con esta herramienta.

Este Post pertenece a la categoría TUTORIALES

Puedes encontrar todos los artículos en orden cronológico en la etiqueta WireGuard

Introducción

Esto es en realidad bastante gracioso. En un post anterior para agregar nombres de dominio internos para mi red WireGuard, usamos dnsmasq para poder crear estos nombres de dominio, de manera que cuando usamos WireGuard, no pasamos todo el tráfico por la VPN, solo el tráfico DNS de tal manera que dnsmasq pide por nosotros a clodflare o googledns los nombres de las redes externas y nos entrega los nombres de las redes internas. Sin embargo, esto demostró tener una utilidad que no me esperaba; un adblock.

Esto me conviene pues hace poco vivaldí perdió el soporte para ublock (en realidad todos los navegadores basados en chromium) por lo que ublock dejó de funcionar.

El problema de todas formas, es que el bloqueo de las extensiones de navegador se limitan al navegador. Por lo que para bloquear la publicidad en otras apps, utilizo DNSNet. Una app para android que no necesita root mediante funcionar como una red VPN que intercepta el tráfico y lo redirige según reglas de bloqueo por DNS. Su problema para mí es que android solo permite una VPN activa a la vez, por lo que no puedo usar WireGuard si tengo activo DNSNet.

Este post aparece por sorpresa debido a que no sabía que iba a servirme, así que si bien, ya he probado que es funcional, voy a estar probando qué tan efectivo es y en qué mejora con respecto a DNSNet.

Agregándole superpoderes a DNSmasq

Aprovechando que ya tenemos montado WireGuard y dnsmasq en el servidor, el resto será agregar las piezas que faltan para agregarle las funciones de adblock a nuestra instancia de WireGuard.

Al implementar este filtrado directamente en el servidor DNS, logramos limpiar la publicidad y los scripts espías (como el rastreo de hardware por audio) antes de que siquiera lleguen a mis dispositivos, sin depender de extensiones en el navegador ni consumir recursos en mis clientes.

Aquí detallo el proceso técnico de cómo lo logramos de forma rápida y eficiente:

El Formato Correcto de la Lista Negra

Para este proyecto utilizamos las listas de bloqueo de HaGeZi, que se actualizan diariamente y están optimizadas para no romper la navegación legítima. Específicamente en la versión dnsmasq

dnsmasq es muy estricto con la sintaxis. Para evitar errores de procesamiento (como el clásico bad address), descargamos la lista optimizada en el formato de configuración nativo de dnsmasq, el cual utiliza la estructura local=dominio_bloqueado.

Implementación en el Servidor (Paso a Paso)

El despliegue se realiza directamente en la terminal de la máquina que aloja la VPN en tres sencillos comandos:

Paso A: Descargar la lista de bloqueos

Descargamos el archivo de configuración externa y lo guardamos en la ruta del sistema:

sudo wget -O /etc/dnsmasq.ads https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/dnsmasq/light.txt

Paso B: Vincular la lista en dnsmasq.conf

Abrimos el archivo de configuración principal (sudo nano /etc/dnsmasq.conf) y añadimos la directiva conf-file al final para indicarle al servicio que asimile esas más de 40,000 reglas locales:
conf

conf-file=/etc/dnsmasq.ads

Paso C: Habilitar los Registros (Logs) en tiempo real

Para auditar qué dominios se están bloqueando mientras navegamos, activamos el registro de consultas descomentando o agregando estas líneas en el mismo dnsmasq.conf:

log-queries

log-facility=/var/log/dnsmasq.log

Finalmente, creamos el archivo de logs con los permisos adecuados y reiniciamos el servicio:</strong >

sudo touch /var/log/dnsmasq.log

sudo chown dnsmasq:nogroup /var/log/dnsmasq.log

sudo systemctl restart dnsmasq

3. Verificación de Resultados

Para comprobar que el servidor está respondiendo correctamente, podemos revisar el estado del servicio o auditar el tráfico en vivo con el siguiente comando:

sudo tail -f /var/log/dnsmasq.log

Al inspeccionar la salida, el sistema confirma la carga exitosa mostrando la línea:

using 41477 more local addresses

A partir de este momento, cuando un dispositivo intenta cargar un dominio de telemetría o publicidad, el log muestra cómo dnsmasq intercepta la petición respondiendo localmente (haciendo que el navegador asuma que el servidor publicitario está caído):

dnsmasq: query[A] example.com from 11.0.0.4

dnsmasq: config example.com is 0.0.0.0

4. Automatización del sistema (Modo Piloto Automático)

Dado que los dominios de publicidad y rastreo cambian constantemente, es fundamental mantener la lista negra actualizada. Para no tener que descargar el archivo manualmente cada semana, podemos programar una tarea en el sistema (Cronjob) para que el servidor haga todo el trabajo en segundo plano mientras dormimos.

Para automatizar la actualización todos los domingos a las 3:00 AM, ejecutamos el siguiente comando en la terminal del servidor:

(crontab -l 2>/dev/null; echo "0 3 * * 0 wget -O /etc/dnsmasq.ads https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/dnsmasq/light.txt && systemctl restart dnsmasq") | crontab -

¿Qué hace exactamente esta instrucción?

0 3 * * 0: Es la sintaxis de Cron que le dice al sistema: «Ejecuta esto al minuto 0, de la hora 3, todos los domingos».

wget -O …: Descarga la versión más reciente de la lista de HaGeZi y sobrescribe de forma limpia el archivo viejo /etc/dnsmasq.ads.

&& systemctl restart dnsmasq: Si la descarga se completa con éxito (&&), reinicia el servicio automáticamente para que dnsmasq asimile las nuevas reglas de bloqueo sin interrumpir la red.

Conclusión

El resultado es un internet notablemente más rápido y limpio. Sitios web masivamente cargados de banners y scripts comerciales ahora se renderizan de forma instantánea sin mostrar un solo anuncio. Lo mejor de este enfoque es su centralización: cualquier nuevo dispositivo que añada a mi WireGuard heredará automáticamente esta protección total sin necesidad de configurar nada de forma individual.

Aunque hay una particularidad. Como ya tengo casi todos mis dispositivos blindados, hay pocos bloqueos por parte de dnsmasq. Así que aún tengo que seguir probando para ver qué tan práctico resulta este enfoque y qué tanto no. Por el momento es una idea que me gusta por cuanto puedo usarla casi de forma transparente y sin dramas.

Únete a mi red poniendo la URL de tu blog. Aprender más

 
Interlan
Interlan
@interlan.ec@interlan.ec

Este es mi sitio personal y profesional, donde publico mis actividades, experimentos y servicios que he ido desarrollando durante mi crecimiento profesional.

152 publicaciones
0 seguidores

Descubre más desde Interlan

Suscríbete y recibe las últimas entradas en tu correo electrónico.

,

Fecha de publicación


Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.