MANUAL: Mikrotik, Wake Up On WAN de manera segura (VPN transparente + WOL)

Introducción​

Hoy os vengo a presentar un manual muy facilito para gente que necesita levantar un equipo de forma remota. Muchos de vosotros aparecéis por el foro con la misma cuestión: cómo configurar un router para ejecutar WOL, pero de forma remota (en lugar de "on lan", "on wan"). Deciros que WOL está basado en el envío de un magic packet a una dirección de broadcast y que, por tanto, es un protocolo pensado para funcionar en red local, no desde internet. Sumado a eso, se puede llegar a hacer una pequeña trampa para que funcione a nivel de IP, pero desde luego lo que nunca me ha gustado es que abráis puertos en un router para exponer esta funcionalidad: amén de ser peligroso, es más que probable que fracaséis en el intento. Y ¿cómo puedo ejecutar WOL de forma segura, desde una conexión remota? Pues muy sencillo, juntando estos tres conceptos: VPN + entrada estática en la tabla ARP + WOL (tradicional). Vamos al lío.

Manos a la obra​

Deciros que, lo primero, esto está pensado para correr en cualquier equipo mikrotik, incluidos los más pequeños. Para el ejemplo práctico he usado un hAP-mini, que como muchos ya sabréis es el router que tengo de trasteo y el que suelo llevar de viaje. En este caso es la víctima perfecta: un equipo pequeño, con tres puertos ethernet y que se puede alimentar por un micro-usb. Lo que vamos a hacer con él es combinar los tres conceptos anteriores, de la siguiente forma
  • VPN: Usaremos L2TP/IPsec, una de las VPN's más sencillas de montar y más ampliamente soportadas por prácticamente cualquier cliente. Para no molestar, vamos a montar e equipo en full bridge, siendo la VPN un servicio más que corre en nuestro router, en este caso reconvertido a switch. De esta manera, podremos pinchar el equipo a un router de operadora, y simplemente abriendo los puerto UDP 1701, 4500 y 500, y mandándoselos a la IP de este equipo, tendríamos todo configurado. Así no afectamos en nada al la instalación que ya tengáis, y podemos montar esto allá donde se nos plante.
  • Tabla ARP: En muchos routers de los operadores no se puede manipular la tabla ARP. Afortunadamente, este no es el caso en mikrotik, siendo perfectamente posible meter una entrada estática en esa tabla. Dicha entrada la necesitaremos para que el router "sepa" quién es la IP correspondiente a la MAC que queremos levantar. Dicho de otro modo, cuando tenemos los equipos conectados, la tabla ARP registra la relación entre las direcciones MAC y las IPs de todos los equipos conectados en el mismo segmento L2. Pero, una vez apagamos ese equipo, al cierto tiempo, esas entradas se irán limpiando de la tabla. Y, si no guardamos esta de forma estática, puesto que el router ya habrá olvidado qué dirección IP tiene la MAC que le estamos pidiendo que levante, fallará. De esta manera, nos aseguramos que esa relación siempre está ahí, y que el WOL va a funcionar sin importar el tiempo que el equipo lleve apagado.
  • WOL: Nuestro equipo mikrotik dispone de una herramienta en el menú de /tool para enviar magic packets, simplemente indicando la dirección MAC que queremos despertar y la interfaz donde dicha dirección debe localizarse.
Con todo esto, el script está preparado para escuchar cocnexiones VPN con los detalles que vosotros mismo defináis (usuario, password, secreto de ipsec). Tal y como detecte que os conectáis al router, lanzará la petición WOL para levantar la máquina remota auto-mágicamente; no tenéis que hacer nada más.

Como partir de la configuración por defecto, como hacemos siempre, en este caso nos implica un trabajo mucho mayor que partir desde cero, este será uno de los pocos manuales donde os indicaré que tenemos que borrar la configuración del router con un reset. Para ello, una vez salvado el script que posteo a continuación en un fichero script.rsc y subido al router en la carpeta files, procederemos de la siguiente forma:
Código:
/system reset-configuration keep-users=yes skip-backup=yes run-after-reset=script.rsc

El script​

