Introducción
En el siguiente artículo, vamos a ver cómo podemos conectarnos mediante fuera de banda a dispositivos de red como puede ser un switch o un router desde Linux.
¿Qué es conexión fuera de banda?
Es un enlace entre un dispositivo (host) hacia el otro dispositivo que queramos acceder como un router o un switch haciendo uso de un cable especial como un RS-232, USB-MicroUSB, o un adaptador RS-232-USB. Esta conexión no requiere ningún tipo de direccionamiento IP y sólo puede accederse físicamente, a menos que tengamos un sistema de soporte de fuera de banda pero ya eso es otra historia.
Tengo el adaptador, cable… ¿Cómo me conecto?
Para conectarnos necesitaremos un programa especial llamado “Emulador de terminal”. Consiste en un software que nos permite ejecutar comandos en los dispositivos a los que queremos conectarnos. Este contiene una serie de parámetros como la velocidad, bit de paridad… que por regla general están determinados en el manual del dispositivo ya sea switch, router…
En los siguientes apartados veremos cómo conectarnos desde Linux, Windows.
Linux
Tenemos una serie de programas en modo CLI como minicom(1))
, o también en modo GUI como cutecom
, putty(1)
.
Preferiblemente utilizo screen(1)
, fácil, rápido y sencillo.
Instalando screen
Lo tenemos disponible en la mayoría de distribuciones de Linux, si es que, no viene ya incluido por defecto.
Fedora 27
su -c "dnf install screen"
Archlinux
sudo pacman -S screen
Gentoo
sudo emerge -av screen
Debian, Ubuntu, Linux Mint…
sudo apt-get install screen
Código fuente
- Descargar código fuente
- Extraer
- Instalar dependencias requeridas para la compilación
- Configurar opciones y parámetros opcionales
- Compilar
- Instalar
- Limpiar
Descargar código fuente
Obtenemos el código fuente desde aquí, o bien mediante wget(1)
. Posteriormente, descargamos la firma para verificar que el archivo no ha sufrido ninguna alteración, puedes hacerlo desde el siguiente enlace
Extraer
Extraemos los archivos en un directorio, por ejemplo /home/sincorchetes/screen
, y nos situamos en él.
Dependencias para la compilación
Instalamos todos aquellos archivos que se nos pide en el proceso de compilación. Generalmente suelen venir en un fichero README.
- GCC
- autoconf
- make
- binutils
- automake
- ncurses-devel
Configurar opciones
Según las instrucciones encontradas en el fichero INSTALL:
- Ejecutar
./autogen.sh
- Establecer la configuración que queremos que tenga screen, incluyendo el directorio raíz dónde se instalará este software, en mi caso
/usr
:
./configure --prefix=/usr
- Compilar el código
NOTA: Puedes hacer uso de CFLAGS (instrucciones que contiene el procesador para llevar a cabo la compilación más rápida entre otras cosas), o la compilación paralela con -jN, dónde N equivale al número total de CPUs detectados en /proc/cpuinfo
make
- Instalar
make install clean
- Ejecutar
screen
Identificando el dispositivo
En Linux las conexiones seriales se encuentran en /dev/ttySN
, sin embargo, al utilizar un adaptador USB se renombra a /dev/ttyUSBN
siendo N el número de dispositivo detectado por orden de conexión.
Una vez que conectemos el adaptador USB, RS-232=USB, ejecutamos:
dmesg
Y en las últimas ĺíneas nos debería de aparecer el siguiente mensaje:
[13194.083292] usb 3-1: new full-speed USB device number 2 using xhci_hcd
[13194.232019] usb 3-1: New USB device found, idVendor=0557, idProduct=2008
[13194.232025] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[13194.232028] usb 3-1: Product: USB-Serial Controller D
[13194.232044] usb 3-1: Manufacturer: Prolific Technology Inc.
[13195.175447] usbcore: registered new interface driver pl2303
[13195.175477] usbserial: USB Serial support registered for pl2303
[13195.175523] pl2303 3-1:1.0: pl2303 converter detected
[13195.204173] usb 3-1: pl2303 converter now attached to ttyUSB0
Ahí podemos ver cómo el dispositivo se encuentra en /dev/ttyUSB0
Conectándonos al dispositivo
Abrimos una terminal:
$ screen /dev/ttyUSB0
Deberá salirte un mensaje como este de información previa al acceso al dispositivo en caso de que lo tuviese:
SAT FEB 17 06:53:48 : LANPOWER (108) info message:
+++ Power Supply #1 Present(0xc)!
+++ 48v Present(0x6)!
+++ Power Supply #1 Up(0xc)!
Successfully sent the I2C read message to NISUP!!
SAT FEB 17 06:53:58 : INTERFACE (6) info message:
+++ NIs are ready
SAT FEB 17 06:54:28 : REMOTE_CONFIG (142) error message:
+++ DHCP Response not received in 30s. Failed!
SAT FEB 17 06:54:28 : REMOTE_CONFIG (142) info message:
+++ Remote Configuration Download cannot proceed.
login :
Windows
Para conectarnos desde Windows, tenemos software como PuTTY, TeraTerm…
- Descargamos PuTTY for Windows
- Instalamos
- Verificamos qué ID tiene el adaptador conectado accediendo a:
- Panel de control -> Administrador de dispositivos -> Puertos (COM & LPT)
- Una vez que lo sepamos, lanzamos PuTTY -> Serial -> “Serial Line escribimos”: COM5
Como podemos ver en la siguiente imagen: ![](putty_windows.png “Ventana de administración de dispositivos de Windows y PuTTY)
Troubleshooting
En este apartamos intentamos resolver algún que otro problema que nos pueda surgir en los diferentes sistemas.
Linux
No se establece la conexión porque devulve:
/dev/ttyUSB0: Permission denied
Esto es debido a que la distribución que actualmente utilizamos gestiona los dispositivos seriales a través de un grupo como puede ser dialout
. Para solucionar este problema:
# gpasswd -a USUARIO dialout
$ newgrp dialout
screen /dev/ttyUSB0
Windows
El sistema no detecta el driver automáticamente, o no viene incluido con el cable. Por lo general hay un driver genérico que podemos obtener a través del siguiente enlace
Referencias
- LPIC-I Ediciones ENI - Tercera edición
- ArchLinux