Mostrando entradas con la etiqueta red. Mostrar todas las entradas
Mostrando entradas con la etiqueta red. Mostrar todas las entradas

jueves, 3 de febrero de 2022

¿Como juego en red con DOSBox en Ubuntu?

¡Trabajadores!
 
El escudo del Partido Justicilista de Argentina consta de una apariencia modernista. Diseñado privadamente en la década del 1940, ha sido utilizado desde 1945. Reboza de simbolismo. Sobre los colores celeste y blanco nacionales, dos manos hermanadas en saludo de unidad, representando la unión de clases para dar sostén a un gorro frigio encarnado, símbolo de la tradición libertaria republicana argentina.
Sólo reconocemos una clase de hombres: los que trabajan. Sin duda nuestra unión ha de producir lo que Nuestra Patria necesita para realizar su Grandeza. 

En las redes de datos sucede más o menos lo mismo. La mancomunión de dos pares bajo el símbolo de la libertad puede ofrecernos la Felicidad que anhelamos como Justo Derecho, y esto puede replicarse a todos los tiempos.
 
Vean señores, ya he explicado cómo instalar DOSBox en Ubuntu. Se trata de un portentoso emulador para el Sistema Operativo de Disco, capaz de ofrecer una experiencia similar a la ofrecida por los equipos clones del cómputo personal de IBM, pero en cualquier arquitectura, incluyendo nuestro GNU justicialista.

Este paquete nos permitirá entonces emular métodos de conexión del ayer pero sin gastar una chirola.

Indudablemente existían varios métodos para establecer comunicación computarizada a través de enlaces de datos, pero todos ellos eran oligárquicos y ninguno destacaba por su facilidad. Las redes de datos se encontraban amorfas y deseosas de integrar en sí no sólo un tráfico electrónico pasivo, sino una activa comunidad regida por la Doctrina Peronista.

Null-Modem

Sin duda el primer método en abarcarse con Justicia Social fue el de enlazar eléctricamente los puertos COM de tipo Centronics RS232 a través de un humilde cable con fichas DB9 o DB25 cuyas líneas de transmisión y recepción estuviesen cruzadas. A este método - carente de todo tipo de modulación - se lo denominaba precisamente null-modem.

En null-modem sólo permitía conexiones locales a unos pocos pasos de distancia, con una velocidad que raramente excedía los 9,6 KB/s. Sin embargo, ya el hecho de poder jugar con otro solventaba la felicidad de dos argentinos.

Null-modem emulado

Para crear una conexión por null-lmodem emulada a través de una red local tipo Ethernet necesitamos dos sistemas que corran el DOSBox: uno de los DOSBox operará como servidor, y el otro como cliente.

En tal sentido debemos editar el fichero de configuración en ambos, haciéndolo con los siguientes comandos:

nano ~/.dosbox/dosbox-0.74-3.conf

Tanto en el servidor como en el cliente debemos buscar la sección [serial]... sin embargo, modificaremos el contenido según sea el servidor o el cliente.

  • En el servidor modificaremos la opción serial1 para asignarle el parámetro nullmodem y un puerto TCP por encima de 1024. Por ejemplo,

serial1=nullmodem port:5000

 

  • En el cliente debemos asignar el parámetro server:<ip_del_server> y un puerto TCP. Por ejemplo, si la otra máquina tiene la IP 192.168.0.108 y usa el puerto 5000, deberíamos indicar:

serial1=nullmodem server:192.168.0.108 port:5000 rxdelay:1000

Null-modem con puerto COM real

