IPMI: Difference between revisions
Jump to navigation
Jump to search
(Phase 0.4: Expand IPMI) |
|||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= | = IPMI = | ||
{{Status | |||
|status=Draft | |||
|owner=Knowledge Agent | |||
|last_update=2026-07-15 | |||
|review=Pending | |||
}} | |||
{{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 == | |||
{| class="wikitable" | {| class="wikitable" | ||
! Concept | |||
! | ! Description | ||
!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)를 핵심으로 하는 독립 서브시스템입니다: | |||
<syntaxhighlight lang="mermaid"> | |||
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] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Workflow == | |||
{| class="wikitable" | |||
! Stage | |||
! Input | |||
! Output | |||
|- | |- | ||
| | | Check Status | ||
| | | ipmitool chassis status | ||
| | | Power/Sensor status | ||
|- | |- | ||
|chassis | | 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 === | |||
{| class="wikitable" | |||
! 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 | ||
|Management | | Data Center Management Interface | ||
|<syntaxhighlight> | | power reading/get_limit/set_limit | ||
# | |} | ||
$ sudo ipmitool | |||
=== 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 | |||
# | # Cipher 3과 17 활성화 | ||
$sudo ipmitool | $ sudo ipmitool lan set 1 cipher_privs XXaXXXXXXXaXXXX | ||
</syntaxhighlight> | </syntaxhighlight> | ||
# | ==== 전원 제어 ==== | ||
$ sudo ipmitool | |||
<syntaxhighlight lang="bash"> | |||
# 시스템 상태 확인 | |||
$ 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 | |||
$sudo ipmitool | |||
$sudo ipmitool | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 센서 모니터링 ==== | |||
<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> | ||
==== System Event Log (SEL) ==== | |||
<syntaxhighlight lang="bash"> | |||
# SEL 정보 확인 | |||
$ sudo ipmitool sel info | |||
# | |||
$ sudo | # SEL 목록 | ||
$ sudo ipmitool sel list | |||
# | # 확장 목록 | ||
$ sudo | $ sudo ipmitool sel elist | ||
# SEL 초기화 | |||
$ sudo ipmitool sel clear | |||
</syntaxhighlight> | </syntaxhighlight> | ||
# | ==== Serial-over-LAN (SOL) ==== | ||
$sudo ipmitool sol | |||
<syntaxhighlight lang="bash"> | |||
# SOL 활성화 | |||
$ sudo ipmitool sol activate | |||
# | # SOL 비활성화 | ||
$sudo ipmitool sol | $ sudo ipmitool sol deactivate | ||
# 재시도 간격 설정 | |||
$ sudo ipmitool sol set retry-interval value | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 사용자 관리 ==== | |||
<syntaxhighlight lang="bash"> | |||
# 사용자 목록 | |||
# | |||
$ sudo ipmitool user list 1 | $ sudo ipmitool user list 1 | ||
# | # 사용자 이름 설정 | ||
$ sudo ipmitool user set name 2 < | $ sudo ipmitool user set name 2 <New_Name> | ||
# | # 비밀번호 설정 | ||
$ sudo | $ sudo ipmitool user set password 2 <New_Password> | ||
# | # 익명 사용자 비밀번호 설정 | ||
$ sudo ipmitool lan set 1 password < | $ sudo ipmitool lan set 1 password <New_Password> | ||
# | # 사용자 삭제 (이름 비우기) | ||
$sudo ipmitool user set name <ID> "" | $ sudo ipmitool user set name <ID> "" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== DCMI (Data Center Management Interface) ==== | |||
<syntaxhighlight lang="bash"> | |||
# 전력 정보 확인 | |||
$ sudo ipmitool dcmi power reading | $ sudo ipmitool dcmi power reading | ||
# 전력 제한 확인 | |||
$ sudo ipmitool dcmi power get_limit | $ sudo ipmitool dcmi power get_limit | ||
# 전력 제한 설정 | |||
$ sudo ipmitool dcmi power set_limit | |||
</syntaxhighlight> | |||
==== ipmievd (IPMI Event Daemon) ==== | |||
<syntaxhighlight lang="bash"> | |||
# ipmievd 활성화 | |||
$ sudo systemctl enable ipmievd | |||
# ipmievd 시작 | |||
$ sudo systemctl start ipmievd | |||
# ipmievd 상태 확인 | |||
$ sudo systemctl status ipmievd | |||
</syntaxhighlight> | |||
== Configuration == | |||
<syntaxhighlight lang="bash"> | |||
# 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> | |||
</syntaxhighlight> | |||
== Examples == | |||
=== Example 1: 원격 서버 전원 제어 === | |||
<syntaxhighlight lang="bash"> | |||
# 원격 서버 상태 확인 | |||
$ 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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Example 2: 센서 모니터링 === | |||
<syntaxhighlight lang="bash"> | |||
# 모든 센서 확인 | |||
$ sudo ipmitool sdr list | |||
# 온도 센서만 확인 | |||
$ sudo ipmitool sdr type Temperature | |||
# 상세 센서 정보 | |||
$ sudo ipmitool sensor | |||
</syntaxhighlight> | |||
== Best Practices == | |||
* Cipher 0 비활성화 (인증 우회 방지) | |||
* Cipher 3 또는 17 사용 (권장) | |||
* 기본 비밀번호 반드시 변경 | |||
* 고유한 강력한 비밀번호 사용 | |||
* 익명 로그인 비활성화 | |||
* 이름 없는 계정 비활성화 | |||
* IPMI 트래픽 관리 VLAN으로 제한 | |||
* ipmievd 활성화하여 이벤트 syslog 전송 | |||
* 정기적인 SEL 확인 | |||
== Limitations == | |||
* IPMI v1.5는 보안 취약점 존재 (v2.0 권장) | |||
* Cipher 0 비활성화 시 구형 장치 호환성 문제 | |||
* LAN 인터페이스 설정 오류 시 원격 관리 불가 | |||
* BMC 리셋 시 일시적 관리 중단 | |||
== 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
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
- https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface
- https://github.com/scottjg/ipmitool
- https://www.openbmc.org/
Related Pages
Knowledge Graph
Related
→ BIOS → Server → OpenBMC → BMC
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 인터페이스)