Wake On Lan desde internet con puertos cerrados

Hola,

Bueno, como dice el título, quiero despertar el PC desde internet. La bios está configurada correctamente, Windows 10 con los puertos abiertos, IP fija, en el router la IP fija del PC con los puertos 7, 9, etc. abiertos. En fin, creo que todo echo.

Si despierto el ordenador de forma local con el móvil por ejemplo, funciona perfectamente, pero el problema es con la IP pública, que no hay forma de conseguirlo... Tengo los puertos abiertos y nada, incluso me he conectado por telnet al router pero no puedo meterlo en la lista ARP porque no tiene esas instrucciones.... Como detalle, por más que abro los puertos en el router, si por ejemplo los miro en cualquier web de estas que le pones el puerto y mira online si tienes este abierto, siempre salen cerrados.

Me imagino que el problema es en el router que será una patata, es un InnboxG64.

¿Tengo alguna alternativa que no sea comprarme un router nuevo?
Puedo estar equivocándome, pero si te funciona de forma local, no es problema de la tabla ARP (el router está consiguiendo pasar de una IP a una dirección MAC incluso estando apagado).

Tiene más sentido que el problema sea por lo que dices que no consigues abrir los puertos. No está asignando un puerto de la ip pública a una ip privada.

¿Has probado diferentes puertos?
Si, y por lo que he probado desde webs online de checkear puertos, siempre dice que están cerrados. Por ejemplo tengo un NAS DS120j y, cuando está suspendido, lo levanto sin ningún tipo de problema desde internet con el mismo router y conexión y claro, ya no se qué probar más...
jomofer escribió:Puedo estar equivocándome, pero si te funciona de forma local, no es problema de la tabla ARP (el router está consiguiendo pasar de una IP a una dirección MAC incluso estando apagado).

Tiene más sentido que el problema sea por lo que dices que no consigues abrir los puertos. No está asignando un puerto de la ip pública a una ip privada.

¿Has probado diferentes puertos?

Sí parece ser problema de la tabla ARP.

Wake on LAN funciona en capa 2 (capa de enlace, a nivel de Mac, no por IP). Cuando se utiliza desde internet, lo normal es que el router no tenga la Mac del PC asociada a la IP que le corresponde, porque la tabla arp se va borrando continuamente (creo recordar que tiene una persistencia de 20 segundos si no hay actividad de red). Cuando le lanzamos la petición desde internet, el router no sabe a qué Mac corresponde la IP que tiene en la tabla NAT, por lo que no sabe a qué MAC enviar el paquete.

La forma común de arreglar esto, si el router lo permite, es establecer una regla ARP estática para que siempre tenga esa traducción de IP a MAC en memoria.

Otra opción sería hacer la traducción NAT contra la IP de Broadcast (255.255.255.255, o la última del rango de red, por ejemplo 192.168.0.255), que tiene asociada de forma fija la MAC FF:FF:FF:FF:FF:FF, y enviaría la trama a todos los equipos de la subred. Pero esto tiene varios problemas:
- No funciona en todos los equipos. La mayoría de routers residenciales tienen base Linux y creo que Linux sólo permite forwarding de la IP de Broadcast en versiones recientes de kernel, y además debe estar activa la funcionalidad, no es funcional por defecto en el kernel
- Esto enviaría el Magic packet de WoL a todos los equipos de la red. Si tenemos WoL activo en varios y esto funciona, se encenderian todos
- Lo más importante y por lo que lo desaconsejo aunque funcione: abrir la posibilidad de que se pueda lanzar Broadcast a nuestra subred desde internet, es una grave vulneración de seguridad, facilita una serie de ciber ataques.

Por último, y esta es la opción que uso yo en mi casa, pero solo permiten ciertos routers: tengo configurado un servidor VPN en el router. Entro a la VPN, y desde el router lanzo el WoL al equipo que quiero encender. Pero para esto el router debe ser capaz tanto de hacer de server VPN como de lanzar el Magic Packet de WoL
Joer, lo que me imaginaba.. gracias a los dos.

Una cosa, desde el total desconocimiento. En el router abro un puerto a una IP, ya no el puerto para Wake On Lan sino otro distinto... pero sigue cerrado si lo compruebo desde alguna web. Es indiferente el puerto que sea ya que es que no esta en la tabla ARP?

Esta noche llevaré la torre a probarla en una red que si que funcionaba despertarla online y tan solo tengo que asignarle la IP fija que tiene el puerto abierto, por quedarme tranquilo vaya...
Hola @frank1986,