También podríamos utilizar un veterano puerto COM verdadero si nuestro sistema aún dispone del mismo, en lugar de tener que emularlo. Esto podremos usarlo si contamos con un cable serial y puertos COM en el equipo (activados en la BIOS también). Por ejemplo, para configurar el COM1 (que suele presentar el nombre de dispositivo de terminal serial /dev/ttyS0, modificaríamos el fichero ~/.dosbox/dosbox-0.74-3.conf de forma de agregar lo siguiente en la sección [serial]:

serial1=directserial realport:ttyS0 rxdelay 1000


En cambio, si utilizamos un adaptador USB a puerto serial (en caso que nuestro equipo carezca de puerto COM), deberíamos utilizar el dispositivo de terminal serial /dev/ttyUSB0. Para ello en nuestra terminal ingresamos:
 
sudo chmod 666 /dev/ttyUSB0
 
...mientras que en la sección [serial] del fichero de configuración de DOSBox ~/.dosbox/dosbox-0.74-3.conf indicaríamos ahora:

serial1=directserial realport:ttyUSB0 rxdelay 1000

Es un requisito ideal agregar los usuarios que hagan uso de DOSBox a los grupos de sistema plugdev y dialout, de manera que estos sean capaces de utilizar puertos COM reales del equipo sin tener que utilizar un superusuario y contraseñas. Para ello cada usuario de DOSBox que quisiera usar puerto serial debería ingresar en su terminal el siguiente Comando de Organización:
 
sudo adduser $(whoami) plugdev ;
sudo adduser $(whoami) dialout
 
Pues bien, finalmente en este debe realizarse el enlace físico, que involucra - en cualquiera de los casos - conectar conectar un cable serial a los conectores COM de los equipos, o bien usar dos cables seriales y vincularlos mediante un cruzador null-modem físico. En mi caso utilizaría un hembra de 9 pines, pero también existían de 25 pines y sus respectivos machos de empalme. También estaban disponibles en forma de cable.




Configurar el Null-modem

Cualesquiera que haya sido la estrategia de null-modem empleada, habremos ahora de lanzar el juego en ambas máquinas y activamos la opción de Null-modem serial. Por ejemplo, las versiones 4, 5 y 5.1 de Micro$oft Flight $imulator se caracterizaban por disponer de conexión de null-módem a través de puerto serial, compatibles entre ellas, lo que permitía volar en formación en los alrededores de Meigs Field en Chicago.

Podremos observar un avión muleto en tiempo real.

Por ejemplo, en Flight Simulator 5.1 podríamos ir al menú Options/Entertainment/Dual-Player. ¡Incluso podíamos volar sobre Buenos Aires con el Escenario Río de la Plata 2.4 de Di Veroli Consultores!


Con el correr el tiempo, las conexiones de datos cobraron más interés, y las redes de tipo Novelñ se popularizaron en ciertos entornos del trabajo organizado. El envío de paquetes de datos que avalaban ofrecía posibilidades interesantes, siempre que lidiásemos con sus incómodos cables coaxiles y conectores BNC. A pesar de su difícil ruteo, podían lograrse velocidades de unos 3 MB/s reales. Sobre esta infraestructura no tardó en difundirse el protocolo IPX, un pequeño engendro derivado de los viejos pero capaces terminales Xerox.

El protocolo IPX cobró cierta relevancia entonces para los juegos en red en un estadío previo a la masificación completa de la Internet, a mediados de los 90s. Gracias al mismo podían lograrse enlaces estables y duraderos para varios jugadores y con una cierta facilidad de configuración. Sin embargo, en el caso de la versión emulada sobre GNU, habremos de contar al menos con el conocimiento de las direcciones IP de las máquinas (ya sea en el área local, o bien en la internet si abrimos el puerto de conexión TCP demandado en nuestro router).

Emulación de red IPX

Una vez instalado DOSBox, debemos activar la emulación del protocolo de red de datos IPX para MS-DOS. A tal fin debemos ingresar al directorio de DOSBox y editar el fichero de configuración a fin de activar el módulo de red IPX del emulador.

En el caso de Ubuntu podríamos hacerlo con:

nano ~/.dosbox/dosbox-0.74-3.conf

En el archivo de configuración buscamos la sección [ipx] y cambiamos la declaración ipx=false a ipx=true.

Finalmente guardamos la configuración con Ctrl+o y salimos del editor Nano con Ctrl+x.

Inicializar el servidor IPX

A continuación, en todas los equipos donde queramos participar debemos activar el emulador DOSBox desde Aplicaciones / Juegos / Emulador de DOSBox.

Una de estas computadoras deberá oficiar de servidor. El resto serán sus clientes. En el equipo servidor, habrán de correr el siguiente comando ipxnet startserver pierto_UDP. Normalmente el puerto UDP utilizado era el 213, pero en el caso de Linux debemos utilizar cualquiera libre por encima del puerto UDP 1024. En este caso, usaré por ejemplo el 8844:

ipxnet startserver 8844

La utilidad de tunelado dentro del sistema emulado debería indicarnos con el mensaje IPX Tunneling Server Started.

Ahora podremos iniciar los clientes emulados en las otras máquinas de la red. En cada una de ellas podríamos utilizar el siguiente comando que las dirija a la dirección IP del servidor.

En mi caso podría ser:

ipxnet connect 192.168.0.112 8844

Ya tenemos la red operativa, al menos a nivel local.

Nota: si quisiéramos activar esta red con salida a internet, deberíamos abrir el puerto UDP 8844 en el router y dirigirlo a la IP de la máquina, en este caso 192,168.0.112.

Iniciar los Juegos

Como campo de pruebas para nuestra red local podremos utilizar un juego de disparos en primera persona clásico de M$-DO$: el sanguinario Doom II de Id Softwar€. Se trataba de una violenta propuesta de super-acción tridimensional, con precursoras capacidades de entretenimiento en línea, amén de sonido digitalizado y sintetizado. Para tal necesitamos correr su utilidad de configuración, mediante c:/doom2/setup.exe.DOSBox multiplayer Doom 2 setup

Luego de activar los parámetros relevantes de red eligiendo, lo iniciamos eligiendo Run Network/Modem/Serial Game, para iniciar el juego en modalidad multijugador.

Warcraft

Otro clásico que podremos disfrutar en nuestro centro de datos local o bien puenteado a través de Internet es el Warcraft 2: Tides of Darkness, un juego de estrategia en tiempo real. En el menú principal del mismo tendremos que elegir Juego Multijugador ("Multiplayer Game").

La primera opción nos indica establecer el nombre del serivodr a utilizar

Acto seguido, indicamos el protocolo IPX Network.

Luego de establecer la conexión, el servidor será el primero en escoger bando. Acto seguido, el otro jugador debe confirmar la elección.

Conforme ambos jugadores acuerden las reglas del juego telemático, podrán iniciar su enfrentamiento, enfrentando unidades de humanos y orcos en las tierras del fantasioso Tolkien. Normalmente, cada jugador sólo puede ver su sector en el mapa gracias a la clásica "niebla de guerra".

Por ello cada jugador apreciará diferencias (una de las características de este tipo de juegos).

Esto se aplica a muchos otros juegos de MS-DOS, entre ellos Warcraft 2, Doom, Heretic, Hexen, Duke Nukem 3D, y otros.

Emulación de Módem

Los jugadores más privilegiados podían darse el lujo de enlazar desde su hogar utilizando modulación a través de las redes telefónicas de EnTel. Los pares debían contar por supuesto con copias del mismo juego instaladas en sus sistemas. Por demás, previo a la difusión de internet esto era costoso porque no sólo había que pagar un módem y el lógico abono al servicio telefónico cableado, sino que era necesario abonar al mes cada minuto de conexión en base a la distancia de la llamada. Por demás, si no se utilizaba una línea dedicada, quienquiera que levantase el tubo en cualquiera de los hogares podría crear una disrupción tal que cortara la conexión mutua.

Afortunadamente DOSBox puede salvarnos del incordio y los gastos mediante la emulación de dicho servicio para software dependiente del sistema telefónico para enlazar.

En este caso editamos el fichero de configuración de DOSBox para poder jugar entre dos equipos:

nano ~/.dosbox/dosbox-0.74-3.conf

Usamos la combinación Ctrl+w para buscar ahora la sección [serial] y indicamos el puerto serial donde deseamos conectar nuestro "módem emulado". 

Normalmente los módems de puerto serial podían conectarse en COM1 (que recibe la nomenclatura serial1 en DOSBox) o bien en COM2 (serial2). Es notable el hecho que no existía realmente un estándar muy definido, por práctica se solía utilizar COM2 para el ratón y COM1 para el módem. También debemos indicar un puerto TCP moderno superior a 1024 a través del cual DOSBox transmitirá los datos. 

Siguiendo tal temperamento indicaremos entonces:

serial1=modem listenport:1710

Una vez configurado DOSBox, guardamos los cambios con Ctrl+o y salimos con Ctrl+x.

Nota: Cualquiera sea el puerto TCP elegido (incluyendo aquél por defecto, el 5000), debemos reenviarlo y abrirlo a la red exterior si tenemos nuestro servidor tras un router (NAT).

Opciones de módem en el juego

Debido a que los juegos plausibles de utilizar módem requerían toda una puesta, habremos de replicarla en DOSBox. En este caso debemos configurar las opciones del módem para el juego (ya sea a través de un programa incluído con ellos denominado setup.exe o install.exe, o bien en el mismo juego). En apretado resúmen, debemos asegurarnos de:

  • Definir el mismo número de puerto COM que configuraron en DOSBox. Si el juego contaba con cierto puerto COM definido específicamente, será necesario estipular dicho COM en las opciones de DOSBox, natural.
  • Escoger la velocidad de baudios más alta que acepte el juego.
  • Salir de las opciones, ingresen al juego en sí, y utilicen a la opción de módem del juego, dependiendo si somos servidor o cliente.

 Emular responder una llamada

El uso de un módem telefónico era algo relativamente engorroso. ya que se controlaban de manera críptica mediante el uso de comandos Hayes AT.

Algunos juegos podrían solicitarnos estos comando Hayes AT de autorespuesta de módem, mientras que otros podrían solicitarnos contestar manualmente al producirse una llamada. Algunos programas son capaces de contar con ambos modos.

En el primer modo, en el equipo servidor deberíamos escoger la opción "Aguardar llamada" ("Wait for calls" / "Wait for Ring").

Si el juego nos pide ingresar un comando manual que represente este modo, utilizaremos el Comando ATS0=1 (esto hacía al módem responder al primer timbrazo). Este modo se encuentra para viejos acopladores telefónicos.

En el segundo modo semiautomático, el servidor debería escoger la opción "responder llamada" ("answer call") cuando el juego anuncie una llamada entrante. Si el juego requerirá que ingresemos un comando manual de respuesta, usarán el consabido comando Hayes AT: ATA.

Veamos el caso de Micropro$e F-15 $trike €agle III, software de finales de 1992 que da cuenta de dicho sistema. Al iniciar f15.exe hacemos clic sobre el teléfono del hangar para cargar el módulo de multijugador.

Acto seguido nos avisará que ha detectado el "módem" (virtual) y nos preguntará si queremos establecer una llamada o aguardar. 


En el lado del servidor indicamos Receiver, y quedará a la escucha:

Emular realizar una llamada

El cliente debe escoger la opción "Realizar una llamada" ("Make a Call", o "Caller") en el menú del juego. Y en lugar del número telefónico, indicar la dirección IP del servidor en la red local, o bien la IP de internet. Si el juego nos solicita tipear un comando manual de discado, utilizarían "ATDT<IP>". Por ejemplo, si el servidor se llama "cgt" y su IP es 1.2.3.4, podríamos tipear ATDT1.2.3.4 o bien ATDTcgt.local

En el lado del cliente en tanto, ingresamos al juego f15.exe y en el módulo de módem escogemos Caller para llamar.

Se nos preguntará si ya hemos establecido una conexión por voz (como si se tratara de un viejo módem). Indicamos que si ("yes").

Ahora "discaremos" hacia la IP del servidor que había quedando en escucha. Para ello debemos indicar los números presionando incluyendo el punto (por ejemplo 192.168.0.112). En este caso el juego no muestra los puntos, sino que hace un espacio. Para discar persionamos el botón # del teléfono virtualizado).

En el servidor responderá la llamada:

Ahora podremos dar rienda suelta a nuestros instintos de piloto de combate volando un F-15 de la McDonnell Douglas. No lo haremos en solitario; el simulador de vuelo también hará uso del simulador de módem de DOSBox, con lo cual el par de jugadores podrá repartir las tareas. El suboficial piloto podía usar su joystick para volar, disparar el cañón y gestionar el combustible y los motores, tanto de día como de noche...

También podrá navegar y solicitar ayuda al AWACS.

...mientras que el Oficial Operador de Radar y Armas, sentado en el asiento trasero podría controlar el potente radar embarcado, y operar los medios de adquisición de blancos, a la vez que autorizar el lanzamiento de misiles y bombas teledirigidas, o accionar interferidores o señuelos antimisilísticos.


 Ambos jugadores podrán observar el vuelo en tercera persona.

Conclusión

Naturalemnte, jugar en red era limitado y engorroso. Sin embargo hoy ya no es un privilegio: cuaquier descamisado puede depender de estas facilidades que he otorgado a la Masa y proceder a la emulación de M$-DO$. Por demás, la existencia de juegos de DOS remanentes de la era dorada de la piratería informática física, hace posible hoy establecer en los Centros de Datos de la Libertad divertidas partidas múltiples a través de protocolos de red obsoletos pero nunca abandonados, con el fin de revivir momentos de gloria incluso en las más lentas redes y desprovistas computadoras del mundo actual.

viernes, 24 de marzo de 2017

¿Cómo montar un sistema de archivos o carpeta remota usando SSHFS sobre SSH en Ubuntu

¡Trabajadores!

La fuerza no depende del número exclusivamente. La unión es la que hace la fuerza. Este adagio se ha repetido una y otra vez en la historia, desde Leónidas hasta nuestros días. Sabemos que entre los hombres, la argamasa no es otra que la cohesión. Hemos de hermanarnos frente a un objetivo común, una misión de la que colectiva e individualmente saldremos beneficiados.

Nuestro causal de unión no es otro que el lema bajo el que se fundó nuestra República y su software: la Libertad.

Ahora bien, un sistema informático no tiene que permanecer gregario; bien puede unirse a otros para conformar una herramienta de mayor valía y servir - a su vez - nuestros designios bajo un porvenir luminoso. GNU con Linux hace constar esta máxima avalando la posibilidad de ejecutar programas servidores de múltiples funcionalidades, que permitan a otros sistemas clientes - ajenos o propios - interconectarse y compartir sus recursos. Esto puede realizarse de una manera rápida y poco segura, pero normalmente recomendaré el empleo del estándar Secure Shell (SSH), pues consta de encriptación punto a punto y se hace de difícil vulneración, logrando una mayor seguridad para nuestro sistema y el ajeno.

Normalmente esta acción de hermanado suele ser temporal, pero existirán ocasiones donde querremos que las mismas se solidifiquen y se hagan permanentes en pos de un uso constante.

Cada computadora a la que queramos conectarnos a través del protocolo Secure Shell debe contar con el servidor SSH, software libre altamente útil. Ubuntu Server ya contará con dicha facilidad incorporada por defecto, pero en el caso de las versiones de escritorio (Ubuntu Desktop) habremos de instalarlo específicamente, si es que no lo hemos hecho ya. Para ello, en tales equipos abrimos una terminal presionando Ctrl+Alt+T e ingresamos:

sudo apt install openssh-server 

Si usamos un cliente de escritorio gráfico, ya podríamos montar discos o directorios en red, de forma temporal o permanente. Simplemente debemos ir al panel superior y hacer clic en Lugares / Conectar con servidor... Al hacerlo aparecerá la ventana Conectar con el Servidor.

Esta nos permitirá una variedad de esquemas de trabajo completando los datos requeridos... podremos asociarnos a servidores FTP Públicos o con contraseña, compartido de Windows, protocolo Filing de Appe, WebDAV común y seguro. En este caso como empleamos Linux nos conectaremos a través del protocolo SSH (Secure Shell) a otro sistema remoto, que oficiará de servidor.

Normalmente en el campo Servidor debemos ingresar la dirección IP o nombre de red (host) del equipo remoto, y en el campo Carpeta normalmente querremos indicar la carpeta de usuario en el servidor remoto (/home/usuario). Finalmente el nombre de usuario y la contraseña del usuario (que normalmente corresponden al usuario de la carpeta).

Opcionalmente, si deseamos hacer de este vínculo uno permanente, podríamos tildar "recordar contraseña" y agregar la carpeta remota a los Marcadores, con lo cual tendremos siempre el disco de red a mano. Para desmontar el servidor desde nuestro administrador gráfico, debemos presionar el botón de desmontaje ("Eject") o hacer clic con el botón derecho del ratón sobre el ícono de la carpeta montada y elegir la opción Desmontar.

Ahora bien, en el caso del uso de la terminal, querremos montar desde allí al disco remoto y operarlo localmente. Esto será útil para administradores de sistema que quieran montar sistemas de archivo usando cliente SSHFS sobre SSH, y puedan responder a cualquier propósito de trabajo. Por ejemplo, tener una red LAN con un servidor de discos NAS, o contar con un disco de gran capacidad en un equipo remoto y hacer uso de sus archivos desde un equipo portátil. En fin, cualquier trabajo que implique "carpetas en red".

Para ello en nuestra terminal emplearemos dicho cliente, que normalmente no está incluido entre los paquetes por defecto. Abrimos una terminal con Ctrl+Alt+T e ingresamos:

sudo apt install sshfs

Una vez instalado el paquete SSHFS, necesitamos crear un directorio que oficiará de punto de montaje para el sistema de archivos remoto. Conviene hacerlo dentro de la carpeta de sistema /mnt, lo cual recomiendo hacer. En este ejemplo el punto de montaje local estará localizado en /mnt/discoevita.

sudo mkdir /mnt/discoevita

Una vez creado el directorio que nos servirá como punto de montaje local, ejecutamos el siguiente comando como Conductor del sistema, que montará la carpeta remota /home/evita dentro de la carpeta /mnt/discoevita de nuestro sistema de archivos local (no olviden reemplazar 192.168.0.102 con la dirección IP o nombre de red del punto de montaje):

sudo sshfs -o allow_other evita@192.168.0.102:/home/evita/ /mnt/discoevita

...Ahora bien, si el servidor remoto está configurado para hacer uso de autorización basada en llaves SSH, debemos entonces especificarle la ruta hacia nuestras llaves públicas con el siguiente comando:

sudo sshfs -o allow_other,IdentityFile=/home/usuario/.ssh/id_rsa evita@192.168.0.102:/home/evita/ /mnt/discoevita

Si hemos ejecutado el comando anterior que nos corresponda exitosamente y sin errores, entonces deberíamos poder tener acceso al listado de los archivos remotos, espejados dentro del punto de montaje local /mnt/discoevita. Podremos comprobarlo con los comandos de organización:

cd /mnt/discoevita 
ls

También podríamos revisar que el sistema de archivos remoto aparezca en la tabla de nuestro propio sistema de archivos. Para ello ejecutaremos el comando:

df -hT

...y nuestra terminal debería devolvernos un resumen de los componentes de su sistema de archivo, que debe incluir la carpeta remota, de una forma similar al siguiente:


S.ficheros     Tipo     Tamaño Usados  Disp Uso% Montado en
udev           devtmpfs   1,9G      0  1,9G   0% /dev
tmpfs          tmpfs      388M   6,4M  382M   2% /run
/dev/sda1      ext4       233G   144G   78G  65% /
tmpfs          tmpfs      2,0G    32M  2,0G   2% /dev/shm
tmpfs          tmpfs      5,3M   4,1k  5,3M   1% /run/lock
tmpfs          tmpfs      2,0G      0  2,0G   0% /sys/fs/cgroup
tmpfs          tmpfs      388M    62k  388M   1% /run/user/1000
evita@192.168.0.102:/home/evita fuse.sshfs  324G   55G  253G  18% /mnt/discoevita

Con esto sería suficiente para un trabajo temporal, hasta que el servidor o el cliente se reinicien.

Si deseamos montar el sistema de archivos de forma permanente, para que toda vez que encendamos el sistema se realice el montaje automáticamente, debemos editar editar el archivo de configuración del sistema de archivos, el cual es /etc/fstab. Para ello emplearemos el editor de texto GNU Nano, ingresando el siguiente comando:

sudo nano /etc/fstab

...se abrirá el editor y cargará el fichero de configuración, que ya debería contener información. No debemos modificar nada de lo que ya existe. Debemos ir al final del archivo y agregarle una línea similar a la siguiente:

sshfs#usuario@192.168.0.102:/home/evita/ /mnt/discoevita fuse.sshfs defaults 0 0

...y grabamos el archivo (ctrl+o) y salimos del editor (ctrl+x). También conviene reiniciar los demonios para que surta efecto.
 
sudo systemctl daemon-reload

Debemos asegurarnos de que hemos configurado el Alta sin Contraseña entre servidores para automontar el sistema de archivos durante los reinicio del sistema (de lo contrario, siempre al iniciar el sistema nos solicitará la contraseña del usuario remoto SSH previo al automontaje de su carpeta).

En cambio, si el servidor estuviese configurado con una autorización basada en llave SSH, entonces debemos agregar al archivo /etc/fstab la siguiente línea:

sshfs#usuario@192.168.0.102:/home/evita/ /mnt/discoevita fuse.sshfs IdentityFile=/home/usuario/.ssh/id_rsa defaults 0 0

A continuación necesitaremos actualizar la tabla de sistemas de archivos para hacer efectivos los cambios realizados. Ello lo haremos efectivo con:

sudo mount -a

...entonces se automontará el disco a través de SSH toda vez que encendamos el sistema.

Para desmontar el sistema de archivos remoto desde la terminal ingresamos el siguiente Comando de Organización:

umount /mnt/discoevita

martes, 17 de mayo de 2016

¿Cómo activo la función Wake on LAN en Ubuntu 16.04LTS Xenial Xerus?

Durante la génesis del Justicialismo, un hecho de masas sin precedentes definió el definitivo ascenso político del Coronel Juan Perón. El 17 de octubre los obreros se lanzaron a la calle proclamando su liberación. En la biografía que escribe Pavón Pereyra, se revela que dicho suceso de debió al empleo de la característica Wake on Lan desde Ubuntu.


¡Trabajadores!

En los años previos a la Revolución, la Argentina los argentinos estaban sometidos a la ignominia de los explotados, en la cual todo el país obraba en torno al interés de unas pocas familias acomodadas. El Pueblo Argentino - laborioso y bueno - se constituía en poco más que esclavos por esta casta repudiada, que lo obligaba a un trabajo de sol a sol sin que mediara siquiera el descanso reparador que Dios manda para los hombres de trabajo.

Nuestra Revolución no tuvo otro interés que defender el interés del Pueblo, y hacer la Justicia Social que anhelaba la Patria. Abocados a las transformaciones que hicieran de este país una verdadera potencia sobre la tierra, conseguimos para los hombres aquellas medidas que esta era se hacían imprescindibles para el bienestar de su familia.

Yo no he querido mas que ser un nexo de unión entre los trabajadores, una unión indestructible e infinita que les acercara la dignidad que todos merecen. ¡Con ello, no no con otra cosa, es que me he ganado el amor generoso del Pueblo! ¡Un amor, que llena de lágrimas los ojos de este viejo soldado!

Pero la reacción oligárquica de siempre se ha esforzado para volver a la conquista de sus fallidos privilegios. En ello me confinaron a través de ignominiosas maniobras, a un ostracismo en la Isla de Martín García. Sin embargo, la semilla de la Justicia Social ya estaba plantada en el alma del Sentir Nacional, y con solo una señal el Pueblo despertó un 17 de Octubre, y salió a la calle para restaurar al Coronel Perón. Naturalmente, que sectores populares dentro de las fuerzas de seguridad volcaron su actitud y si aguno hubo que quiso parar todo, poco pudo hacer ante el Pueblo en andas.

La épica del Justicialismo guarda paralelismos con un sistema GNU con Linux que no podemos soslayar. Al igual que la rápida reacción de las masas obreras, un equipo informatizado puede trabajar, pero también debe descansar y quedar presto a la actividad a la menor señal.

De esta manera podríamos utilizar un equipo servidor en suspensión, y encenderlo sólo en determinadas ocasiones para accionar en alguna tarea en particular. Lo normal sería encender el equipo mediante su tecla de encendido, pero ello no siempre es práctico o posible.

Afortunadamente, también podremos encenderlo de manera remota empleando la función Wake on LAN. La función Wake on LAN (WoL) es una de las características integradas en los dispositivos Ethernet (por ejemplo, los dispositivos de red de la placa madre), que le permiten encender o reactivarlo a través de una señal especial, denominada Suceso de Activación, o más coloquialmente "paquete mágico".

Hemos de saber que los sistemas actuales cuentan en particular con varios estadíos de trabajo y reposo, nomenclador desde S0 ("Estado Cero", completamente encendido y operando), pasando por S3 ("estado tres" con memoria RAM alimentada, pero procesador y discos desactivados), hasta S5 ("Estado cinco", equipo apagado pero conectado a la red eléctrica). Esto es así pues el trabajo puede regularse a fin de ahorrar energía, y pasar del trabajo a un estado de ahorro, "suspendiendo" el sistema (S3), o "hibernándolo".

En primer lugar hemos de activar la función WoL desde la BIOS del equipo que deseamos encender remotamente. La BIOS es una memoria de configuración básica del sistema, a la cual este responderá incluso antes de cargar el sistema operativo. Normalmente, dicha configuración puede accederse encendiéndo el equipo y presionando inmediatamente de forma repetida la tecla Supr (Del) del teclado, o la tecla F2. Tras unos instantes se presentará la pantalla de configuración de la placa madre.

La opción Power on Lan suele encontrarse bajo la sección Power Management Setup ("Administración de Energía") del BIOS. De tal modo que nos desplazamos hasta ella y buscar la opción Wake on LAN. También puede llamarse Resume by PCI/PCI-e/LAN PME. Debemos dejarla en la función Activada (Enabled).
Adicionalmente, podrán contar en vuestra BIOS con diferentes estados de suspensión (S1, S2, S3, etc). A modo de ejemplo os diré que en la BIOS de mi motherboard ESC H57H-MUS, debo configurar las opciones de un modo en particular para lograr la mayor eficiencia. El tipo de suspención ACPI la configuro en S3 o Auto, y la función Resume by Ring (reactivar por módem o evento telefónico) queda desactivada (Disabled). Naturalmente la función Resume by LAN PME queda activada (Enabled), lo mismo que Resume by USB S3 (reactivar por medio de dispositivos USB, ratón o teclado). Una vez concluida los cambios en la configuracción, los guardamos mediante la opción Save Changes and Exit BIOS.

Una vez que arranque el sistema operativo GNU con Linux, hemos de conocer qué dispositivo de red deseamos utilizar para encender el equipo, y en particular su dirección única de hardware, llamada Dirección MAC.

Aquí debemos tener una provisión. Normalmente estos tomaban el nombre Ethx, siendo la x un número que va ascendiendo desde 0 según tantos dispositivos LAN/Ethernet tengamos. El adaptador LAN/Ethernet integrado en la placa madre suele ser Eth0, pero si tenemos otro (como en las placas madres más avanzadas) podríamos encontrarnos con Eth1, Eth2, etc.

Esta nomenclatura a partir de Ubuntu 16.04LTS ha cambiado, ya hora toma la forma de enpxpy (siendo x el número de la interfaz e y el número de puerto).

Para identificar este requerimiento de forma sencilla, podríamos abrir la terminal con Ctrl+Alt+T y tipear el comando ifconfig para saber a cual estamos conectados. Para conocer específicamente los dispositivos de conectividad y sus direcciones MAC, podremos ingresar el comando:

ifconfig | grep HW


Nos devolverá los dispositivos y la dirección MAC de cada uno. Por ejemplo:

enp4s0      Link encap:Ethernet  direcciónHW aa:bb:cc:12:34:56
enp5s0      Link encap:Ethernet  direcciónHW 11:22:33:ab:cd:cd

Nos conviene tomar nota del nombre de la interfaz (enp4s0 en este ejemplo) y la dirección MAC del equipo remoto, pues nos facilitará reencenderlo luego cuando no tengamos acceso directo a él.

Acto seguido, verificaremos que los dispositivos cuenten con la posibilidad de despertar al equipo. Para ello instalaremos el programa ethtool, encargado de dicho relevamiento: Tipeamos el siguiente Comando de Organización:

sudo apt-get install ethtool etherwake wol

Asumiendo que el dispositivo de red que queremos utilizar para despertar el equipo sea aquel identificado como enp4s0, usaremos el siguiente comando:

sudo ethtool enp4s0

....el sistema debería devolvernos una serie de datos que hacen a la capacidad del dispositivo enp4s0 para la conexión de red. En este caso, entre otras cosas debería indicarnos:

Supports Wake-on: pumbg

Wake-on: g


...esto nos indica que el dispositivo de red eth0 utiliza el modo G de conexión para Wake on LAN. En el caso que nos indicara otra letra, podríamos cambiar el modo operativo. Lo haríamos con:

sudo ethtool -s enp4s0 wol g

En Ubuntu el paquete que controlan el apagado y estados de energía es pm-utils. Normalmente debería estar instalado, pero si no lo estuviese, ingresamos:

sudo apt install pm-utils

Una vez esto, podremos ya suspender o hibernar el equipo. Podremos hacerlo mediante la tecla especcial "sleep" del teclado, o mediante la función "Suspender" de Ubuntu. Si estamos en la consola, podremos hacerlo mediante la siguiente orden  

sudo pm-suspend

El 17 de octubre, si bien alguno intentó levantar puentes para impedir el paso de los obreros, poco pudo hacer. En este caso debemos aseguriar los mismo. En caso de usar un router con cortafuegos (firewall), habremos de liberar el puerto 9 UDP para que pueda enviarse la señal de encendido a través de la red, y no sea filtrada por el mismo. Esto se hace ingresando a la web de configuración del router (normalmente con nuestro navegador a la dirección IP del router 192.168.0.1 o 192.168.1.1). Luego en la sección de configuración "port forwarding" crearemos una nueva Regla de Excepción. En la misma, a través del protocolo UDP, para el puerto 9, filtraremos de forma universal (de manera que puedan emitir en dicho puerto todos los equipos de la red local) Con esto, el router dejará libremente pasar el suceso de activación al puerto 9 entre los equipos de la red local.
Eventualmente, podría hacerla específicamene para que la reciba una IP fija de un tipo de dispositivo en particular, o que sólo pueda emitir una IP en particular.

Ahora debo instalar un programa para generar el paquete mágico de encendido, y poder dispararlo a través del puerto 9 de la red. Ello debe hacerse en un equipo cliente distinto en la red local, que utilizaremos para encender al equipo remoto.

En el equipo local instalaremos el programa wakeonlan, por medio del siguiente comando de organización:

sudo apt-get install wakeonlan

Una vez instalado este breve programa, encenderemos el equipo remoto que habíamos suspendido, de la misma forma en que los obreros de la carne salieron a la calle en octubre del 45. Lo haremos con

wakeonlan Dirección_MAC_remota
Por ejemplo, en este caso sería:

wakeonlan  aa:bb:cc:12:34:56

Nota: A veces este programa no tiene resultado, podremos emplear el software  etherwake, el cual es más difícil. Su sintaxis es:


etherwake -p 255.255.255.255.9 Dirección_MAC_remota

Naturalmente, que para que el paquete de reencendido surta efecto, el equipo remoto ha de estar conectado a la red eléctrica, y ha de estar suspendido o hibernado. En el caso de usar Ubuntu, podremos usar la función Suspender, Hibernar del equipo remoto (si está activada). Esto será posible si tengo acceso físico al equipo.

¿Qué sucede si deseo suspender o hibernar el equipo remoto, pero no estoy a su alcance físico, pero si a través de una red? En tal caso deberia poder suspender o hibernar el sistema de forma remota, a través de la terminal. Para ello utilizaremos un enlace remoto (preferiblemente uno cifrado, a través de SSH). Una vez que me encuentro logueado al sistema remoto a través de la consola cifrada SSH, podria suspender el equipo remoto con:

sudo pm-suspend

También podría querer directamente hibernarlo, si me aseguro que el sistema funciona de forma adecuada, por medio de la siguiente orden:

sudo pm-hibernate

Ahora podría reencender abriendo un equipo cliente, y usando la orden Wakeonlan, por medio de la sintaxis:

wakeonlan dirección_mac_remota

...al recibir el paquete mágico, la fuente de alimentación se encenderá y se activará el sistema cual si fuese un 17 de octubre telemático. Al cabo de unos segundos (o minutos, dependiendo del estado de ahorro de energía q la velocidad de arranque del equipo remoto) deberíamos poder conectarnos de forma remota al equipo también a través de SSH o de otros protocolos que estuviesen activados en el mismo.

Si deseo reencender equipos remotamente al unísono desde la interfaz gráfica, puedo utilizar la aplicación gWakeonlan. Se trata de un software libre completamente simple, en el cual podremos incorporar el nombre y la dirección MAC de varios equipos en la red. Esto nos permite no tener que recordar la dirección MAC del equipo todo el tiempo.

Instalamos la aplicación con los comandos:

wget https://github.com/muflone/gwakeonlan/releases/download/0.5.1/gwakeonlan_0.5.1-1_all.deb

sudo dpkg -i gwakeonlan_0.5.1-1_all.deb


sudo apt-mark hold gwakeonlan

Y la ejecutamos desde Sistema / Internet / gWakeOnLan. Al iniciar, la aplicación estará vacía.
 Tendré que presionar el botón "+" y surgirá un cuadro, que me permitirá ingresar la dirección MAC y el nombre del o los equipos que deseo encender y que se encuentren en la red local.
Una vez que aparezca el o los equipos en la lista, podemos seleccionar el equipo en cuestión, y enviarle el paquete mágico de encendido mediante el botón de los "engranajes" para despertarlo, y encenderá a la primera como una moto Puma con arranque a patada.

Desde OpenWRT

Si utilizan un router peronista con firmware libre OpenWrt, bien podrán crear un paquete mágico para reencendido Wake On Lan, descargando una aplicación específica en la memoria del aparato. Una vez que gane acceso al ruteador (normalmente a través de vínculo cifrado SSH) podrán instalar el pequeño software etherwake. Lo harán por medio de los siguientes comandos de organización:

opkg update
opkg install etherwake


Una vez cargado, ya podremos utilizar al router como plataforma de reencendido: Si todo está configurado por defecto, lo haremos con el comando ya explicado:

etherwake -p 255.255.255.255.9 Dirección_MAC_remota


Naturalmente, que con un poco de ingenio podríamos hacer más cosas, como preparar al router para que encienda o quite la suspensión los equipos no bien termine de arrancar, permitir al router el acceso externo a través de Secure Shell y por su intermedio reencender equipos en el área local desde otra locación (¡incluso en otro pais!), etc.