Cómo bloquear páginas web en todos tus Mikrotik a la vez

Si administrás múltiples routers Mikrotik para un ISP, sabés lo tedioso que es aplicar reglas de bloqueo en cada equipo individualmente. En esta guía te explicamos los métodos disponibles y cómo centralizar ese control con un script vía la API de Mikrotik.

El problema real: 20 routers, 20 veces el mismo trabajo

Imaginá este escenario: tu ISP tiene 20 routers Mikrotik distribuidos en distintos nodos. Un cliente se queja de que hay contenido inapropiado accesible en la red, o el municipio te pide bloquear sitios de apuestas online. ¿Qué hacés?

La respuesta manual es conectarse a cada router, aplicar las reglas de firewall o DNS, verificar que funcionan y repetir 20 veces. Si después necesitás actualizar la lista, volvés a empezar. Es ineficiente, propenso a errores y no escala.

Los métodos disponibles en Mikrotik

Mikrotik ofrece varias formas de bloquear contenido. Cada una tiene sus ventajas y limitaciones:

1. DNS estático (el más simple)

Consiste en redirigir las consultas DNS de los dominios bloqueados a una IP inexistente o a una página de bloqueo propia.

/ip dns static add name="facebook.com" address=0.0.0.0 /ip dns static add name="*.facebook.com" address=0.0.0.0

Ventaja: Simple y liviano. Desventaja: No funciona si el cliente usa DNS propio (8.8.8.8, etc.).

2. Firewall Layer 7 (más potente, más costoso)

Inspecciona el contenido de los paquetes para identificar patrones. Puede bloquear aunque el cliente use DNS propio, pero consume mucha CPU.

/ip firewall layer7-protocol add name=facebook \ regexp="^.+(facebook\\.com).*\$" /ip firewall filter add chain=forward \ layer7-protocol=facebook action=drop
⚠️ Cuidado con la CPU

Layer 7 inspecciona cada paquete. En routers con muchos clientes puede generar una carga de CPU significativa. No recomendado para listas grandes.

3. Redirigir todo el DNS (el más robusto)

Forzar todo el tráfico DNS del cliente hacia el DNS del router, sin importar qué servidor configure el cliente. Así el bloqueo por DNS siempre funciona.

/ip firewall nat add chain=dstnat protocol=udp \ dst-port=53 action=redirect to-ports=53 \ comment="Redirigir DNS al router" /ip firewall nat add chain=dstnat protocol=tcp \ dst-port=53 action=redirect to-ports=53
💡 Combinación recomendada

La combinación más efectiva es redirigir todo el DNS al router (para que no pueda evadirse) + DNS estático para los dominios bloqueados. Es liviana y efectiva para la mayoría de los casos.

El problema de escala: actualizar 20 routers

El método DNS + redirección funciona bien en un router. El problema es cuando tenés 20. Cada vez que querés agregar o quitar un dominio de la lista tenés que:

  1. Conectarte a cada router por Winbox o SSH
  2. Aplicar el cambio manualmente
  3. Verificar que funcionó
  4. Repetir 19 veces más

Hay una alternativa más inteligente: usar un script centralizado que se ejecute en todos los routers simultáneamente vía la API de Mikrotik. Lo vemos a continuación.

Solución avanzada: API de Mikrotik

Mikrotik tiene una API que permite ejecutar comandos de forma remota desde un servidor externo. Con un script PHP o Python podés conectarte a múltiples routers y aplicar cambios en todos a la vez.

Primero habilitá la API en cada Mikrotik:

/ip service set api disabled=no port=8728 /ip service set api-ssl disabled=no port=8729

Luego, desde tu servidor, podés usar la librería RouterOS API para conectarte y ejecutar comandos en todos los routers de tu lista:

// Ejemplo conceptual en PHP foreach ($routers as $router) { $api = new RouterOsApi($router['ip']); $api->login($router['user'], $router['pass']); // Agregar dominio bloqueado $api->write('/ip/dns/static/add', [ 'name' => 'sitio-bloqueado.com', 'address' => '0.0.0.0' ]); $api->disconnect(); }
💡 Automatizalo de verdad

La clave es centralizar: un script (o un panel) donde agregás el dominio una sola vez y se aplica solo a todos los Mikrotik que tengas registrados, con historial de cambios y logs de acceso. Eso convierte 20 tareas manuales en una.

¿Qué pasa con HTTPS?

El bloqueo por DNS funciona tanto para HTTP como HTTPS, porque la consulta DNS ocurre antes de que se establezca la conexión cifrada. Si el dominio resuelve a 0.0.0.0, el navegador no puede conectarse, independientemente del protocolo.

Sin embargo, no funciona con DNS over HTTPS (DoH) que usan algunos navegadores modernos como Firefox por defecto. Para bloquearlo también:

// Bloquear DNS over HTTPS (puerto 443 a servidores DoH conocidos) /ip firewall address-list add list=doh-servers address=8.8.8.8 /ip firewall address-list add list=doh-servers address=1.1.1.1 /ip firewall address-list add list=doh-servers address=9.9.9.9 /ip firewall filter add chain=forward dst-address-list=doh-servers \ dst-port=443 protocol=tcp action=drop \ comment="Bloquear DoH"

Resumen: qué método usar según tu caso

Método Efectividad CPU Escala
DNS estático Media Baja Manual
DNS + redirección Alta Baja Manual
Layer 7 Alta Alta Manual
API centralizada (script propio) Alta Baja Automática ✓
Guías directas, sin relleno

Nuestras guías de Mikrotik + OLT van al grano con las mismas recetas que usamos en producción. Configurá tu red desde cero, paso a paso.

Ver las guías →