Mi trabajo diario generalmente comienza abriendo una conexión SSH a un servidor, ejecutando una imagen acoplable (con RStudio Server o Jupyter) y analizando datos o programando directamente en el navegador. Siempre fue conveniente así hasta que tuve una desconexión repentina el mes pasado. De repente, todo deja de funcionar y perdí varias horas tratando desesperadamente de arreglarlo. Cuando llegué a casa, me di cuenta de que la electricidad en mi apartamento era muy inestable debido a una pequeña construcción en el piso de arriba. Por supuesto, una solución simple es obtener un UPS (Fuente de alimentación ininterrumpida), pero me fascinó la idea de que tal vez pueda encender mi servidor a través de Internet. Eso es como tener el interruptor de encendido del servidor conmigo todo el tiempo. Sería genial, especialmente cuando estoy fuera por un período prolongado y no quiero gastar dinero en las facturas de energía. Esta historia es sobre cómo lo he hecho. Puede echar un vistazo a mi configuración de red final primero.
Paso 1 : Satisfacer los requisitos de hardware
En la mayoría de las placas base, hay una función llamada "Wake-on-Lan" (WOL). WoL funciona enviando un paquete de datos llamado Magic Packet™ a una máquina de destino. Cuando se recibe el paquete, la interfaz de red de la máquina de destino activa el resto de la computadora. Sin embargo, me di cuenta de que no puedo reactivar mi servidor a través de su interfaz inalámbrica (estoy usando un adaptador inalámbrico USB). Resultó que el Magic Packet debe enviarse al puerto Ethernet integrado de la placa base, ya que es lo único que está despierto cuando se apaga toda la máquina. Arreglé la situación usando un repetidor Wifi y lo conecté al servidor a través de un cable Ethernet. Puede omitir este paso si su máquina está utilizando una conexión por cable.
Paso 2 : Haga que Wake-On-Lan funcione en Lan.
Como sugiere el nombre, WOL está diseñado para activar una máquina a través de una red local. Por lo tanto, debe estar en la misma red que su dispositivo de destino para que funcione. En este paso, intentaremos hacer exactamente eso. Primero, debe activar la función WOL en su placa base. Ingrese a la configuración del BIOS y busque "Despertar en evento PCI" o "Despertar en LAN" y habilítelo. En segundo lugar, en Ubuntu, debe conocer su interfaz predeterminada, verificar si es compatible con WOL y activar la función. Todo el proceso se puede hacer de la siguiente manera:
$ ruta #Obtenga el nombre de la interfaz predeterminada, por ejemplo: eth0 $ sudo ethtool eth0#Busque la línea "Admite Wake-on: g", lo que significa que admite WOL$ sudo ethtool -s eth0 wol g #Habilitar WOL
Para que la configuración se mantenga después de reiniciar, debe agregar el último comando anterior a la configuración de la interfaz en etc/network/interfaces . Puedes leer más aquí .
Ahora, vamos a probarlo. Puede usar una aplicación móvil llamada "Wake-on-Lan" en Android (hay aplicaciones similares para iOS, pero no las he probado). Puede escanear automáticamente su red local y enumerar todos los dispositivos conectados. Simplemente busque su máquina, agréguela y luego puede enviarle el paquete mágico cuando lo desee. Intente apagar su máquina objetivo y actívela con su teléfono.
Puede agregar el dispositivo manualmente si conoce su dirección mac y su dirección de transmisión. Son 9E:65:F9:0E:29:FB y 192.168.0.255 en mi caso. Puede usar el comando ifconfig para encontrar esa información. Tenga en cuenta que necesitará su dirección mac para activar su máquina a través de Internet.
Paso 3 : Haga que Wake-On-Lan funcione a través de Internet.
Tenga en cuenta que su enrutador debe tener una IP estática (es decir, 82.164.3.27 ) para completar este paso. Hay muchas soluciones para enviar el paquete mágico a través de Internet. Los he enumerado a continuación de la solución más fácil a la más difícil (a veces la única):
Primera solución : si su enrutador admite el reenvío del paquete mágico (Puerto 7 o 9 UDP), tiene suerte. Puede reenviar cualquier paquete desde el puerto 7 o 9 UDP a su dispositivo de destino. Algunos enrutadores incluso permiten el reenvío de paquetes de difusión. Puede usar este sitio web para activar su servidor. Sin embargo, que yo sepa, la mayoría de los enrutadores comerciales populares no son compatibles con esto (mi caso). Recuerde hacer una reserva de DHCP para su servidor, para que su IP no cambie después de volver a conectarse.
Segunda solución : puede verificar si puede instalar un firmware mejor para su enrutador. Con fines de marketing, muchos productores de enrutadores ocultan funcionalidades en sus productos. Puede instalar un firmware de terceros para desbloquear todos estos. Recomiendo encarecidamente el OpenWrt . Compruebe si su enrutador es compatible con OpenWrt aquí .
Tercera solución : si su enrutador no es tan bueno, necesitará un experto. Es un dispositivo que está siempre encendido y se conecta a su red local. A continuación, puede conectarse mediante SSH a su información privilegiada a través de Internet y dejar que envíe el paquete mágico por usted. En mi caso, uso una Raspberry Pi 3 barata (que ya uso para controlar otras cosas). Estoy usando OpenWrt y ejecuto el comando etherwake de la siguiente manera:
$ etherwake 9E:65:F9:0E:29:FB eth0
El primer argumento es la dirección mac de la máquina de destino, mientras que el segundo argumento es la interfaz de red del usuario interno que enviará el paquete. Debería ser su interfaz predeterminada. Puedes consultar este enlace para más detalles. Tenga en cuenta que su información privilegiada puede ser cualquier dispositivo, ejecutando cualquier sistema operativo. Siempre que pueda acceder a él mediante SSH a través de Internet, debería funcionar. Recuerde configurar el reenvío de puertos para el puerto SSH del interno, de modo que pueda acceder a él desde cualquier lugar.
Eso es todo. Espero que disfrutes la historia. Deja un comentario si tienes problemas para seguirlo.