El mismo se encuentra comentado en su totalidad, así que es sencillo de seguir. Sólo tenéis que tocar la parte de las variables de entorno que se definen antes del comentario # ARRANCA EL SCRIPT DE CONFIGURACION
En esta sección, se definen las siguientes variables:
usuariovpn = nombre del usuario VPN. Definid vosotros el usuario que queráis.
passwordvpn = password del usuario VPN. Definid vosotros la contraseña que queráis.
secretoipsec = secreto compartido para IPSec. Definid vosotros el secreto compartido que queráis.
macserverwol = dirección MAC de la máquina que queremos levantar. En el ejemplo, la 00:11:22:AA:BB:CC
ipserverwol = ip de la máquina que queréis levantar. Aseguraos de que esta IP es estática o reservada en el DHCP del router de la operadora, pero que es siempre la misma. Esta dirección es del segmento de red de vuestro router principal; recordad que en esta ocasión estamos montando un router que hace de switch transparente. En este ejemplo, la 192.168.1.100
scriptwol = la instrucción que levantará la máquina por WOL. No es necesario tocar nada en este punto.

Sin más, este es el sript
Código:
# Definimos las variables a usar en la configuración de la VPN
:local usuariovpn "abc123"
:local passwordvpn "def456"
:local secretoipsec "xyz987"

# Definimos las variables a usar en el script de WOL
:local macserverwol "00:11:22:AA:BB:CC"
:local ipserverwol 192.168.1.100
:local scriptwol "/tool wol mac=$macserverwol interface=bridge"

############################################################
# ARRANCA EL SCRIPT DE CONFIGURACIÓN
############################################################

# Deshabilitamos la interfaz inalámbrica
# puesto que de inicio no la vamos a usar
/interface wireless
set 0 disabled=yes

# Creamos un nuevo bridge
/interface bridge
add name=bridge auto-mac=no admin-mac=\
    [/interface ethernet get ether1 mac-address]

# Añadimos todas las interfaces al bridge
/interface bridge port
add bridge=bridge interface=all

# Levantamos un cliente DHCP sobre ese bridge
# Para que obtenga IP del router principal
/ip dhcp-client
add interface=bridge disabled=no

# Creamos un nuevo bridge de loopback,
# Para tener una IP con la que conectarnos al router
/interface bridge
add name=loopback

# Creamos una IP de administración
/ip address
add interface=loopback address=192.168.90.1/24

/ip arp
add interface=bridge mac-address=$macserverwol address=$ipserverwol

# Creamos un pequeño pool para la VPN (ejemplo, 5 ususarios)
/ip pool
add name=vpnpool ranges=192.168.89.2-192.168.89.6

# Creamos un nuevo perfil para la VPN, asociado al pool
# Y que ejecute el script de WOL al detectar una conexión
/ppp profile
add copy-from=default-encryption local-address=192.168.89.1 \
    remote-address=vpnpool name=l2tpprofile on-up=$scriptwol

# Damos de alta un nuevo usuario para la VPN
/ppp secret
add name=$usuariovpn password=$passwordvpn service=l2tp profile=l2tpprofile

# Damos de alta el servidor VPN con L2TP
# sin más encriptación ni más nada
# puesto que sólo lo vamos a usar para el WOL
/interface l2tp-server server
set enabled=yes use-ipsec=yes ipsec-secret=$secretoipsec

# Nateamos la subred de la VPN
/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.89.0/24

# Damos de alta el cliente cloud
# para que el router tenga un DDNS automáticamente
/ip cloud
set ddns-enabled=yes

# Opcional - Creamos un script para levantar a mano por WOL
# Por si tenemos que hacerlo en cualquier otro momento
# Descomentar las siguientes 2 líneas en caso de quererlo
# /system script
# add dont-require-permissions=yes name=wol source=$scriptwol

Una vez aplicado el script, podréis acceder al router usando la IP que obtenga del router principal o configurando manualmente una IP del rango 192.158.90.0/24 en vuestra tarjeta de red (por ejemplo, la 192.168.90.2) y accediendo a la IP de loopback: 192.168.90.1
También, es recomendable que, una vez cargado el script, accedáis al equipo para cambiar la password del usuario admin, si es que no o hicisteis como parte del quick set cuando arrancasteis por primera vez el equip. Si tenéis la última versión de RouterOS (en este momento que escribo la 6.49 en la rama estable), os pedirá cambiar la password según accedáis por Winbox al equipo la primera vez.