Si el DS120j lo tienes en la misma red que el equipo que quieres levantar puedes utilizar el programador de tareas del NAS para hacer un Wake On Lan de cualquier otro equipo de la red.

Simplemente agrega una nueva tarea programada con este comando:

synonet --wake direccion-mac-del-equipo-a-levantar eth0

Yo tenia el mismo problema que tu y la única solución como habéis comentado es el tema de la tabla ARP que en mi caso no se puede modificar de forma "fácil", por lo que esta fue la solución que me valió para levantar un equipo de esta red.

Para que la terea no se ejecute siempre, ponle una fecha de ejecución y marca la opción de "No repetir", de esta manera solo se ejecutará esa vez y luego ya tu la podrás ejecutar manualmente cuando quieras para levantar el equipo.

Comenta si te ha servido esta solución.

Un saludo.
Evil_forces escribió:Hola @frank1986,

Si el DS120j lo tienes en la misma red que el equipo que quieres levantar puedes utilizar el programador de tareas del NAS para hacer un Wake On Lan de cualquier otro equipo de la red.

Simplemente agrega una nueva tarea programada con este comando:

synonet --wake direccion-mac-del-equipo-a-levantar eth0

Yo tenia el mismo problema que tu y la única solución como habéis comentado es el tema de la tabla ARP que en mi caso no se puede modificar de forma "fácil", por lo que esta fue la solución que me valió para levantar un equipo de esta red.

Para que la terea no se ejecute siempre, ponle una fecha de ejecución y marca la opción de "No repetir", de esta manera solo se ejecutará esa vez y luego ya tu la podrás ejecutar manualmente cuando quieras para levantar el equipo.

Comenta si te ha servido esta solución.

Un saludo.


Gracias @Evil_forces !!! En cuanto pueda y esté por casa lo pruebo porque me hace falta, acabo de volver de probar la torre en la otra conexión y si, funciona perfectamente. Es que el router que tengo es el que dan y es una compañía local, que es la única que proporciona por aquí fibra y como lo que me pusieron es solo un router donde se conecta también en él el cable de fibra directamente pues claro....

En cuanto lo pruebe te digo haber si funciona lo del NAS.
@Evil_forces buena solución esa

@frank1986 lo que comentabas de los puertos cerrados:

Es muy común que se hable de "abrir puertos" cuando configuramos reglas NAT en un router. Pero eso no abre puertos.....se dice así porque por defecto las conexiones entrantes desde internet son denegadas, y con esto abrimos entradas, pero no es correcto. Un puerto está abierto o no en el equipo servidor que tiene una aplicación que abre un socket y pone un puerto en estado "listening". El router es un equipo de tránsito, no tiene puertos abiertos ni cerrados (bueno, sí los tiene, los de gestión del propio router y sus protocolos, pero esto no aplica para lo que estamos hablando).

Por eso, cuando hacemos una regla NAT, no abrimos ningún puerto. Simplemente le decimos router: "cuando me llegue un paquete IP por la interfaz WAN y puerto x, vas a manipular la cabecera IP para cambiar la IP destino a esta que te digo, y el puerto destino a este que te digo. Apúntate está traducción para deshacerla en la IP origen de los paquetes de respuesta, que si no la liamos porque presentaría una IP local como origen al devolver el paquete a internet".

Si dicha IP/puerto que he configurado son de un equipo apagado, obviamente el puerto va a verse como cerrado, de ahí que las webs te lo den todo cerrado
Gran explicación @Dracot, aunque aquí faltaría además añadir el tema de que como ha dicho un compañero anteriormente el WoL va en capa 2 y por lo tanto no busca una IP en concreto sino una MAC y por eso el tema de la tabla ARP para decirle además al router "quillo, que cuando te llegue una petición para esta IP sepas que su MAC es esta y que no se te olvide" XD

Yo creo que si hace lo del programador de tareas en el NAS le va a funcionar perfectamente, ya que se encuentra dentro de la misma red y con llegar desde fuera al NAS y disparar el proceso la petición llega desde dentro de la propia red y no desde fuera por lo que no va tener ningún problema, pero a ver que nos comenta el amigo.

Un saludo.
Evil_forces escribió:Gran explicación @Dracot, aunque aquí faltaría además añadir el tema de que como ha dicho un compañero anteriormente el WoL va en capa 2 y por lo tanto no busca una IP en concreto sino una MAC y por eso el tema de la tabla ARP para decirle además al router "quillo, que cuando te llegue una petición para esta IP sepas que su MAC es esta y que no se te olvide" XD

