wiki/HowtoIPMI.md

242 lines
8.8 KiB
Markdown
Raw Permalink Normal View History

2023-04-03 17:34:57 +02:00
---
2023-04-07 15:27:45 +02:00
categories: network
2023-04-03 17:34:57 +02:00
title: Howto IPMI
...
2016-12-29 11:25:39 +01:00
2021-08-26 17:09:06 +02:00
* <https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface>
* <http://buttersideup.com/docs/howto/IPMI_on_Debian.html>
2023-04-03 17:34:57 +02:00
## Installation
2021-08-26 17:09:06 +02:00
~~~
2022-09-15 09:51:15 +02:00
# apt install openipmi ipmitool
2021-08-26 17:09:06 +02:00
~~~
2023-04-03 17:34:57 +02:00
Vérifions que les modules kernel sont activés :
2016-12-29 11:25:39 +01:00
2020-03-16 17:52:41 +01:00
~~~
2022-09-15 09:51:15 +02:00
# modprobe ipmi_si
# modprobe ipmi_devintf
~~~
2016-12-29 11:25:39 +01:00
2023-04-03 17:34:57 +02:00
Assurons-nous qu'ils le sont au démarrage de la machine :
2016-12-29 11:25:39 +01:00
~~~
2022-09-15 09:51:15 +02:00
# cat /etc/modules
ipmi_si
2023-04-03 17:34:57 +02:00
ipmi_devintf
~~~
2022-09-15 09:51:15 +02:00
2023-04-03 17:34:57 +02:00
## Réseau IPMI
2022-09-19 14:19:17 +02:00
2023-04-03 17:34:57 +02:00
* Pour pouvoir accéder à l'IPMI via le réseau, il faut brancher son port Ethernet puis configurer son réseau :
2022-09-19 14:19:17 +02:00
~~~
2023-04-03 17:34:57 +02:00
# ipmitool lan print
# ipmitool lan set help
2022-09-19 14:19:17 +02:00
2023-04-03 17:34:57 +02:00
# ipmitool -I open lan set 1 ipsrc static
# ipmitool -I open lan set 1 ipaddr 192.0.2.5
2023-07-05 11:49:30 +02:00
# ipmitool -I open lan set 1 netmask 255.255.0.0
2022-09-19 14:19:17 +02:00
~~~
> Note : pour une machine sans port dédié à l'IPMI, le premier port réseau de la machine est partagé avec l'IPMI, avec sa propre adresse MAC. Dans ce cas et si le port du switch est en mode trunk avec un VLAN dédié réseau IPMI, il faut le configurer :
~~~
# ipmitool -I open lan set 1 vlan id <off|<id>>
~~~
2023-04-03 17:34:57 +02:00
* Si le mot de passe a été perdu, on peut modifier celui de l'utilisateur par défaut `root` :
2022-09-15 09:51:15 +02:00
~~~
2023-04-03 17:34:57 +02:00
# ipmitool user set password 2
2022-09-15 09:51:15 +02:00
~~~
2016-12-29 11:25:39 +01:00
2023-04-03 17:34:57 +02:00
Le mot de passe sera démandé à l'utilisateur. Attention, il faut mettre un mot de passe suffisamment complexe, sinon une erreur `Insufficient privilege level` apparaît.
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
* Pour accéder à l'interface IPMI d'une autre machine :
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
~~~
# ipmitool -I lan -H 192.0.2.6 -U root shell
~~~
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
## Diagnostic matériel
2022-08-16 17:28:54 +02:00
2023-04-03 17:34:57 +02:00
~~~
# ipmitool sel list
# ipmitool sdr list
# ipmitool sensor list
# ipmitool chassis status
~~~
2022-08-16 17:28:54 +02:00
2023-04-03 17:34:57 +02:00
## Entrées IPMI System Event Log
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
Visualiser les logs :
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
~~~
# ipmi-sel
~~~
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
Nettoyer le log (attention pas de retour en arrière possible) :
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
~~~
# ipmi-sel --clear
~~~
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
## Consommation électrique instantanée
2023-04-03 17:34:57 +02:00
~~~
# ipmitool dcmi power reading
~~~
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
## Afficher la valeur des registres d'un type particulier
Lister la valeur des sondes du type « Power supply » :
~~~
# ipmitool sdr type "Power Supply"
PS Redundancy | 77h | ok | 7.1 | Fully Redundant
Status | 85h | ok | 10.1 | Presence detected
Status | 86h | ok | 10.2 | Presence detected, Power Supply AC lost
~~~
Lister les types de sondes :
~~~
# ipmitool sdr type
Sensor Types:
Temperature (0x01) Voltage (0x02)
Current (0x03) Fan (0x04)
Physical Security (0x05) Platform Security (0x06)
Processor (0x07) Power Supply (0x08)
Power Unit (0x09) Cooling Device (0x0a)
Other (0x0b) Memory (0x0c)
Drive Slot / Bay (0x0d) POST Memory Resize (0x0e)
System Firmwares (0x0f) Event Logging Disabled (0x10)
Watchdog1 (0x11) System Event (0x12)
Critical Interrupt (0x13) Button (0x14)
Module / Board (0x15) Microcontroller (0x16)
Add-in Card (0x17) Chassis (0x18)
Chip Set (0x19) Other FRU (0x1a)
Cable / Interconnect (0x1b) Terminator (0x1c)
System Boot Initiated (0x1d) Boot Error (0x1e)
OS Boot (0x1f) OS Critical Stop (0x20)
Slot / Connector (0x21) System ACPI Power State (0x22)
Watchdog2 (0x23) Platform Alert (0x24)
Entity Presence (0x25) Monitor ASIC (0x26)
LAN (0x27) Management Subsys Health (0x28)
Battery (0x29) Session Audit (0x2a)
Version Change (0x2b) FRU State (0x2c)
~~~
2022-08-12 16:34:40 +02:00
2023-04-03 17:34:57 +02:00
## Gestion de l'alimentation
2016-12-29 11:25:39 +01:00
2023-04-03 17:34:57 +02:00
On peut éteindre, démarrer, redémarrer, ou visualiser l'état de l'alimentation d'un serveur :
2016-12-29 11:25:39 +01:00
2023-04-03 17:34:57 +02:00
~~~
# ipmitool power
chassis power Commands: status, on, off, cycle, reset, diag, soft
~~~
2016-12-29 11:25:39 +01:00
2023-04-03 17:34:57 +02:00
* Visualiser : `status`
* Démarrer : `on`
* Éteindre : `off`
2023-09-15 15:40:41 +02:00
* Redémarrer : `cycle` (off puis on), `reset` (hard reset), `soft` (soft redémarrage de l'OS via ACPI)
2023-04-03 17:34:57 +02:00
* Pulse a diagnostic interrupt (NMI) directly to the processor(s) : `diag`
2016-12-29 11:25:39 +01:00
2023-04-03 17:43:31 +02:00
## Redémarrer l'interface IPMI
2016-12-29 11:25:39 +01:00
2023-04-03 17:34:57 +02:00
C'est nécessaire après avoir configuré l'IP pour HP ILO pour qu'elle soit prise en compte :
2016-12-29 11:25:39 +01:00
2021-08-16 10:47:33 +02:00
~~~
# ipmitool mc reset warm # Pour recharger (suffisant pour iLO, attendre 10s)
2023-04-03 17:34:57 +02:00
# ipmitool mc reset cold # Pour redémarrer
~~~
## Serial Over LAN (SOL)
2021-08-16 10:47:33 +02:00
2023-04-03 17:34:57 +02:00
Il est possible d'accéder au port série d'un serveur via la connexion ethernet de l'IPMI. Pour ce faire, il suffit d'activer cette fonctionnalité dans l'interface IPMI.
2021-08-16 10:47:33 +02:00
2023-04-03 17:34:57 +02:00
Pour un serveur avec iDRAC9, avec l'IP 192.0.2.1, il suffit d'exécuter la commande racadm suivante :
2021-08-16 10:47:33 +02:00
~~~
2023-04-03 17:34:57 +02:00
$ ssh root@192.0.2.1 set iDRAC.IPMILan.Enable 1
2021-08-16 10:47:33 +02:00
~~~
2023-04-03 17:34:57 +02:00
Via l'interface web, cette option se trouve dans ces menus :
2021-08-16 10:47:33 +02:00
2023-04-03 17:34:57 +02:00
* en anglais : `iDRAC Settings -> Connectivity -> Network -> IPMI Settings -> Enable IPMI Over LAN : Enabled`
* en français : `Paramètre iDRAC -> Connectivité -> Réseau -> Paramètres IPMI -> Activer IPMI sur le LAN : Activé`
2021-08-16 10:47:33 +02:00
2023-04-03 17:34:57 +02:00
Il faut aussi s'assurer que le port UDP 623 est ouvert en sortie.
Si ce n'est pas le cas, voici un exemple avec `iptables` d'autorisation du port 623 sur le sous-réseau `192.0.2.0/24` où se trouve l'adresse IP de l'IPMI `192.0.2.1` :
2021-08-16 10:47:33 +02:00
~~~
2023-04-03 17:34:57 +02:00
/sbin/iptables -I OUTPUT -p udp --dport 623 --sport 1024:65535 -s 192.0.2.0/24 -j ACCEPT
/sbin/iptables -I INPUT -p udp --sport 623 --dport 1024:65535 -s 192.0.2.0/24 -j ACCEPT
2021-09-02 15:47:44 +02:00
~~~
2023-04-03 17:34:57 +02:00
Avant de tenter d'accéder au port série, on peut tester la connexion à l'IPMI du serveur (ici 192.0.2.1) via le port 631 avec les identifiants utilisés pour accéder à l'interface web :
2021-09-02 15:47:44 +02:00
~~~
2023-04-03 17:34:57 +02:00
$ ipmitool -C 3 -I lanplus -H 192.0.2.1 -U root power status
Password:
Chassis Power is on
2021-10-25 17:16:35 +02:00
~~~
2023-04-03 17:34:57 +02:00
On peut maintenant essayer de se connecter au port Serial Over LAN avec la commande suivante :
2022-09-22 17:42:46 +02:00
~~~
2023-04-03 17:34:57 +02:00
$ ipmitool -C 3 -I lanplus -H 192.0.2.1 -U root sol activate
2022-09-22 17:42:46 +02:00
~~~
2023-04-03 17:34:57 +02:00
Notez que par ce moyen, il est possible d'accéder au BIOS de la machine, puis son bootloader et finalement à l'OS ; mais pour avoir accès à chacun de ces composants, vous avez probalement besoin de les configurer respectivement pour qu'ils interagissent sur le port série choisi. Par exemple pour activer l'interaction sur le port série de GRUB et de Debian sur un serveur Dell R640, il fait définir les variables suivantes dans `/etc/default/grub` puis lancer `update-grub`.
2021-10-25 17:16:35 +02:00
~~~
2023-04-03 17:34:57 +02:00
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL="console serial"
~~~
## FAQ
### La connexion à l'interface web m'affiche une erreur 400
2023-04-24 16:43:05 +02:00
Sous certaines versions d'iDRAC, une [vérification du Host Header est activée](https://www.dell.com/support/kbdoc/fr-fr/000193619/http-https-fqdn-connection-failures-on-idrac9-firmware-version-5-10-00-00). Si on utilise un tunnel SSH pour se connecter, l'IP 127.0.0.1 utilisée pour la connexion à travers le tunnel ne correspond pas à l'IP de l'hôte, et la connexion est bloquée.
On peut vérifier ce paramètre, et le désactiver :
2023-04-24 16:43:05 +02:00
Pour iDRAC9 :
~~~
$ ssh root@192.0.2.10
racadm>>get idrac.webserver.HostHeaderCheck
HostHeaderCheck=Enabled
racadm>>set idrac.webserver.HostHeaderCheck 0
2023-04-24 16:43:05 +02:00
~~~
Pour iDRAC8 :
~~~
$ ssh root@192.0.2.10
/admin1-> racadm get idrac.webserver.HostHeaderCheck
[Key=idrac.Embedded.1#WebServer.1]
HostHeaderCheck=Enabled
/admin1-> racadm set idrac.webserver.HostHeaderCheck 0
[Key=idrac.Embedded.1#WebServer.1]
Object value modified successfully
~~~
### Pas d'option HTML5 pour la console : mettre à jour iDRAC 8
Un serveur avec iDRAC 8 ne peut pas être mis à jour vers iDRAC 9. Cependant, la version d'iDRAC 8 peut, elle, être mise à jour.
Les anciennes versions d'iDRAC 8 ne proposent pas l'accès à la console virtuelle en HTML5, seulement en java. Il faut donc la mettre à jour pour avoir l'option HTML5 :
* Chercher son serveur sur la page de support Dell : <https://www.dell.com/support/home/fr-fr?app=drivers>
* Sous `Pilotes et téléchargements`, sélectionner la catégorie `iDRAC avec Lifecycle Controller`
* Télécharger la version d'iDRAC la plus récente, en format `exe` (nom du type [`iDRAC-with-Lifecycle-Controller_Firmware_J3JTJ_WN64_2.85.85.85_A00.EXE`](https://dl.dell.com/FOLDER10762018M/1/iDRAC-with-Lifecycle-Controller_Firmware_J3JTJ_WN64_2.85.85.85_A00.EXE))
* Décompresser le fichier téléchargé (dans un dossier à part, car les fichiers sont mis directement à l'endroit où il est décompressé) : `unzip iDRAC-with-Lifecycle-Controller_Firmware_J3JTJ_WN64_2.85.85.85_A00.EXE`
* Depuis l'iDRAC, sous `iDRAC Settings`, cliquer sur `Update and Rollback`
* Depuis les fichiers décompréssés, fournir le fichier `payload/firmimg.d7`, puis lancer la mise à jour