Una vez aplicado, podéis conectaros por VPN con el detalle del usuario, contraseña y secreto de IPSec que definimos al principio del script, y con la dirección que nos otorga el cliente DDNS, que podéis encontrar en /ip cloud print

Saludos, y espero que os guste! Dedicado al compi @apyguay
 
Muchas gracias por la explicación.
Cuando salga del trabajo me pondré a analizar todo esto porque me pierdo en muchos puntos…. pero seguro que con el hAP mini ya montado se me aclararán muchas cuestiones que ahora mismo no entiendo
Gracias y ya comentaré mi experiencia
 
Muchas gracias por la explicación.
Cuando salga del trabajo me pondré a analizar todo esto porque me pierdo en muchos puntos…. pero seguro que con el hAP mini ya montado se me aclararán muchas cuestiones que ahora mismo no entiendo
Gracias y ya comentaré mi experiencia
No desanimes sobre todo. Estos equipos son algo oscuros de manejar al principio, pero son flexibles como un chicle. Familiarízate con él primero y, cuando te veas fuerte, nos ponemos con ello. Yo (o cualquiera de los que está por aquí) te podemos echar un cable si ves que te atascas.

Empieza por bajarte winbox, darle un quick set al equipo, actualizarle, cambiarle la contraseña del usuario admin, etc. Para ello simplemente conectarlo por ether1 a tu router actual y conectas por cable un PC a cualquiera de los otros dos puertos. Hecho eso y una vez familiarizado con la interfaz de winbox, le metemos mano. Todo eso que lleva el script se puede hacer de manera visual usando winbox o webfig. Lo malo es que, dado que es una configuración alto compleja y difícil de conseguir partiendo de un quick set, he preferido montar un script parametrizable que cualquiera pueda tocar y usar para si propósito.

No obstante, lo dicho, cuando te atasques, me dices y le echamos un vistazo.

Saludos, y que lo disfrutes. Este me lo curré solo para ti (aunque sospecho que a más de uno le va a venir bien).

;)
 
Pues gracias por el trabajo personalizado. Llevo tiempo buscando encender el equipo de forma remota y créeme, he leído mucho mucho sin conseguir nada.
Paciencia e interés tengo. En ratos libres diseño bases de datos y también me atasco a veces. Solo es buscar solución o dar marcha atrás y buscar otro camino…. aunque muchas veces preguntando se resuelve antes, que para eso están los foros y los maestros que nos iluminan
 
Pues gracias por el trabajo personalizado. Llevo tiempo buscando encender el equipo de forma remota y créeme, he leído mucho mucho sin conseguir nada.
Paciencia e interés tengo. En ratos libres diseño bases de datos y también me atasco a veces. Solo es buscar solución o dar marcha atrás y buscar otro camino…. aunque muchas veces preguntando se resuelve antes, que para eso están los foros y los maestros que nos iluminan
Anda coño, si eres del gremio. Yo pensaba que eras aún más neófito en el tema. No creo que te cueste mucho pillarlo. Y, además, si te lees el resto de manuales, encontrarás interesante el mundillo y lo que se puede hacer con estos cacharros.

Un saludo!
 
A ver, de cero no empiezo. Todos los pc's de mi entorno (familia básicamente) están de mi mano, montados desde cero a piezas según la configuración necesaria. La instalación de red de mi casa la hice yo (cable + crimpadora básicamente). Cualquier problema que pueda surgir en amigos o familia si un windows no funciona bien, recurren a mi. O sea, novato de todo no soy pero lo mío no es el tema de redes
Solo intenté un par de veces entrar en el router del vecino adolescente para caparle la conexión a partir de las 00:00 para que no juegue tanto al Fortnite y me deje dormir (mete unos gritos que no veas), pero todo lo que pude hacer es sacar las claves de 2 vecinos que no molestan jejejeje
Me gusta el tema de redes pero me parece complejo
Ah! y el tema de diseño de base de datos es eso... diseño (FileMaker), nada de código
 
No desanimes sobre todo. Estos equipos son algo oscuros de manejar al principio, pero son flexibles como un chicle. Familiarízate con él primero y, cuando te veas fuerte, nos ponemos con ello. Yo (o cualquiera de los que está por aquí) te podemos echar un cable si ves que te atascas.