Yo creo que si hace lo del programador de tareas en el NAS le va a funcionar perfectamente, ya que se encuentra dentro de la misma red y con llegar desde fuera al NAS y disparar el proceso la petición llega desde dentro de la propia red y no desde fuera por lo que no va tener ningún problema, pero a ver que nos comenta el amigo.

Un saludo.

Fui yo el que comentó lo de la capa dos. Aquí no metí en eso porque le hablaba más en general de por qué "abrir puertos en un router" es más "traducir campos de la cabecera IP en un paquete".

Tengo cierta tendencia a escribir tochos muy grandes e intento controlarme y no explicar de más XD XD . Pero cuando quieras nos explayamos en el maravilloso mundo de las capas OSI o del ARP, ese gran olvidado que es con diferencia, para mí, el más importante de los protocolos que usamos en el día a día.
Jajajajaja no me había dado cuenta de que habías sido tu el que lo había comentado.

Se nota que controlas mucho del tema. Enhorabuena!!! [beer]
Solo decir que si tienes un dispositivo Echo Dot en casa, puedes instalarle la aplicacion wolskill y desde el telf decirle que encienda el PC.

Al tener el echo dot en casa, sera quien envie el wakeonlan (estando dentro de la red local).
Se me olvido preguntaros una duda que me surgió cuando probé el pc el otro día en la red que si funciona. Una vez que estaba en la otra red y probado que funcionaba perfectamente, por qué si comprobaba el puerto 9 con el portchecker por ejemplo siempre decía que estaba cerrado? A pesar de que si que despertaba el PC con la IP pública.
frank1986 escribió:Se me olvido preguntaros una duda que me surgió cuando probé el pc el otro día en la red que si funciona. Una vez que estaba en la otra red y probado que funcionaba perfectamente, por qué si comprobaba el puerto 9 con el portchecker por ejemplo siempre decía que estaba cerrado? A pesar de que si que despertaba el PC con la IP pública.

Como ya se ha explicado en post anteriores, Wake on LAN funciona a nivel de Mac. El PC a encender, ni siquiera tiene activa la pila del protocolo IP

Sin meternos en el modelo completo de capas OSI, que serían siete, te resumo que:

- capa 1: capa física, cables, puertos, etc
- capa 2: capa de enlace, a nivel MAC
- capa 3: capa de red, a nivel IP
- capa 4: capa de transporte, protocolos TCP y UDP, puertos

Dado que Wake on LAN funciona en capa 2, no levanta realmente ningún puerto para ningún servicio, para eso se necesita que el protocolo/aplicación trabaje en una capa 4 o superior


Un saludo
Tampoco es que sea un experto en el tema, pero, pensando en voz alta:

- el problema es que al router le llega un paquete de capa 3, con una ip de destino (la del router) y un puerto de destino (udp 9, imagino). El router ha de saber qué hacer con ese paquete, con lo que
1) debes tener en el router el port forwarding activo, es decir, lo que creo que tú llamas "abrir puertos". Que cuando llegue un paquete a la ip del router y puerto udp 9, el router lo redireccione a una ip interna (la de tu ordenador, que tendrá una ip fija, y el mismo puerto udp)*
2) el router traslada la ip_router:puerto9 a la ip_pc:puerto9, y se la pasa al switch interno del propio "router" (el cacharro de conexión a internet es router+switch a la vez, incorpora capa2).
3) en esa parte de switch, entra en funcionamiento la tabla arp. Si tienes en una boca del switch una entrada con la ip_pc asociada a la mac_pc (tabla arp), automáticamente envía ese paquete por esa boca y hará que se encienda el ordenador

Si dices que desde tu propia red se puede arrancar, el punto 3 funciona correctamente.
Si dices que desde fuera no funciona (pero que en otra red sí que lo hace), probablemente lo que falle sea el punto 1.

Podrías poner un pantallazo de cómo tienes configurado el router para la redirección del puerto? Y una cosa...abres los puertos 7 y 9 UDP, verdad?

Saludos!

