Manual 02 · MikroTik RouterOS 7
MikroTik es el conector de referencia de IPSmart Z: es el que da control completo (tiempo, ancho de banda, corte y consumo) al menor costo por zona. Este manual deja un hotspot funcionando contra zonaw.ipsmart.app de punta a punta.
Probado en: RouterOS 7.12 – 7.16 (hAP ax², hEX S, RB5009, cAP ax, netPower).
0. Antes de empezar
Necesitas:
- El router con IP de gestión y salida a internet.
- La interfaz (o el bridge) donde van a colgar los puntos de acceso de la zona.
- El slug de la zona creada en IPSmart Z (por ejemplo
plaza-bolivar). Lo ves en el panel:https://zonaw.ipsmart.app/p/plaza-bolivar.
Todos los comandos van en la terminal de RouterOS (Winbox → New Terminal, o SSH). Copia bloque por bloque y lee lo que hay entre bloques: hay dos decisiones que tienes que tomar.
1. Red de invitados
La zona WiFi vive en su propia red, separada de todo lo demás. Detalle completo en el Manual 06; aquí va lo mínimo para que el hotspot arranque.
/interface bridge add name=bridge-zonaw
/interface bridge port add bridge=bridge-zonaw interface=ether3
/interface bridge port add bridge=bridge-zonaw interface=ether4
/ip address add address=10.60.0.1/22 interface=bridge-zonaw comment="Zona WiFi"
/ip pool add name=pool-zonaw ranges=10.60.1.10-10.60.3.250
/ip dhcp-server add name=dhcp-zonaw interface=bridge-zonaw address-pool=pool-zonaw lease-time=45m disabled=no
/ip dhcp-server network add address=10.60.0.0/22 gateway=10.60.0.1 dns-server=10.60.0.1
Por qué /22 y no /24: una plaza llena se come 254 direcciones sin despeinarse, y cuando el pool se agota el síntoma es «el WiFi aparece pero no conecta», que nadie relaciona con DHCP. /22 da 1.000 direcciones.
Por qué lease-time=45m: algo más largo que la sesión de visitante (30 min) y más corto que la de cliente (2 h). Concesiones de 24 h en una zona de paso agotan el pool con teléfonos que ya se fueron.
2. El hotspot
/ip hotspot setup
El asistente pregunta, en este orden:
| Pregunta | Respuesta |
|---|---|
hotspot interface |
bridge-zonaw |
local address of network |
10.60.0.1/22 (déjalo como está) |
masquerade network |
yes |
address pool of network |
10.60.1.10-10.60.3.250 |
select certificate |
none (ver sección 6) |
ip address of smtp server |
0.0.0.0 |
dns servers |
los del ISP, o 1.1.1.1,8.8.8.8 |
dns name |
déjalo vacío |
name of local hotspot user |
admin-zona y una clave larga |
Deja vacío el
dns name. Si le pones un nombre, RouterOS intenta servir su propio portal con ese nombre y se mete en el medio del nuestro.
3. Perfil del hotspot: mandar a la gente a nuestro portal
Esta es la decisión importante. Hay dos formas, y las dos funcionan:
Opción A — Página de redirección (la recomendada)
El router sigue sirviendo su login.html, pero ese archivo sólo hace una cosa: mandar al visitante a IPSmart Z con todos los parámetros que hacen falta.
Crea el archivo login.html con este contenido y súbelo a Files del router (arrastrar y soltar en Winbox):
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Conectando…</title>
<meta http-equiv="refresh" content="0; url=https://zonaw.ipsmart.app/p/plaza-bolivar?mac=$(mac)&ip=$(ip)&link-login-only=$(link-login-only)&link-orig=$(link-orig-esc)&error=$(error)">
</head>
<body style="background:#05060f;color:#eceaf6;font-family:system-ui;text-align:center;padding-top:20vh">
<p>Conectando con la zona WiFi…</p>
<p><a style="color:#22d3ee" href="https://zonaw.ipsmart.app/p/plaza-bolivar?mac=$(mac)&ip=$(ip)&link-login-only=$(link-login-only)&link-orig=$(link-orig-esc)">Toca aquí si no avanza</a></p>
</body>
</html>
Cambia plaza-bolivar por el slug de tu zona. Las variables $(...) las sustituye RouterOS al servir la página; no son un ejemplo, van tal cual.
Luego apunta el perfil a la carpeta donde subiste el archivo y permite el login por PAP (lo necesita el envío automático de credenciales):
/ip hotspot profile set [find name=hsprof1] \
html-directory=hotspot \
login-by=http-pap \
http-cookie-lifetime=30d
Opción B — Sin tocar archivos, todo por API
Si prefieres no subir nada al router, IPSmart Z puede autorizar por la API REST y el visitante nunca ve la página del router. Necesitas entonces que el teléfono llegue al portal por otro camino: el DNS del hotspot con walled-garden abierto (sección 4) y el aviso de red cautiva del propio teléfono. Es más limpio pero depende de que el firmware acepte /ip/hotspot/active/login por REST, cosa que sí hacen 7.10 en adelante.
En la práctica: configura la Opción A igualmente. El conector intenta primero la API y, si el router la rechaza, cae en el envío al link-login-only. Con la opción A puesta, las dos rutas funcionan.
4. Jardín vallado (walled garden)
Sin esto, el teléfono no puede ni cargar el portal: está bloqueado y el portal está fuera.
/ip hotspot walled-garden
add dst-host=zonaw.ipsmart.app action=allow comment="Portal IPSmart Z"
add dst-host=*.ipsmart.app action=allow comment="Recursos del portal"
/ip hotspot walled-garden ip
add dst-host=zonaw.ipsmart.app action=accept comment="Portal por HTTPS"
add dst-host=*.ipsmart.app action=accept
Por qué las dos listas: la primera (walled-garden) filtra por nombre a nivel HTTP. La segunda (walled-garden ip) es la que deja pasar HTTPS, resolviendo el nombre a direcciones. El portal es HTTPS; con sólo la primera, el visitante ve una página en blanco.
Si la zona usa cuña de patrocinador con video alojado fuera, añade también ese dominio. No añadas nada más: cada dominio abierto es navegación gratis sin pasar por el portal.
5. Usuario para IPSmart Z
IPSmart Z necesita entrar al router para crear la sesión. Se le da un usuario propio con los permisos justos, nunca el admin.
/user group add name=zonaw policy=read,write,api,rest-api,test,winbox comment="IPSmart Z"
/user add name=zonaw group=zonaw password="PON-AQUI-UNA-CLAVE-LARGA" comment="Portal cautivo"
Y habilita la API REST sobre TLS:
/certificate add name=zonaw-local common-name=zonaw-local days-valid=3650
/certificate sign zonaw-local
/ip service set www-ssl certificate=zonaw-local disabled=no port=443
/ip service set api-ssl disabled=no
/ip service set www disabled=yes
/ip service set telnet disabled=yes
/ip service set ftp disabled=yes
El certificado es autofirmado: el conector de IPSmart Z lo acepta explícitamente (
inseguro: trueen la configuración del equipo). No es un descuido, es una decisión consciente y acotada al equipo de la zona.
Restringe quién puede llegar a la API — el router no debe aceptar gestión desde cualquier parte de internet:
/ip service set www-ssl address=<IP-de-salida-de-zonaw>/32,10.0.0.0/8
/ip service set api-ssl address=<IP-de-salida-de-zonaw>/32,10.0.0.0/8
La IP de salida te la da el panel de IPSmart Z (o Railway). Si cambia, la zona deja de autorizar: es la causa número uno de «funcionaba y dejó de funcionar».
6. Registrar el equipo en IPSmart Z
En el panel de IPSmart Z, o por la API de administración, el equipo se registra así:
{
"nombre": "MikroTik Plaza Bolívar",
"tipo": "mikrotik",
"host": "plaza.tudominio.net",
"config": {
"puerto": 443,
"usuario": "zonaw",
"secreto": "<se cifra al guardar>",
"inseguro": true,
"servidorHotspot": "hotspot1"
}
}
Y se prueba antes de abrir la zona al público:
npm run z:probar-conector -- "MikroTik Plaza Bolívar"
Respuesta esperada:
✅ RouterOS 7.16 en hAP ax^2 · 1 servidor(es) de hotspot
latencia: 84 ms
Si dice 0 servidores de hotspot, el router responde pero el hotspot no existe: vuelve a la sección 2.
7. Límites de banda y colas
IPSmart Z le pasa el límite a cada usuario al autorizarlo (rate-limit), así que no hace falta configurar colas por cliente a mano. Lo que sí conviene es un techo para toda la zona, para que el retorno no se ahogue:
/queue simple add name=techo-zonaw target=10.60.0.0/22 max-limit=200M/200M comment="Techo de la zona"
Cuidado con el orden de rate-limit: RouterOS lo escribe desde el punto de vista del router, rx/tx = subida del cliente / bajada del cliente. IPSmart Z ya lo manda en ese orden. Si algún día lo configuras a mano y los visitantes se quejan de que «baja lento pero sube rápido», está invertido.
8. Que el aviso de «Iniciar sesión en la red» salga solo
El teléfono decide que hay portal cautivo porque su prueba de conectividad no devuelve lo que esperaba:
- Android:
connectivitycheck.gstatic.com/generate_204debe devolver algo distinto de 204. - iOS / macOS:
captive.apple.com/hotspot-detect.htmlno debe devolver el textoSuccess. - Windows:
www.msftconnecttest.com/connecttest.txtno debe devolverMicrosoft Connect Test.
El hotspot de MikroTik intercepta HTTP por defecto y eso basta. Nunca metas esos dominios en el jardín vallado: si los dejas pasar, el teléfono cree que ya hay internet, no muestra el aviso, y el visitante se queda mirando una pantalla que no llega.
Comprobación real: con un teléfono, conectarse al SSID y esperar sin tocar nada. El aviso debe salir en menos de 10 segundos.
9. Verificación final
# ¿Hay gente conectada ahora mismo?
/ip hotspot active print
# ¿Qué usuarios creó IPSmart Z? (deben llamarse z-xxxxxxxx)
/ip hotspot user print where comment~"IPSmart Z"
# ¿Qué está bloqueando el hotspot?
/ip hotspot walled-garden print
/log print where topics~"hotspot"
Una sesión sana se ve así en active print: usuario z-1a2b3c4d, su MAC, tiempo restante bajando, y rate-limit con los dos números correctos.
10. Cuando algo no funciona
| Síntoma | Causa casi siempre | Arreglo |
|---|---|---|
| El teléfono conecta pero no sale ningún aviso | Algún dominio de detección está en el jardín vallado, o el hotspot está en la interfaz equivocada | Sección 8; /ip hotspot print y revisar interface |
| Sale el aviso pero el portal queda en blanco | Falta la regla de walled-garden ip (HTTPS) |
Sección 4 |
| El portal carga, la persona se registra, y no navega | El router rechazó el login: revisa /log print |
Sección 3; comprobar login-by=http-pap |
| «El equipo no respondió» en el panel | La API no está expuesta a la IP de salida de zonaw, o el certificado cambió | Sección 5 |
| Todos ven el portal de otra zona | Un solo router sirviendo dos zonas con el mismo login.html |
Un html-directory por zona, o un perfil de hotspot por zona |
| La gente se queda pegada al AP lejano | Falta el RSSI mínimo | Manual 01, sección 5 |
11. Lista de comprobación
- Red de invitados con pool
/22y concesión de 45 minutos. - Hotspot creado sobre el bridge de la zona, sin
dns name. -
login.htmlsubido, con el slug correcto de la zona. -
login-by=http-papen el perfil del hotspot. - Jardín vallado con las dos listas (nombre y HTTPS).
- Usuario
zonawcreado, con grupo propio y clave larga. -
www-sslyapi-sslhabilitados y restringidos por dirección. - Equipo registrado en IPSmart Z y
z:probar-conectoren verde. - Prueba con teléfono Android: sale el aviso solo y se navega.
- Prueba con iPhone: sale el aviso solo y se navega.
- Prueba de corte: la sesión termina en el minuto exacto.
Siguiente: Red, VLAN y calidad de servicio y Puesta en marcha y aceptación.