Empieza por bajarte winbox, darle un quick set al equipo, actualizarle, cambiarle la contraseña del usuario admin, etc. Para ello simplemente conectarlo por ether1 a tu router actual y conectas por cable un PC a cualquiera de los otros dos puertos. Hecho eso y una vez familiarizado con la interfaz de winbox, le metemos mano. Todo eso que lleva el script se puede hacer de manera visual usando winbox o webfig. Lo malo es que, dado que es una configuración alto compleja y difícil de conseguir partiendo de un quick set, he preferido montar un script parametrizable que cualquiera pueda tocar y usar para si propósito.

No obstante, lo dicho, cuando te atasques, me dices y le echamos un vistazo.

Saludos, y que lo disfrutes. Este me lo curré solo para ti (aunque sospecho que a más de uno le va a venir bien).

;)
Pues ya estoy atascado :confused:
He entrado con el navegador y he configurado todo como explicas en este hilo:

He establecido las credenciales de entrada al router y también las del VPN
Ahora estoy con WinBox y el tema del sript, pero no sé como se implementa. Es decir, no sé si debería haber un archivo para cargar o si tengo que copiarlo entero (cambiando lo que tú dices para personalizarlo) y pegarlo en algún sitio. ¿Quizá en systems/scripts? Eso está vacío ahora mismo
 
Lo que te he pasado como código lo pegas en un fichero de texto y lo salvas como “script.rsc” o el nombre que quieras, con esa extensión.

Hecho esto, abres el fichero y modificas las primeras líneas, cómo se indica en el manual, sustituyendo los valores que yo pongo ahí con los que quieras definir tú.

Una vez listo el fichero, lo arrastras a la ventana de winbox y se subirá al Router, al apartado “Files”. Cuando lo tengas ahí, ya puedes correr el comando desde terminal para resetear el Router y cargar esa configuración

No tiene más misterio.

Saludos!
 
Vale, ya sé como ejecutar un script
He ejecutado el de reseteo que has puesto y ahora no puedo acceder al router. No hay puerta de enlace cuando ejecuto “ipconfig” desde CMD
 
Vale, ya sé como ejecutar un script
He ejecutado el de reseteo que has puesto y ahora no puedo acceder al router. No hay puerta de enlace cuando ejecuto “ipconfig” desde CMD
Correcto. Si te leíste bien el post, verás que ahora tu router no es un router, sino un switch con cosas, y tienes dos formas de acceder a él. O colocando tu tarjeta de red en el rango 192.168.90.0/24 (por ejemplo que le des a la tarjeta de red la ip 192.168.90.2 y máscara 255.255.255.0, sin puerta de enlace) de manera manual, o accediendo al router principal, viendo que IP le ha dado de su rango, a usándola para llegar a él. Esa ip del equipo es conveniente que, al igual que la del PC que quieres levantar, la reserves en el dhcp del router de la Adamo, tal que siempre le otorgue la misma. Se puede configurar en el mikrotik de manera estática también, pero preferí hacerlo por dhcp al no conocer tu segmento de red, y para que esto mismo te funcione igual a ti que a cualquier otro que pase por aquí.

Saludos!
 
Si te leíste bien el post
Lo leí pero son varias cosas y quizá se me pasó :x
Esta tarde lo retomo porque lo cierto es que parecía complicado pero al ver la interface del router y leer de nuevo el manual todo se aclara y ya no es tan abstracto.
Está muy bien explicado así que no creo que sea tan complicado
Alguna duda más surgirá, pero primero lo intentaré y después preguntaré
Saludos
 