*con esto puedes configurar otros puertos desde internet, por ejemplo, ip_router:puerto9 (redireccionando a ip_pc:puerto9) para arrancar el pc, ip_router:puerto45000 (redireccionando a ip_nas:puerto9) para arrancar el nas, ip_router:puerto46000 (redireccionando a ip_consola:puerto9) para arrancar la consola, etc.. (ejemplos)
Yo estoy casi, casi convencido que en la red donde dice el compañero que SI le funciona el WoL si mantiene el PC un largo periodo de tiempo apagado (vamos a poner 1 o 2 horas) le dejará de funcionar.... Todo esto si no ha colocado la entrada de dicho PC en la tabla ARP del router de esa red, claro está.

No hay manera de que esto funcione si el router no tiene asignada la MAC del equipo en cuestión en su tabla ARP de forma estática.

Tener en cuenta que esta tabla ARP se borra de manera automática cada cierto tiempo y por lo tanto si el PC permanece apagado y no se renueva esto deja de funcionar cuando se manda el paquete WoL desde el exterior, por que no hay manera de que el router reciba la petición en capa 3 y la pase a capa 2 sin este dato de la MAC del PC.

Por lo tanto al amigo @frank1986: ¿has probado a mantener el PC apagado en la red que dices que si que te funciona por un largo periodo de tiempo, o solamente has realizado las pruebas habiendo estado instantes antes con el PC encendido en dicha red? Como te digo, te puedes llevar una sorpresa si dejas el PC apagado o incluso si apagas el propio router y vuelves a probar. Verás que no te funcionará al igual que en tu red actual que tienes ese problema.

Por otra parte, la única solución viable a este problema (a parte claro está de que coloques la entrada ARP) es que la petición llegue desde el INTERIOR de la propia red. De esta manera SI que trabajas en capa 2 ya que ambos equipos estan en la misma red y estos paquetes se transmiten sin problema y sin pasar por el "filtro" del router.

Como soluciones aportadas en este hilo ya sabes, bien utilizar tu NAS para poder hacer esto o bien como dijo otro compañero un dispositivo echo o similar que tenga la skill instalada. En todo caso como ves ambos aparatos tienen que estar en la misma red.

Un saludo y espero que nos comentes si has encontrado una solución factible para ti.
No liemos capas @kajoona

La parte de switch no usa ni necesita arp. De hecho no puede hacerlo. Entiendo que te quieres referir a la interfaz de capa 3 de LAN del router, ya que un switch por definición es capa 2 y, por lo tanto, para él las IPs no existen.

Aparte de esto, en la misma LAN le funciona porque ahí todo el camino del Magic Packet de WoL es capa 2. Por lo que insisto, en esa capa arp no interviene, da igual que haya caducado en la tabla del router. En la misma LAN, el Magic Packet tiene una difusión Broadcast a la Mac FF:FF:FF:FF:FF:FF, y un campo con la Mac del equipo a despertar repetida 16 veces ( más un opcional de password que dejamos fuera porque no va a estar utilizando).

El Wake on LAN ni usa ni necesita UDP, ni puerto 9, ni nada de capa OSI 3 o superiores. De verdad creedme que es así, y olvidaros del arp y demás protocolos de capa superior cuando hablamos del funcionamiento en la misma LAN.


Entonces, me diréis, ¿Por qué el consenso en internet es que para usar WoL hay que hacer NAT a UDP puerto 7 ó 9? Pues es una de las maneras, pero no es que haya que hacerlo. Lo que hay que conseguir es que llegue una trama ethernet al equipo en cuestión y con el contenido en cuestión. Y eso, desde fuera de la LAN, solo podemos hacerlo usando protocolos de capa superior, nos tenemos que meter en IP (capa 3) y puertos (capa 4)

TCP descartado, porque va a necesitar, antes de enviar ningún dato de aplicación con el contenido que queremos, que se haga la negociación de three-way handshake, los famosos SYN-SYNACK-ACK del TCP (y de casi cualquier inicio de protocolo confiable basado en sesión). Como nuestro equipo está apagado y no levanta la pila IP, solo la capa 2, no podríamos hacer el three-way handshake previo, así que no lo podemos usar para esto

Nos quedamos con UDP. ¿En qué puerto? Pues realmente NOS DA IGUAL. Solo queremos que la trama de capa 2 llegue al PC en cuestión, las capas superiores las vamos a usar para cruzar el router, por lo que el puerto (e incluso la IP) que haya en los campos de destino nos van a dar igual, mientras el contenido de la trama ethernet y el datagrama del Magic Packet, es decir la capa 2, llegue como queremos al PC apagado.

