Esta pagina se ve mejor con JavaScript habilitado

Instalación remota servidor por puerto serie

 ·  🎃 kr0m

En este artículo vamos a instalar un servidor remoto mediante puerto serie habilitando para ello la opción BIOS Console Redirection, esto nos permitirá ver el arranque de la BIOS en ASCII por el puerto serie, de este modo podremos realizar instalaciones remotas sin KVM siempre y cuando dispongamos de un segundo equipo con acceso a los puertos serie del resto de servidores.

El servidor en cuestión es un sistema IBM bastante antiguo:

IBM System x3250
Type: 4364
Model: 42G

Las especificaciones son las siguientes:

CPU:
hw.model: Intel(R) Xeon(R) CPU            3040  @ 1.86GHz
hw.machine: amd64
hw.ncpu: 2
RAM:
4Gb DDR2
DISCO: 
ATA Hitachi HDS72161 ABCA 150Gb

Este modelo soporta IPMI-1.5 lo que nos permitirá realizar ciertas tareas de forma remota, además soporta la instalación de una placa de administración: Remote Supervisor Adapter II SlimLine la cual nos proporciona acceso KVM y SOL, pero en mi caso no dispongo de dicho hardware.

Si vemos físicamente el servidor nos percataremos de que dispone de un conector RJ45 llamado MGMT, este sería el conector utilizado por el Remote Supervisor Adapter II SlimLine donde tendríamos el KVM y el SOL.

Una ventaja del KVM es que podemos hacer streaming de ISOs de instalación, mientras que con IPMI-1.5 y acceso al puerto serie no, pero podemos dejar conectado un USB de forma permanente en el servidor, instalar el SO, volcar otra imagen en el USB y repetir el proceso.

Para poder acceder al servidor por puerto serie debemos configurar desde la BIOS el Remote Console al puerto serie:

Devices and I/O ports -> Remote Console Redirection -> Remote Console Serial Port: Serial Port 1
Remote Console Serial Port: Serial Port 1
Baud Rate: 9600
Console Type: VT100 8bit
Flow Control: None
Console Connection: Direct
Continue C.R. after: On

Guardamos y reiniciamos, ahora en el equipo que con acceso al puerto serie del servidor ya podemos ver el arranque:

screen /dev/ttyUSB0 9600

*** NOTA: *** Cuidado con dejarse varias sesiones de screen abiertas contra el puerto serie, esto provocará salida basura/aleatoria.

Podemos acceder a los parámetros de la BIOS:

Si accedemos a la configuración de la redirección del puerto serie podemos ver la opción RSA II, esta opción habiliaría el SOL en caso de disponer del módulo Remote Supervisor Adapter II SlimLine.


Para habilitar SOL deberíamos cambiar de Serial Port 1 a Serial Port 2(RSA II):

Habilitamos el IPMI, este funcionará a través de la primera tarjeta de red del servidor, esto quiere decir que dicha interfaz servirá igualmente como tarjeta de red regular como IPMI.
Es recomendable disponer de una VLAN para el tráfico administrativo, por lo tanto tenemos dos opciones:

  • Utilizar la interfaz solo para IPMI, donde debemos configurar el puerto del switch en modo access y la VLAN de administración como nativa.
  • Utilizar la interfaz tanto para IPMI como para uso regular, donde debemos configurar el puerto del switch en modo hybrid, la VLAN de administración como nativa y en el SO etiquetar todo el tráfico con la VLAN de datos.

Procedemos con la configuración del IPMI:

Advanced Setup -> IPMI -> LAN Settings



Si necesitamos cambiar algún parámetro de la controladora de discos tan solo debemos presionar Ctrl+c:




El instalador de FreeBSD por defecto está disponible tanto por la salida VGA como por la salida del puerto serie, pero solo es el menú de inicio, si presionásemos ENTER la instalación seguiría solo por la salida VGA, para poder realizar la instalación por puerto serie debemos indicar algunos parámetros:

Presionamos 3: Escape to loader prompt

Indicamos los parámetros:

set boot_multicons=YES
set boot_serial=YES
set comconsole_speed=9600
set console=comconsole
boot

Veremos el instalador de FreeBSD:

Cuando terminemos de instalar debemos dejar el SO preparado para que nos sirva la salida por puerto serie:

echo ‘boot_multicons="YES"’ » /boot/loader.conf
echo ‘boot_serial="YES"’ » /boot/loader.conf
echo ‘comconsole_port="0x3f8"’ » /boot/loader.conf
echo ‘comconsole_speed="9600"’ » /boot/loader.conf
echo ‘console="comconsole"’ » /boot/loader.conf

Si reiniciamos veremos el boot desde el puerto serie:

Podemos comprobar mediante Nmap que el IPMI está a la escucha:

nmap -p 623 -sU -P0 10.69.69.69

Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-29 17:43 CEST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 10.69.69.69
Host is up (0.0044s latency).