tienes dos formas de acceder a él. O colocando tu tarjeta de red en el rango 192.168.90.0/24 (por ejemplo que le des a la tarjeta de red la ip 192.168.90.2 y máscara 255.255.255.0, sin puerta de enlace) de manera manual, o accediendo al router principal, viendo que IP le ha dado de su rango, a usándola para llegar a él
Pues ninguna de las 2 opciones me ha funcionado. Al final he puesto la ip por defecto, he abierto el WinBox y en la lista de abajo me apareció la MAC del router. He pinchado ahí, he pulsado en conectar y listo. Estoy configurando otra vez a través de Quick Set siguiendo de nuevo el manual de primeros pasos (https://www.adslzone.net/foro/mikrotik.199/manual-mikrotik-primeros-pasos.497503/) pero no aparece el apartado VPN.
Sigo con ello y voy a investigar. Ya comento cuando dé con ello
Saludos
 
Pues no encuentro la opción de marcar VPN (antes del reset sí que la había). He cargado el script y ya me conecto a través del Mikrotik.
He vuelto a revisar los manuales a ver si hay que abrir algún puerto pero no veo que haya que hacerlo (o quizá ya tengo sueño y no lo veo).
He probado a enviar el Magic Packet a través de 4G en un iPhone con la APP "RemoteBoot" pero no arranca.
En IP pongo xxxxxxxxxxxxx.sn.mynetname.net (lo he comprobado en una web y sí da mi ip pública), introduzco la MAC de mi pc y en Port pongo 9
Con esa APP lo arranco en red local, pero con 4G nada de nada. Fijo que me he dejado algo por el camino, pero esa ya es tarea para mañana.
Saludos
 
Léete el manual otra vez le cabo a rabo y dime si entiendes qué estamos haciendo. Una vez cargado el script, tienes que abrir puertos en el router de operadora y mandarlos al mikrotik (1701, 4500 y 500). Y nada más. Lo único que tendrías que hacer es configurar el cliente vpn allá donde lo quieras usar. Conforme el router detecte que te estas conectando a la vpn, arrancará el equipo que hayas configurado en el wol automáticamente. Tú no tienes que mandar el magic packet a ningún sitio, es el router el que lo va a mandar, a partir de un evento de conexión por vpn.

Saludos!
 
A medida que voy dando todos los pasos creo que voy comprendiendo todo. A ver si lo he entendido bien:
- entrar al router nuevo para hacer la configuración básica inicial
- cambiar las credenciales de acceso
- ejecutar un script de reseteo de los valores por defecto manteniendo las credenciales que hemos cambiado
- cargar otro script con la configuración que nos interesa ya lista, simplemente personalizando usuario, contraseña, etc
- abrir puertos
 
El script hay que tocarlo antes de cargarlo, en las primeras líneas, donde se definen las variables de entorno, metiendo los valores que a ti te interesen. No tienes necesidad de cargar mi script para nada antes de modificarlo. Una vez cargado, no vuelvas sobre tus pasos ni intentes usar el quick set de nuevo, eso solo has de usarlo cuando el equipo está recién reseteado.

Aparte de eso, tienes que abrir los puertos de la vpn correspondientes y mandárselos a la ip que le corresponda al mikrotik.

Lo que me interesa que entiendas es que lo único que tienes que hacer “de cara a fuera” es conectarte a la vpn para que todo lo demás suceda de manera automática. Tú no vas a mandar ningún magic packet ni vas a hacer ninguna otra interacción más allá de conectarte a la vpn de tu equipo. El resto pasa automáticamente.

Saludos!
 
Mi router asigna ip's automáticamente del puerto 100 al 250, así que he puesto mi pc en el 40 y he intentado poner el Mikrotik en el 41. El tema es que ahora en WinBox sí aparece el 41, si pincho en Quick Set también aparece el 41 (este apartado no lo toco jeje) pero en el router de Adamo aparece como 210. Si en WinBox entro en IP/Addresses me sale lo de la captura y no sé muy bien donde cambiarlo y si esas 2 líneas deberían llevar la misma IP

captura.jpg



También en la tabla ARP me salen 2 direcciones para la MAC de mi equipo. Una está bien, que es la 40 pero la otra supongo que no porque es la 209 y es la que tenía el Mikrotik ayer (hoy tiene la 210)

captura2.jpg



Es extraño porque a través de WinBox entro por la ip 41 pero en el router e Adamo tiene asignada la 210 (bueno, he reiniciado todo y ahora es la 209 que para el caso es lo mismo)
 
Última edición:
Ah! Lo que comentaba en otro post es que antes de cargar el script aparecía "VPN" entre "Local Network" y "System"
Ahora ya no ahí tendría que marcar una pestaña y es donde aparecía la dyndns

captura3.jpg
 
He abierto los puertos para la ip 209 que es la que aparece ahora mismo en el router de Adamo. En teoría creo que está todo listo pero me falta la forma de testearlo. Ya he comentado que para hacer WOL a nivel local utilizo la app RemoteBoot, pero para hacerlo desde fuera no sé. Lo que has puesto de hacerlo por VPN, pues ni idea. ¿Como lo debería hacer a través de un iPhone?
Gracias
 
Arriba