¿Qué son entonces los puertos 7 y 9? Pues el 7 es un puerto de "echo", simplemente de verificación de que un equipo está vivo, y el 9 un puerto de descarte, cuando una máquina recibe un paquete por ese puerto, lo descarta sin responder nada. Se usan para esto porque por un lado no sé suelen usar para otra cosa, y por otro, son implementaciones tan antiguas que es casi impensable que algo no admita su uso.

Una vez aclarado esto, volvemos al escenario original, en el que todo esto falla desde internet porque el router, para componer la trama capa 2, si el paquete viene desde fuera, sí que lo va a hacer utilizando la tabla ARP, a él le dicen que envía un unicast UDP a una IP y tiene que saber qué MAC le corresponde para construir la trama. Y no puede hacerlo porque el equipo apagado desaparece de la tablet arp en 20 segundos de inactividad (u otro plazo según la implementación de arp en el sistema. En todo caso, como mucho 2 minutos)
Brillante explicación @Dracot.

Yo ya si alguien no lo entiende con esto no se... jejejejejeje

Un saludo.
@Dracot Lo he explicado a grosso modo. Si el muchacho tiene esos problemas no voy a soltarle un tocho post para liarlo más (no crea que sea yo quien haya liado más). Solo quería pedirle un pantallazo para ayudar, no para demostrar quien sabe más.

Sin acritud.

Suerte.
Lo siento, es que no estoy muy puesto en esto.

Os voy explicando, da la casualidad que había dejado el PC en la otra conexión y apagado, funcionando el Wake On Lan y lo he probado despues de 24 horas mas o menos y si, lleváis razón, no me funciona ahora y ni se ha ido la luz, ni he reiniciado router ni nada... pu** mierda router...

Sin tocar nada y sin que funcionara me he ido al NAS, he configurado una tarea como @Evil_forces me ha indicado y ha funcionado perfectamente conectado en otra red al NAS y ejecutando la tarea (al principio no funcionaba pero era por el usuario que había seleccionado que, aunque había seleccionado el mio, solo funciona se ve con el usuario root).

Pudiéndolo encender con el NAS estoy más que satisfecho. Aprovecho también para preguntar, en el NAS puedo crear un acceso directo a su escritorio para ejecutar la tarea programada? Por sencillez y con un click vaya, no por nada...

Gracias de verdad a todos, porque a mi lo único que se me había ocurrido era comprar una raspberry pi y de alguna forma conectarme en remoto y ejecutar algún comando para encenderlo, pero ya tenía que comprarla, dejarla encendida, más aparatos.....

Adjunto foto de la parte del router donde abro los puertos 9 y 7 para la IP local 192.168.1.2. Es el router y conexión donde nunca lo he podido hacer funcionar ni siquiera abrir un puerto. Ya es por ver si los pudiera abrir o algo, o ver si es que yo lo hago mal.

Adjuntos

Captura abrir puerto.PNG (29 KB)

Captura abrir puerto
Hola @frank1986,

Me alegro que finalmente hayas encontrado una solución al problema.

En cuanto a lo de crear el acceso directo, creo que no es posible. Se puede crear acceso directo a carpetas o programas en el escritorio, pero directamente a la tarea creo que no. De todas formas busca en los foros de Synology para ver si alguien puede ayudarte mejor ahí.

En cuanto a tu último párrafo sobre el tema de los puertos... No le des más vueltas amigo, de verdad. El compañero @Dracot ha dado varias explicaciones en este hilo de por que no te va a funcionar y como es el funcionamiento del protocolo WoL. Lo tienes todo super bien explicado, de verdad. No tienes nada que hacer ni con este ni con ningún router del mundo si no tocas la tabla ARP.

Bueno, pues nada, me alegro mucho de que hayas resuelto el problema.

Un saludo.
Gracias a todos por molestaros en explicarme todo al detalle, de verdad.

Doy el tema por solucionado.

Un saludo

[360º]
Hola de nuevo @frank1986,

Para el tema del acceso directo he encontrado esta utilidad https://github.com/vletroye/Mods que te permite crear un paquete (en tu caso con el script para despertar el pc) y luego subirlo a tu NAS con lo que podrás crear un acceso directo a ese paquete que ejecute el WoL.

Puedes leer la información de como crear lo que necesitas en este hilo: https://community.synology.com/enu/foru ... ort=oldest donde justamente se busca lo mismo que quieres hacer tu, es decir, despertar un pc con WoL.

Creo que con estos dos enlaces tienes suficiente para lo que necesitas.

Un saludo.
22 respuestas