PORT    STATE SERVICE
623/udp open  asf-rmcp
MAC Address: 00:1A:64:6D:E6:F9 (IBM

IPMI proporciona algunos comandos interesantes, para ello debemos acceder mediante usuario y password, por defecto: USERID/PASSW0RD

ipmitool -I lan -H 10.69.69.69 -U USERID -P PASSW0RD sensor

Fan 1 Tach       | 7800,000   | RPM        | ok    | na        | 4950,000  | na        | na        | na        | na        
Fan 2 Tach       | 8400,000   | RPM        | ok    | na        | 4950,000  | na        | na        | na        | na        
Fan 3 Tach       | 7950,000   | RPM        | ok    | na        | 4950,000  | na        | na        | na        | na        
Fan 4 Tach       | 7500,000   | RPM        | ok    | na        | 4950,000  | na        | na        | na        | na        
Fan 5 Tach       | 7650,000   | RPM        | ok    | na        | 4950,000  | na        | na        | na        | na        
Sys Pwr Monitor  | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
Watchdog         | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
Planar 1.5V      | 1,540      | Volts      | ok    | na        | 1,350     | na        | na        | 1,810     | na        
Planar 1.8V      | 1,860      | Volts      | ok    | na        | 1,630     | na        | na        | 2,140     | na        
Planar 12V       | 12,070     | Volts      | ok    | na        | 10,579    | na        | na        | 13,348    | na        
Planar 5V        | 5,190      | Volts      | ok    | na        | 4,380     | na        | na        | 5,580     | na        
CPU Status       | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
VRD Status       | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
CPU Vtt          | 1,240      | Volts      | ok    | na        | 1,080     | na        | na        | 1,320     | na        
NMI State        | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
SEL Fullness     | 4,000      | % messages | ok    | na        | na        | na        | 75,000    | 90,000    | 99,000    
Planar 3.3V      | 3,460      | Volts      | ok    | na        | 2,960     | na        | na        | 3,620     | na        
Login violation  | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
Memory PFA       | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
PEF Action       | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
PCI Bus Fault    | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
POST Firmware    | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
Drive 0 Status   | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
Drive 1 Status   | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
Drive 2 Status   | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
Drive 3 Status   | na         | discrete   | na    | na        | na        | na        | na        | na        | na        
RSA II Detect    | 0x0        | discrete   | 0x0080| na        | na        | na        | na        | na        | na        
Ambient Temp     | 32,000     | degrees C  | ok    | na        | na        | na        | 55,000    | na        | 65,000    
CPU Temp         | 25,000     | degrees C  | ok    | na        | na        | na        | 85,000    | na        | 95,000    
CPU VCore        | 1,158      | Volts      | ok    | na        | 0,702     | na        | na        | 1,603     | na        
CPU OverTemp     | na         | discrete   | na    | na        | na        | na        | na        | na        | na    

También podemos reiniciar el servidor:

ipmitool -I lan -H 10.69.69.69 -U USERID -P PASSW0RD power cycle

IPMI soporta multitud de comandos, podemos ver la lista y su descripción en el man.

Como vemos parece que IPMI-1.5 soporta SOL:

isol	    Configure  and  connect Intel IPMIv1.5 Serial-over-LAN

Pero supongo que solo si tenemos la placa Remote Supervisor Adapter II SlimLine instalada, en mi caso el comando expulsa el siguiente error:

ipmitool -I lan -H 10.69.69.69 -U USERID -P PASSW0RD isol activate

IPMI v1.5 Serial Over Lan (ISOL) not supported!

Desde el propio servidor podemos acceder igualmente al IPMI, cargamos el módulo del kernel:

kldload ipmi

Nos aseguramos que en próximos arranques del sistema operativo lo haga de forma autónoma:

vi /etc/rc.conf

kld_list="ipmi"

Como ejemplo consultamos los usuarios disponibles:

ipmitool user list 1

ID  Name	     Callin  Link Auth	IPMI Msg   Channel Priv Limit
1                    true    false      true       USER
2   USERID           true    false      true       ADMINISTRATOR
3                    false   false      false      NO ACCESS
4                    false   false      false      NO ACCESS

IPMI no es un sistema muy fiable que digamos, pasado un tiempo suele colgarse sin motivo alguno, por lo tanto antes de realizar alguna tarea peligrosa en el servidor, debemos asegurarnos de que tenemos aceso a este, la mejor manera es reiniciarlo:

ipmitool bmc reset cold

Sent cold reset command to MC

Incluso me aventuraría a recomendar un reinicio todos los días desde Cron.

Como resumen final, hemos obtenido una forma de reiniciar el servidor de forma remota y ver la salida de la BIOS/SO por puerto serie, la combinación de IPMI/puerto serie no llega al nivel de un KVM pero puede puede resultar útil en ciertos entornos.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí