IPMI: Difference between revisions

From HPCWIKI
Jump to navigation Jump to search
(Created page with "== What is IPMI == '''Intelligent Platform Management Interface''' ('''IPMI''') is a set of computer interface specifications for an autonomous computer subsystem that provides management and monitoring capabilities '''independently of the host system's CPU, firmware (BIOS or UEFI) and operating system'''.<ref>https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface</ref> A BMC (baseboard management controller) is a core building block of IPMI sub-system...")
 
(Phase 0.4: Expand IPMI)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== What is IPMI ==
= IPMI =
'''Intelligent Platform Management Interface''' ('''IPMI''') is a set of computer interface specifications for an autonomous computer subsystem that provides management and monitoring capabilities '''independently of the host system's CPU, firmware ([[BIOS]] or UEFI) and operating system'''.<ref>https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface</ref>


{{Status
|status=Draft
|owner=Knowledge Agent
|last_update=2026-07-15
|review=Pending
}}


A BMC (baseboard management controller) is a core building block of IPMI sub-system. [https://www.openbmc.org/ OpenBMC] is a [[Linux]] Foundation Collaborative open-source BMC project.
{{TOC}}


IPMItool is a utility to monitor, configure, and manage devices that [[support]] the Intelligent Platform Management Interface (IPMI) and available with recent Linux Ubuntu distributions
== Overview ==


== IPMItool<ref>https://github.com/scottjg/ipmitool</ref> ==
IPMI(Intelligent Platform Management Interface)는 호스트 시스템의 CPU, 펌웨어([[BIOS/UEFI]]), 운영체제와 독립적으로 작동하는 컴퓨터 인터페이스 사양입니다. 서버 관리 및 모니터링을 위한 자율적 서브시스템을 제공합니다.
IPMItool uses the System Interface (in-band) to run the IPMI command on the local BMC through the OpenIPMI Driver. IPMItool can also use a LAN Interface to receive IPMI responses from a remote  (out-band) IPMI-based platform, if you know its BMC IP address and have user access to the BMC.<syntaxhighlight lang="bash">
 
$ sudo ipmitool channel info
=== Summary ===
Channel 0xf info:
 
  Channel Medium Type  : System Interface
* 무엇인가? — 서버 관리용 자율적 서브시스템 사양 (BMC 기반)
  Channel Protocol Type : KCS
* 왜 필요한가? — OS 독립적 서버 모니터링, 원격 관리, 전원 제어
  Session Support      : session-less
* 언제 사용하는가? — 데이터센터 서버 관리, 원격 전원 제어, 센서 모니터링
  Active Session Count  : 0
 
  Protocol Vendor ID    : 7154
 
</syntaxhighlight>Most platforms with IPMI also have a LAN interface that is assigned to channel number 1<syntaxhighlight>
== Purpose ==
$ sudo ipmitool channel info 1
Channel 0x1 info:
  Channel Medium Type  : 802.3 LAN
  Channel Protocol Type : IPMB-1.0
  Session Support      : multi-session
  Active Session Count  : 0
  Protocol Vendor ID    : 7154
  Volatile(active) Settings
    Alerting            : enabled
    Per-message Auth    : disabled
    User Level Auth    : enabled
    Access Mode        : always available
  Non-Volatile Settings
    Alerting            : enabled
    Per-message Auth    : disabled
    User Level Auth    : enabled
    Access Mode        : always available
</syntaxhighlight>


== IPMI Security ==
이 문서가 존재하는 이유
Restrict IPMI traffic to trusted internal networks. Traffic from IPMI must be restricted to a management VLAN segment with strong network controls. The default password on a shipped system must be changed to utilize stronger passwords. Devices that run IPMI must have strong, unique passwords set for the IPMI service.


=== Cipher suite ===
* Goal: IPMI 기본 개념, ipmitool 사용법, 보안 설정, 실전 명령어 제공
* Scope: IPMI 아키텍처, ipmitool 명령어, 보안(Cipher suite), LAN 설정, 센서 모니터링
* Non-goals: BMC 펌웨어 업그레이드, OpenBMC 상세 개발 가이드는 별도 문서


* Cipher 0 is an option that is enabled by default on many IPMI-enabled devices that allows authentication to be bypassed. Disable cipher 0 to prevent attackers from bypassing authentication and sending arbitrary IPMI commands.
* Cipher suite 3 (authentication – RAKP-HMAC-SHA1; integrity – HMAC-SHA1-96; confidentiality – AES-CBC-128) - Cipher suite 3 is the default option on the IPMItool
* Cipher suite 17 (authentication – RAKP-HMAC-SHA256; integrity – HMAC-SHA256-128; confidentiality – AES-CBC-128).


* Others
== Key Concepts ==
** Anonymous logins must be disabled.
** Create IPMI accounts with a user name. Nameless account must be disabled.
** Use strong passwords


== IPMI Usage ==
{| class="wikitable"
{| class="wikitable"
|+
! Concept
!commands
! Description
!Description
! Related
!Notes and coments (All examples use in-bound command)
|-
For out-bound (remote) connection, need to add -I lanplus -H <hostip> -U <username> -P <password> options
| BMC
| Baseboard Management Controller — IPMI 핵심 하드웨어
| [[IPMI]]
|-
|-
|raw
| ipmitool
|Send a RAW IPMI request and print response
| IPMI 관리 유틸리티 (CLI)
|
| [[IPMI]]
|-
|-
|i2c
| In-band
|Send an I2C Master Write-Read command and print response
| 호스트 OS를 통한 IPMI 접근 (KCS)
|
| [[IPMI]]
|-
|-
|spd
| Out-band
|Print SPD info from remote I2C device
| LAN을 통한 원격 IPMI 접근 (RMCP+)
|
| [[IPMI]]
|-
|-
|lan
| Cipher Suite
|Configure LAN Channels
| IPMI 인증/암호화 프로토콜
|<syntaxhighlight>
| [[Cipher suite]]
# Show current lan configuration
|-
$ sudo ipmitool lan print
| SEL
$ sudo ipmitool lan6 print
| System Event Log — 이벤트 기록
| [[IPMI]]
|-
| SOL
| Serial-over-LAN — 원격 콘솔
| [[IPMI]]
|}
 
 
== Architecture ==
 
IPMI는 BMC(Baseboard Management Controller)를 핵심으로 하는 독립 서브시스템입니다:


# Set IPv4 information
<syntaxhighlight lang="mermaid">
$ sudo ipmitool lan set 1 ipaddr <Your IP address for the BMC>
graph TD
$ sudo ipmitool lan set 1 netmask <Your Subnet Mask>
    A[IPMI Subsystem] --> B[BMC - Baseboard Management Controller]
$ sudo ipmitool lan set 1 snmp <Your SNMP>
    B --> C[In-band Interface]
$ sudo ipmitool lan set 1 defgw ipaddr <Your gateway server>
    B --> D[Out-band Interface - LAN]
    C --> E[OpenIPMI Driver]
    C --> F[ipmitool - Local]
    D --> G[ipmitool - Remote]
    B --> H[Sensors - Temp/Fan/Voltage]
    B --> I[Power Control]
    B --> J[Event Log - SEL]
</syntaxhighlight>
</syntaxhighlight>
== Workflow ==
{| class="wikitable"
! Stage
! Input
! Output
|-
|-
|lan6
| Check Status
|Configure IPv6 LAN Channels
| ipmitool chassis status
|
| Power/Sensor status
|-
|-
|chassis
| Power Control
|Get chassis status and set power state
| ipmitool chassis power on/off
|<syntaxhighlight>
| Server power state change
# Show system status
|-
$ sudo ipmitool chassis status 
| Sensor Monitor
System Power        : on
| ipmitool sdr list
Power Overload      : false
| Temperature/Fan/Voltage readings
Power Interlock      : inactive
|-
Main Power Fault    : false
| Remote Console
Power Control Fault  : false
| ipmitool sol activate
Power Restore Policy : always-off
| Serial-over-LAN session
Last Power Event    : ac-failed
|}
Chassis Intrusion    : inactive
 
Front-Panel Lockout  : inactive
 
Drive Fault          : false
== Detailed Explanation ==
Cooling/Fan Fault    : false
 
Sleep Button Disable : allowed
=== What is IPMI ===
Diag Button Disable  : allowed
 
Reset Button Disable : allowed
IPMI는 호스트 시스템과 독립적으로 작동하는 서버 관리 인터페이스입니다. BMC(Baseboard Management Controller)가 핵심 구성 요소이며, OpenBMC은 Linux Foundation의 오픈소스 BMC 프로젝트입니다.
Power Button Disable : allowed
 
Sleep Button Disabled: false
=== ipmitool Interface Types ===
Diag Button Disabled : false
Reset Button Disabled: false
Power Button Disabled: false


# To power on the server
* **open** — Linux OpenIPMI Interface (기본값, in-band)
$sudo ipmitool chassis power on
* **imb** — Intel IMB Interface
* **lan** — IPMI v1.5 LAN Interface (out-band)
* **lanplus** — IPMI v2.0 RMCP+ LAN Interface (out-band, 권장)
* **free** — FreeIPMI IPMI Interface
* **serial-terminal** — Serial Interface, Terminal Mode
* **serial-basic** — Serial Interface, Basic Mode
* **dummy** — Linux DummyIPMI Interface
* **usb** — IPMI USB Interface (AMI OEM)


#To gracefully shut down the OS and power off the server to standby power mode
=== IPMI Security ===
$sudo ipmitool chassis power soft


# To perform an immediate power off from full-power mode to standby power mode (not graceful)
* IPMI 트래픽은 신뢰할 수 있는 내부 네트워크로 제한
$sudo ipmitool chassis power off
* 관리 VLAN 세그먼트에서 강력한 네트워크 제어 적용
* 기본 비밀번호는 반드시 강력한 비밀번호로 변경
* 각 IPMI 서비스는 고유한 강력한 비밀번호 설정


# To reset the server (cycle power on and off):
=== Cipher Suite ===
$sudo ipmitool chassis power cycle


# To set chassis policy command to determine what the system does when the system experiences a power loss (and after the power is restored).
* **Cipher 0** — 인증 우회 가능 (비활성화 권장)
# ipmitool chassis policy <state>
* **Cipher 3** — 기본 옵션 (RAKP-HMAC-SHA1, AES-CBC-128)
$ sudo ipmitool chassis policy <state>, where chassis policy <state>
* **Cipher 17** — 고급 보안 (RAKP-HMAC-SHA256, AES-CBC-128)
  list        : return supported policies
  always-on  : turn on when power is restored
  previous    : return to previous state when power is restored
  always-off  : stay off after power is restored


추가 보안 조치:
* 익명 로그인 비활성화
* 이름 없는 계정 비활성화
* 강력한 비밀번호 사용


</syntaxhighlight><syntaxhighlight>
=== IPMI Commands ===
# To modify boot device for next reboot
 
$sudo ipmitool chassis bootdev pxe
{| class="wikitable"
$sudo ipmitool chassis bootdev cdrom
! Command
$sudo ipmitool chassis bootdev bios
! Description
</syntaxhighlight>
! Notes
|-
| raw
| RAW IPMI 요청 전송
| —
|-
| i2c
| I2C Master Write-Read
| —
|-
| lan
| LAN 채널 설정
| IPv4 설정 포함
|-
| lan6
| IPv6 LAN 채널 설정
| —
|-
| chassis
| chassis 상태 및 전원 제어
| power on/off/cycle/policy
|-
| power
| 전원 명령어 단축
| chassis power 대체
|-
| event
| 사전 정의된 이벤트 전송
| —
|-
| mc
| Management Controller 상태
| mc info/reset
|-
| sdr
| Sensor Data Repository
| sdr list/type
|-
| sensor
| 상세 센서 정보
| —
|-
| fru
| FRU 정보 출력
| fru print
|-
| sel
| System Event Log
| sel list/clear/elist
|-
| pef
| Platform Event Filtering
| —
|-
| sol
| Serial-over-LAN
| activate/deactivate
|-
| user
| Management Controller 사용자
| user list/set name/password
|-
|-
|power
| channel
|Shortcut to chassis power commands
| Management Controller 채널
|
|
|-
|-
|event
| session
|Send pre-defined events to MC
| 세션 정보 출력
|
|
|-
|-
|mc
| dcmi
|Management Controller status and global enables
| Data Center Management Interface
|<syntaxhighlight>
| power reading/get_limit/set_limit
# To check MC (BMC) information
|}
$ sudo ipmitool mc info
 
=== IPMI Usage Examples ===
 
==== LAN 설정 ====
 
<syntaxhighlight lang="bash">
# 현재 LAN 설정 확인
$ sudo ipmitool lan print
$ sudo ipmitool lan6 print
 
# IPv4 설정
$ sudo ipmitool lan set 1 ipaddr <BMC_IP>
$ sudo ipmitool lan set 1 netmask <Subnet_Mask>
$ sudo ipmitool lan set 1 snmp <SNMP>
$ sudo ipmitool lan set 1 defgw ipaddr <Gateway>
</syntaxhighlight>
 
==== Cipher Suite 변경 ====
 
<syntaxhighlight lang="bash">
# 현재 Cipher Suite 확인
$ sudo ipmitool lan print
 
# Cipher 3만 활성화
$ sudo ipmitool lan set 1 cipher_privs XXXaXXXXXXXXXXX


# To reset MC (BMC) controller
# Cipher 3과 17 활성화
$sudo ipmitool mc reset [ warm | cold ]
$ sudo ipmitool lan set 1 cipher_privs XXaXXXXXXXaXXXX
</syntaxhighlight>
</syntaxhighlight>
|-
|sdr
|Print Sensor Data Repository entries and readings
|<syntaxhighlight>
#To check sensor information
$sudo ipmitool sdr list


# To list up sonsoer type
==== 전원 제어 ====
$ sudo ipmitool sdr type
 
Sensor Types:
<syntaxhighlight lang="bash">
        Temperature              (0x01)  Voltage                  (0x02)
# 시스템 상태 확인
        Current                  (0x03)  Fan                      (0x04)
$ sudo ipmitool chassis status
        Physical Security        (0x05)  Platform Security        (0x06)
 
        Processor                (0x07)  Power Supply              (0x08)
# 전원 켜기
        Power Unit                (0x09)  Cooling Device            (0x0a)
$ sudo ipmitool chassis power on
        Other                    (0x0b)  Memory                    (0x0c)
 
        Drive Slot / Bay          (0x0d)  POST Memory Resize        (0x0e)
# 정상 종료
        System Firmwares          (0x0f)  Event Logging Disabled    (0x10)
$ sudo ipmitool chassis power soft
        Watchdog1                (0x11)  System Event              (0x12)
 
        Critical Interrupt        (0x13)  Button                    (0x14)
# 즉시 전원 끄기
        Module / Board            (0x15)  Microcontroller          (0x16)
$ sudo ipmitool chassis power off
        Add-in Card              (0x17)  Chassis                  (0x18)
 
        Chip Set                  (0x19)  Other FRU                (0x1a)
# 전원 사이클 (재부팅)
        Cable / Interconnect      (0x1b)  Terminator                (0x1c)
$ sudo ipmitool chassis power cycle
        System Boot Initiated    (0x1d)  Boot Error                (0x1e)
 
        OS Boot                  (0x1f)  OS Critical Stop          (0x20)
# 전원 복구 정책 설정
        Slot / Connector          (0x21)  System ACPI Power State  (0x22)
$ sudo ipmitool chassis policy always-on
        Watchdog2                (0x23)  Platform Alert            (0x24)
 
        Entity Presence          (0x25)  Monitor ASIC              (0x26)
# 다음 부팅 장치 설정
        LAN                      (0x27)  Management Subsys Health  (0x28)
$ sudo ipmitool chassis bootdev pxe
        Battery                  (0x29)  Session Audit            (0x2a)
$ sudo ipmitool chassis bootdev cdrom
        Version Change            (0x2b)  FRU State                (0x2c)
$ sudo ipmitool chassis bootdev bios
       
# To check specific sdr type
$sudo ipmitool sdr type Temperature
$sudo ipmitool sdr type Fan
$sudo ipmitool sdr type ‘Power Supply’
</syntaxhighlight>
</syntaxhighlight>
|-
|sensor
|Print detailed sensor information
|
|-
|fru
|Print built-in FRU and scan SDR for FRU locators
|<syntaxhighlight>
#fru print Prints the FRU information.
$sudo ipmitool fru


==== 센서 모니터링 ====
<syntaxhighlight lang="bash">
# 모든 센서 목록
$ sudo ipmitool sdr list
# 센서 타입별 목록
$ sudo ipmitool sdr type Temperature
$ sudo ipmitool sdr type Fan
$ sudo ipmitool sdr type 'Power Supply'
# 상세 센서 정보
$ sudo ipmitool sensor
</syntaxhighlight>
</syntaxhighlight>
|-
|gendev
|Read/Write Device associated with Generic Device locators sdr
|
|-
|sel
|Print System Event Log (SEL)
Returns an error log
|#ipmitool sel list
...
6c | 10/29/2024 | 05:55:17 | Temperature #0x30 | Upper Critical going high | Asserted
...
The first column is a unique record number in the hexadecimal format.
The next two columns are the date and time stamp.
The fourth column shows the corresponding sensor.
The final column shows a description<syntaxhighlight>
# To check system logging


$sudo ipmitool sel info
==== System Event Log (SEL) ====
$sudo ipmitool sel list
 
$sudo ipmitool sel elist # extended list (see manpage)  
<syntaxhighlight lang="bash">
$sudo ipmitool sel clear
# SEL 정보 확인
</syntaxhighlight>ipmievd - IPMI event daemon for sending events to syslog. To check ipmievd status we can use systemctl commands<syntaxhighlight>
$ sudo ipmitool sel info
#on Ubuntu, ipmievd is disabled by default
 
$ sudo systemctl enable ipmievd
# SEL 목록
Synchronizing state of ipmievd.service with SysV service script with /lib/systemd/systemd-sysv-install.
$ sudo ipmitool sel list
Executing: /lib/systemd/systemd-sysv-install enable ipmievd
Created symlink /etc/systemd/system/ipmi.service → /lib/systemd/system/ipmievd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ipmievd.service → /lib/systemd/system/ipmievd.service.


# enable and start ipmievd
# 확장 목록
$ sudo systemctl start ipmievd
$ sudo ipmitool sel elist
$ sudo systemctl status ipmievd   
● ipmievd.service - IPMI event daemon
    Loaded: loaded (/lib/systemd/system/ipmievd.service; enabled; vendor preset: enabled)
    Active: active (running) since Thu 2024-10-31 09:32:09 KST; 13s ago
    Process: 377408 ExecStart=/usr/sbin/ipmievd open daemon (code=exited, status=0/SUCCESS)
  Main PID: 377420 (ipmievd)
      Tasks: 1 (limit: 308967)
    Memory: 1.8M
    CGroup: /system.slice/ipmievd.service
            └─377420 /usr/sbin/ipmievd open daemon


# SEL 초기화
$ sudo ipmitool sel clear
</syntaxhighlight>
</syntaxhighlight>
|-
|pef
|Configure Platform Event Filtering (PEF)
|
|-
|sol
|Configure and connect IPMIv2.0 Serial-over-LAN
|<syntaxhighlight>
#Activates SOL system console
$sudo ipmitool sol activate


#Deactivates SOL system console.
==== Serial-over-LAN (SOL) ====
$sudo ipmitool sol deactivate
 
<syntaxhighlight lang="bash">
# SOL 활성화
$ sudo ipmitool sol activate


#Sets the default retry-interval value in milliseconds.
# SOL 비활성화
$sudo ipmitool sol set retry-interval value
$ sudo ipmitool sol deactivate


# 재시도 간격 설정
$ sudo ipmitool sol set retry-interval value
</syntaxhighlight>
</syntaxhighlight>
|-
 
|tsol
==== 사용자 관리 ====
|Configure and connect with Tyan IPMIv1.5 Serial-over-LAN
 
|
<syntaxhighlight lang="bash">
|-
# 사용자 목록
|isol
|Configure IPMIv1.5 Serial-over-LAN
|
|-
|user
|Configure Management Controller users
|<syntaxhighlight>
# List up IPMI users
$ sudo ipmitool user list 1
$ sudo ipmitool user list 1
ID  Name            Callin  Link Auth  IPMI Msg  Channel Priv Limit
1                    false  false      true      ADMINISTRATOR
2  root            false  false      true      ADMINISTRATOR
3                    true    false      false      NO ACCESS
...


#To change the name of userid 2, run the following command:
# 사용자 이름 설정
$ sudo ipmitool user set name 2 <New User ID>
$ sudo ipmitool user set name 2 <New_Name>


#To set a new password for userid 2, run the following command:
# 비밀번호 설정
$ sudo ipmitool user set password 2 ipmitool user set password 2 <New Password>
$ sudo ipmitool user set password 2 <New_Password>


#You can also use a null user for anonymous login. To change the password for the null user (userid 1) on the LAN channel, run the following command:
# 익명 사용자 비밀번호 설정
$ sudo ipmitool lan set 1 password <New Password>
$ sudo ipmitool lan set 1 password <New_Password>


#To delete user id, Set user name to empty
# 사용자 삭제 (이름 비우기)
$sudo ipmitool user set name <ID> ""
$ sudo ipmitool user set name <ID> ""
</syntaxhighlight>
</syntaxhighlight>
|-
|channel
|Configure Management Controller channels
|
|-
|session
|Print session information
|
|-
|dcmi
|Data Center Management Interface
|<syntaxhighlight>
# To check system power information


$ sudo ipmitool dcmi power
==== DCMI (Data Center Management Interface) ====
power <command>
    reading      Get power related readings from the system
    get_limit    Get the configured power limits
    set_limit    Set a power limit option
    activate      Activate the set power limit
    deactivate    Deactivate the set power limit


<syntaxhighlight lang="bash">
# 전력 정보 확인
$ sudo ipmitool dcmi power reading
$ sudo ipmitool dcmi power reading


    Instantaneous power reading:                  425 Watts
# 전력 제한 확인
    Minimum during sampling period:                  0 Watts
    Maximum during sampling period:              1520 Watts
    Average power reading over sample period:      319 Watts
    IPMI timestamp:                          Thu Oct 31 01:30:54 2024
    Sampling period:                          00000005 Seconds.
    Power reading state is:                  activated
   
$ sudo ipmitool dcmi power get_limit
$ sudo ipmitool dcmi power get_limit


    Current Limit State: Power Limit Active
# 전력 제한 설정
    Exception actions:  Hard Power Off & Log Event to SEL
$ sudo ipmitool dcmi power set_limit
    Power Limit:        500 Watts
</syntaxhighlight>
    Correction time:    1000 milliseconds
 
    Sampling period:    5 seconds
==== ipmievd (IPMI Event Daemon) ====


<syntaxhighlight lang="bash">
# ipmievd 활성화
$ sudo systemctl enable ipmievd


# ipmievd 시작
$ sudo systemctl start ipmievd


# ipmievd 상태 확인
$ sudo systemctl status ipmievd
</syntaxhighlight>
</syntaxhighlight>
|-
 
|nm
 
|Node Manager Interface
== Configuration ==
|
 
|-
<syntaxhighlight lang="bash">
|sunoem
# BMC 정보 확인
|OEM Commands for Sun servers
$ sudo ipmitool mc info
|
 
|-
# BMC 리셋
|kontronoem
$ sudo ipmitool mc reset [warm | cold]
|OEM Commands for Kontron devices
 
|
# LAN 설정
|-
$ sudo ipmitool lan set 1 ipaddr <BMC_IP>
|picmg
$ sudo ipmitool lan set 1 netmask <Subnet_Mask>
|Run a PICMG/ATCA extended cmd
$ sudo ipmitool lan set 1 defgw ipaddr <Gateway>
|
 
|-
# Cipher Suite 설정 (Cipher 3만)
|fwum
$ sudo ipmitool lan set 1 cipher_privs XXXaXXXXXXXXXXX
|Update IPMC using Kontron OEM Firmware Update Manager
 
|
# 사용자 설정
|-
$ sudo ipmitool user set name 2 admin
|firewall
$ sudo ipmitool user set password 2 <Strong_Password>
|Configure Firmware Firewall
</syntaxhighlight>
|
 
|-
 
|delloem
== Examples ==
|OEM Commands for Dell systems
 
|
=== Example 1: 원격 서버 전원 제어 ===
|-
 
|shell
<syntaxhighlight lang="bash">
|Launch interactive IPMI shell
# 원격 서버 상태 확인
|
$ sudo ipmitool -I lanplus -H <BMC_IP> -U <username> -P <password> chassis status
|-
 
|exec
# 원격 서버 전원 켜기
|Run list of commands from file
$ sudo ipmitool -I lanplus -H <BMC_IP> -U <username> -P <password> chassis power on
|
 
|-
# 원격 서버 전원 끄기
|set
$ sudo ipmitool -I lanplus -H <BMC_IP> -U <username> -P <password> chassis power off
|Set runtime variable for shell and exec
</syntaxhighlight>
|
 
|-
=== Example 2: 센서 모니터링 ===
|hpm
 
|Update HPM components using PICMG HPM.1 file
<syntaxhighlight lang="bash">
|
# 모든 센서 확인
|-
$ sudo ipmitool sdr list
|ekanalyzer
 
|run FRU-Ekeying analyzer using FRU files
# 온도 센서만 확인
|
$ sudo ipmitool sdr type Temperature
|-
 
|ime
# 상세 센서 정보
|Update Intel Manageability Engine Firmware
$ sudo ipmitool sensor
|
</syntaxhighlight>
|-
 
|vita
 
|Run a VITA 46.11 extended cmd
== Best Practices ==
|
 
|}
* Cipher 0 비활성화 (인증 우회 방지)
* Cipher 3 또는 17 사용 (권장)
* 기본 비밀번호 반드시 변경
* 고유한 강력한 비밀번호 사용
* 익명 로그인 비활성화
* 이름 없는 계정 비활성화
* IPMI 트래픽 관리 VLAN으로 제한
* ipmievd 활성화하여 이벤트 syslog 전송
* 정기적인 SEL 확인
 
 
== Limitations ==
 
* IPMI v1.5는 보안 취약점 존재 (v2.0 권장)
* Cipher 0 비활성화 시 구형 장치 호환성 문제
* LAN 인터페이스 설정 오류 시 원격 관리 불가
* BMC 리셋 시 일시적 관리 중단
 


== References ==
== References ==
<references />
 
* https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface
* https://github.com/scottjg/ipmitool
* https://www.openbmc.org/
 
 
== Related Pages ==
 
* [[Cipher suite]]
* [[BIOS]]
* [[BIOS vs UEFI]]
* [[Linux]]
* [[OpenBMC]]
 
 
[[Category:Hardware]]
== Knowledge Graph ==
 
Related
 
→ [[BIOS]]
→ [[Server]]
→ [[OpenBMC]]
→ [[BMC]]
 
[[Category:Reference]]
 
== Redfish ==
 
Redfish는 IPMI의 차세대 관리 프로토콜. RESTful API 기반. JSON 데이터 형식.
 
<syntaxhighlight lang="bash">
# Redfish API 호출
curl -k -u admin:password https://bmc-ip/redfish/v1/Systems/1
 
# 시스템 상태 확인
curl -k -u admin:password https://bmc-ip/redfish/v1/Systems/1/Status
 
# 바이오스 설정 변경
curl -k -X PATCH -u admin:password \
  -H "Content-Type: application/json" \
  -d '{"ProcessorCoreCount": 16}' \
  https://bmc-ip/redfish/v1/Systems/1/Bios/Settings
</syntaxhighlight>
 
== OpenBMC ==
 
OpenBMC은 리눅스 기반 BMC 운영체제. Redfish API, Web UI, D-Bus 인터페이스 제공.
 
<syntaxhighlight lang="bash">
# OpenBMC D-Bus 인터페이스
busctl call org.openbmc.control.Host /org/openbmc/control/host0 org.openbmc.control.Host Start
 
# 바이오스 설정 (D-Bus)
busctl get-property org.openbmc.settings.Bios /org/openbmc/settings/Bios org.freedesktop.DBus.Properties Properties
 
# OpenBMC Web UI
https://bmc-ip (Redfish API + Web 인터페이스)
</syntaxhighlight>

Latest revision as of 13:37, 17 July 2026

IPMI

Template:Status

Template:TOC

Overview

IPMI(Intelligent Platform Management Interface)는 호스트 시스템의 CPU, 펌웨어(BIOS/UEFI), 운영체제와 독립적으로 작동하는 컴퓨터 인터페이스 사양입니다. 서버 관리 및 모니터링을 위한 자율적 서브시스템을 제공합니다.

Summary

  • 무엇인가? — 서버 관리용 자율적 서브시스템 사양 (BMC 기반)
  • 왜 필요한가? — OS 독립적 서버 모니터링, 원격 관리, 전원 제어
  • 언제 사용하는가? — 데이터센터 서버 관리, 원격 전원 제어, 센서 모니터링


Purpose

이 문서가 존재하는 이유

  • Goal: IPMI 기본 개념, ipmitool 사용법, 보안 설정, 실전 명령어 제공
  • Scope: IPMI 아키텍처, ipmitool 명령어, 보안(Cipher suite), LAN 설정, 센서 모니터링
  • Non-goals: BMC 펌웨어 업그레이드, OpenBMC 상세 개발 가이드는 별도 문서


Key Concepts

Concept Description Related
BMC Baseboard Management Controller — IPMI 핵심 하드웨어 IPMI
ipmitool IPMI 관리 유틸리티 (CLI) IPMI
In-band 호스트 OS를 통한 IPMI 접근 (KCS) IPMI
Out-band LAN을 통한 원격 IPMI 접근 (RMCP+) IPMI
Cipher Suite IPMI 인증/암호화 프로토콜 Cipher suite
SEL System Event Log — 이벤트 기록 IPMI
SOL Serial-over-LAN — 원격 콘솔 IPMI


Architecture

IPMI는 BMC(Baseboard Management Controller)를 핵심으로 하는 독립 서브시스템입니다:

graph TD
    A[IPMI Subsystem] --> B[BMC - Baseboard Management Controller]
    B --> C[In-band Interface]
    B --> D[Out-band Interface - LAN]
    C --> E[OpenIPMI Driver]
    C --> F[ipmitool - Local]
    D --> G[ipmitool - Remote]
    B --> H[Sensors - Temp/Fan/Voltage]
    B --> I[Power Control]
    B --> J[Event Log - SEL]


Workflow

Stage Input Output
Check Status ipmitool chassis status Power/Sensor status
Power Control ipmitool chassis power on/off Server power state change
Sensor Monitor ipmitool sdr list Temperature/Fan/Voltage readings
Remote Console ipmitool sol activate Serial-over-LAN session


Detailed Explanation

What is IPMI

IPMI는 호스트 시스템과 독립적으로 작동하는 서버 관리 인터페이스입니다. BMC(Baseboard Management Controller)가 핵심 구성 요소이며, OpenBMC은 Linux Foundation의 오픈소스 BMC 프로젝트입니다.

ipmitool Interface Types

  • **open** — Linux OpenIPMI Interface (기본값, in-band)
  • **imb** — Intel IMB Interface
  • **lan** — IPMI v1.5 LAN Interface (out-band)
  • **lanplus** — IPMI v2.0 RMCP+ LAN Interface (out-band, 권장)
  • **free** — FreeIPMI IPMI Interface
  • **serial-terminal** — Serial Interface, Terminal Mode
  • **serial-basic** — Serial Interface, Basic Mode
  • **dummy** — Linux DummyIPMI Interface
  • **usb** — IPMI USB Interface (AMI OEM)

IPMI Security

  • IPMI 트래픽은 신뢰할 수 있는 내부 네트워크로 제한
  • 관리 VLAN 세그먼트에서 강력한 네트워크 제어 적용
  • 기본 비밀번호는 반드시 강력한 비밀번호로 변경
  • 각 IPMI 서비스는 고유한 강력한 비밀번호 설정

Cipher Suite

  • **Cipher 0** — 인증 우회 가능 (비활성화 권장)
  • **Cipher 3** — 기본 옵션 (RAKP-HMAC-SHA1, AES-CBC-128)
  • **Cipher 17** — 고급 보안 (RAKP-HMAC-SHA256, AES-CBC-128)

추가 보안 조치:

  • 익명 로그인 비활성화
  • 이름 없는 계정 비활성화
  • 강력한 비밀번호 사용

IPMI Commands

Command Description Notes
raw RAW IPMI 요청 전송
i2c I2C Master Write-Read
lan LAN 채널 설정 IPv4 설정 포함
lan6 IPv6 LAN 채널 설정
chassis chassis 상태 및 전원 제어 power on/off/cycle/policy
power 전원 명령어 단축 chassis power 대체
event 사전 정의된 이벤트 전송
mc Management Controller 상태 mc info/reset
sdr Sensor Data Repository sdr list/type
sensor 상세 센서 정보
fru FRU 정보 출력 fru print
sel System Event Log sel list/clear/elist
pef Platform Event Filtering
sol Serial-over-LAN activate/deactivate
user Management Controller 사용자 user list/set name/password
channel Management Controller 채널
session 세션 정보 출력
dcmi Data Center Management Interface power reading/get_limit/set_limit

IPMI Usage Examples

LAN 설정

# 현재 LAN 설정 확인
$ sudo ipmitool lan print
$ sudo ipmitool lan6 print

# IPv4 설정
$ sudo ipmitool lan set 1 ipaddr <BMC_IP>
$ sudo ipmitool lan set 1 netmask <Subnet_Mask>
$ sudo ipmitool lan set 1 snmp <SNMP>
$ sudo ipmitool lan set 1 defgw ipaddr <Gateway>

Cipher Suite 변경

# 현재 Cipher Suite 확인
$ sudo ipmitool lan print

# Cipher 3만 활성화
$ sudo ipmitool lan set 1 cipher_privs XXXaXXXXXXXXXXX

# Cipher 3과 17 활성화
$ sudo ipmitool lan set 1 cipher_privs XXaXXXXXXXaXXXX

전원 제어

# 시스템 상태 확인
$ sudo ipmitool chassis status

# 전원 켜기
$ sudo ipmitool chassis power on

# 정상 종료
$ sudo ipmitool chassis power soft

# 즉시 전원 끄기
$ sudo ipmitool chassis power off

# 전원 사이클 (재부팅)
$ sudo ipmitool chassis power cycle

# 전원 복구 정책 설정
$ sudo ipmitool chassis policy always-on

# 다음 부팅 장치 설정
$ sudo ipmitool chassis bootdev pxe
$ sudo ipmitool chassis bootdev cdrom
$ sudo ipmitool chassis bootdev bios

센서 모니터링

# 모든 센서 목록
$ sudo ipmitool sdr list

# 센서 타입별 목록
$ sudo ipmitool sdr type Temperature
$ sudo ipmitool sdr type Fan
$ sudo ipmitool sdr type 'Power Supply'

# 상세 센서 정보
$ sudo ipmitool sensor

System Event Log (SEL)

# SEL 정보 확인
$ sudo ipmitool sel info

# SEL 목록
$ sudo ipmitool sel list

# 확장 목록
$ sudo ipmitool sel elist

# SEL 초기화
$ sudo ipmitool sel clear

Serial-over-LAN (SOL)

# SOL 활성화
$ sudo ipmitool sol activate

# SOL 비활성화
$ sudo ipmitool sol deactivate

# 재시도 간격 설정
$ sudo ipmitool sol set retry-interval value

사용자 관리

# 사용자 목록
$ sudo ipmitool user list 1

# 사용자 이름 설정
$ sudo ipmitool user set name 2 <New_Name>

# 비밀번호 설정
$ sudo ipmitool user set password 2 <New_Password>

# 익명 사용자 비밀번호 설정
$ sudo ipmitool lan set 1 password <New_Password>

# 사용자 삭제 (이름 비우기)
$ sudo ipmitool user set name <ID> ""

DCMI (Data Center Management Interface)

# 전력 정보 확인
$ sudo ipmitool dcmi power reading

# 전력 제한 확인
$ sudo ipmitool dcmi power get_limit

# 전력 제한 설정
$ sudo ipmitool dcmi power set_limit

ipmievd (IPMI Event Daemon)

# ipmievd 활성화
$ sudo systemctl enable ipmievd

# ipmievd 시작
$ sudo systemctl start ipmievd

# ipmievd 상태 확인
$ sudo systemctl status ipmievd


Configuration

# BMC 정보 확인
$ sudo ipmitool mc info

# BMC 리셋
$ sudo ipmitool mc reset [warm | cold]

# LAN 설정
$ sudo ipmitool lan set 1 ipaddr <BMC_IP>
$ sudo ipmitool lan set 1 netmask <Subnet_Mask>
$ sudo ipmitool lan set 1 defgw ipaddr <Gateway>

# Cipher Suite 설정 (Cipher 3만)
$ sudo ipmitool lan set 1 cipher_privs XXXaXXXXXXXXXXX

# 사용자 설정
$ sudo ipmitool user set name 2 admin
$ sudo ipmitool user set password 2 <Strong_Password>


Examples

Example 1: 원격 서버 전원 제어

# 원격 서버 상태 확인
$ sudo ipmitool -I lanplus -H <BMC_IP> -U <username> -P <password> chassis status

# 원격 서버 전원 켜기
$ sudo ipmitool -I lanplus -H <BMC_IP> -U <username> -P <password> chassis power on

# 원격 서버 전원 끄기
$ sudo ipmitool -I lanplus -H <BMC_IP> -U <username> -P <password> chassis power off

Example 2: 센서 모니터링

# 모든 센서 확인
$ sudo ipmitool sdr list

# 온도 센서만 확인
$ sudo ipmitool sdr type Temperature

# 상세 센서 정보
$ sudo ipmitool sensor


Best Practices

  • Cipher 0 비활성화 (인증 우회 방지)
  • Cipher 3 또는 17 사용 (권장)
  • 기본 비밀번호 반드시 변경
  • 고유한 강력한 비밀번호 사용
  • 익명 로그인 비활성화
  • 이름 없는 계정 비활성화
  • IPMI 트래픽 관리 VLAN으로 제한
  • ipmievd 활성화하여 이벤트 syslog 전송
  • 정기적인 SEL 확인


Limitations

  • IPMI v1.5는 보안 취약점 존재 (v2.0 권장)
  • Cipher 0 비활성화 시 구형 장치 호환성 문제
  • LAN 인터페이스 설정 오류 시 원격 관리 불가
  • BMC 리셋 시 일시적 관리 중단


References


Related Pages

Knowledge Graph

Related

BIOSServerOpenBMCBMC

Redfish

Redfish는 IPMI의 차세대 관리 프로토콜. RESTful API 기반. JSON 데이터 형식.

# Redfish API 호출
curl -k -u admin:password https://bmc-ip/redfish/v1/Systems/1

# 시스템 상태 확인
curl -k -u admin:password https://bmc-ip/redfish/v1/Systems/1/Status

# 바이오스 설정 변경
curl -k -X PATCH -u admin:password \
  -H "Content-Type: application/json" \
  -d '{"ProcessorCoreCount": 16}' \
  https://bmc-ip/redfish/v1/Systems/1/Bios/Settings

OpenBMC

OpenBMC은 리눅스 기반 BMC 운영체제. Redfish API, Web UI, D-Bus 인터페이스 제공.

# OpenBMC D-Bus 인터페이스
busctl call org.openbmc.control.Host /org/openbmc/control/host0 org.openbmc.control.Host Start

# 바이오스 설정 (D-Bus)
busctl get-property org.openbmc.settings.Bios /org/openbmc/settings/Bios org.freedesktop.DBus.Properties Properties

# OpenBMC Web UI
https://bmc-ip (Redfish API + Web 인터페이스)