上周又被叫去处理一台异地机房的 Dell 服务器Web 控制台页面转了半天进不去现场又没人最后靠几条 ipmitool 和 racadm 命令把机器救了回来。类似场景这些年我遇到过太多次——远程开关机、改 iDRAC 网络、批量配用户权限、抓日志定位硬件告警。使用 ipmi 和 racadm 配置 idrac 这套带外管理的活儿看着冷门可真到关键时刻比什么花哨的自动化平台都管用。这篇就把我平时用 ipmi 和 racadm 配置 idrac 的完整思路和手法摊开讲从概念捋顺到命令落地再到踩过的坑尽量让刚上手的朋友也能照着做一遍。内容偏运维实操适合管过几台服务器、想把手头批量管理理顺的人也适合刚接触带外管理、被 Web 界面卡住想找条后路的新人。1. 先搞清楚 IPMI、iDRAC、racadm 到底谁管谁1.1 三个名词的关系理清很多人一开始就被这三个词绕晕。我习惯用楼、物业、专用电话来打比方给新人讲一次基本就记住了。iDRAC 是 Dell 服务器上那块独立的带外管理卡Integrated Dell Remote Access Controller它相当于服务器里的小服务器有自己的网口、自己的固件、自己的管理环境只要机器接着电源哪怕主系统已经关机它就能独立工作。它管着远程开关机、虚拟控制台、硬件监控、固件升级这些事就像楼里那间常驻的物业办公室管着水电、门禁和监控。IPMI 是一套行业通用的管理协议标准全称 Intelligent Platform Management Interface定义了一大堆控制指令比如开机关机、读温度、查事件日志。它就像小区的通用对讲协议不同厂商的设备只要都遵守它就能互通。所以你可以用第三方工具 ipmitool 去操作 Dell 的 iDRAC也能用同一个工具去管别家的管理卡这正是 IPMI 存在的意义。racadm 则是 Dell 自家提供的命令行工具全称 Remote Access Controller Administrator。它不走 IPMI 协议而是直接通过 iDRAC 自己的接口下指令——本地操作系统里、SSH 登录、或者远程-r调用都行。相当于物业办公室的那部专用电话线能说的话比通用对讲机多得多配置项也更细。三者对比我整理成一张表看一遍就清楚了项目IPMIiDRACracadm性质行业协议标准Dell 带外管理硬件/固件Dell 官方命令行工具访问方式网络 UDP 623HTTPS / SSH / 专用网口本地 / SSH / 远程 -r能力范围基础电源、传感器、日志全量管理全量配置最细通用性跨厂商通用仅 Dell仅 Dell推荐场景快速开关机、跨品牌脚本Web 图形操作批量、精细、自动化一句话总结选型跨品牌、图省事、只做基础操作用 IPMI要精细配置、要批量、要自动化用 racadm。两者不是替代关系而是互补实际运维中经常是先用 IPMI 探个底再用 racadm 做正式配置。1.2 什么时候必须走命令行Web 界面能干的活不少但有几类场景命令行是真的更稳、更快这也是我这些年反复验证的结论。第一种Web 卡死或者证书过期导致登录不进。iDRAC 的 Web 服务偶尔会因为固件 bug、证书到期、会话占满而罢工但底层管理卡和 SSH 一般是活的这时候 racadm 和 ipmitool 就是唯一的救命通道。我遇到过好几次页面一直转圈SSH 进去racadm racreset一下就恢复了。第二种批量操作。手上十几台、几十台机器要统一改 iDRAC 网络、统一建监控账号、统一开 IPMI一台台点 Web 界面能点到天亮。用 racadm 脚本循环跑几分钟搞定还不会漏。第三种网络还没配好或配错了。新到货的机器 iDRAC 默认是 DHCP机房没有 DHCP 就没 IPWeb 根本进不去。这时候要么用前面板 LCD、要么进 BIOS 改要么直接在机器本地操作系统里跑 racadm 设置静态 IP后者最快。第四种自动化平台对接。监控系统、资产系统、批量运维平台想拿服务器硬件信息型号、序列号、温度、电源状态最省事的做法就是调 IPMI 或 racadm 命令把输出解析一下入库。1.3 网络与前置准备动手之前有几个前置条件必须确认清楚不然命令敲下去全是超时白费功夫。iDRAC 网口要插网线并通着电。iDRAC 有独立网口主板上标着 iDRAC 或带扳手图标那个也可以在 BIOS 里配置成共享网口Shared LOM跟业务网口共用。共享模式省网线但故障时会互相影响生产环境我更倾向独立网口。确认 iDRAC 的 IP。可以在 BIOS 里看或者看机器前面板 LCD如果有或者在本地系统里ipmitool lan print 1/racadm getniccfg查。默认账号通常是root默认密码是calvin。这个全网都知道新机器第一件事就是改掉后面会讲怎么改。放通端口IPMI 走 UDP 623SSH 走 TCP 22HTTPS 走 TCP 443。防火墙挡了就啥也别谈尤其是 623 这个 UDP 端口很多安全策略默认不放。2. IPMI 工具链落地从装包到连通性验证2.1 ipmitool 安装与第一轮探测ipmitool 基本是所有 Linux 发行版都有的包装起来很简单。# Debian / Ubuntu sudo apt-get install ipmitool # RHEL / CentOS / Rocky / AlmaLinux sudo yum install ipmitool # 或 sudo dnf install ipmitool装完第一件事是探测管理卡确认能通、确认固件和厂商信息ipmitool -I lanplus -H 192.168.10.50 -U root -P calvin mc info这里-I lanplus是关键它指定用 IPMI v2.0 的 LAN 接口支持加密认证。现在的主流 iDRAC 基本都要求用 lanplus用老的-I lan会直接报认证失败这一点新手最容易踩。mc info的输出会告诉你管理卡固件版本、IPMI 版本、厂商 IDDell 是 674、支持的通道数。这一步能通说明网络、账号、协议都没问题后面才好办。如果这里就失败先别急着怀疑密码多半是网络或端口的问题。提示密码直接写在命令行里会留在 shell history生产环境建议用-E从环境变量读或者-f从文件读避免明文泄露在日志里。2.2 电源、传感器、日志三大高频命令我平时用得最多的就是这三类几乎每天都在敲把它当成工具箱里的三把常用螺丝刀就行。电源控制ipmitool -I lanplus -H IP -U user -P pass chassis power status ipmitool -I lanplus -H IP -U user -P pass chassis power on ipmitool -I lanplus -H IP -U user -P pass chassis power off ipmitool -I lanplus -H IP -U user -P pass chassis power cycle ipmitool -I lanplus -H IP -U user -P pass chassis power resetpower off是软关机发 ACPI 信号给系统power cycle是硬断电再上电power reset是不下电直接重启。这三个区别很大系统卡死时power off常常没反应得直接power cycle。我现在远程救机器先试power off等十几秒看状态不行再power cycle尽量避免无谓的硬断电伤硬盘。传感器读取ipmitool -I lanplus -H IP -U user -P pass sdr type Temperature ipmitool -I lanplus -H IP -U user -P pass sensor listsdr按类型过滤sensor list全量输出。做温度监控的时候我一般先sensor list看一下所有传感器的名字再挑关键的CPU、进风、内存写进采集脚本这样不容易漏。日志查询ipmitool -I lanplus -H IP -U user -P pass sel info ipmitool -I lanplus -H IP -U user -P pass sel elist ipmitool -I lanplus -H IP -U user -P pass sel listsel elist会把人能看懂的事件描述一起输出比sel list那一串十六进制好读太多。查硬件告警我基本只用elist。还有一个实用命令是ipmitool sol activate能通过 SOLSerial over LAN拿到串口控制台系统进不去时看启动过程特别有用。2.3 IPMI over LAN 的安全配置IPMI over LAN 默认可能是关的需要手动开。用 racadm 打开下一章细讲或者用 ipmitool 直接改网络设置ipmitool -I lanplus -H IP -U user -P pass lan set 1 ipsrc static ipmitool -I lanplus -H IP -U user -P pass lan set 1 ipaddr 192.168.10.50 ipmitool -I lanplus -H IP -U user -P pass lan set 1 netmask 255.255.255.0 ipmitool -I lanplus -H IP -U user -P pass lan set 1 defgw ipaddr 192.168.10.1这里有个坑改完网络参数后管理卡可能需要重启才生效或者当前连接会断得用新 IP 重连。改 IP 这种操作一定要在能物理接触机器的前提下做不然 IP 改错就彻底失联了我在第 5 章会专门讲这个坑。IPMI 的安全性一直被诟病早期版本有认证绕过漏洞比如著名的 IPMI 2.0 cipher 0 问题所以配置时要留个心眼关掉弱的 cipher suite在 racadm 里可以设 IPMILan 的加密套件不要用默认密码calvinIPMI 端口不要暴露到公网只在管理网段开放能用 racadm / Redfish 的地方尽量少开 IPMI另外要提前知道一个行业趋势Dell 从较新的固件版本起iDRAC9 后期、iDRAC10逐步弱化甚至移除了 IPMI 支持主推 Redfish 和 RACADM。所以你如果是新采购的机器IPMI 可能压根用不了得直接上 racadm。这一点做方案选型时一定要提前确认别等交付了才发现命令跑不通。3. racadm 实战用户、网络、服务项一次性配齐3.1 racadm 的三种运行姿势racadm 有三种跑法场景不同选不同搞清楚这个少走很多弯路。第一种本地操作系统里跑。在装了 Dell OpenManage 或 iDRAC Service Module 的系统里直接敲racadm就能操作本机的 iDRAC不用网络、不用密码最稳。机器网络全挂了、只剩本地登录时这条通道能救命。第二种SSH 进 iDRAC 跑。ssh rootidrac_ip登录进去进去后是 racadm 的命令行环境然后直接敲子命令。这种方式适合远程单机操作而且用的就是管理卡自带的 racadm 版本不存在版本不匹配的问题。第三种远程-r调用。在任意一台装了 racadm 客户端的机器上用racadm -r idrac_ip -u root -p pass 子命令直连管理卡执行。批量脚本基本都用这种因为它不需要交互式登录每条命令带参数就能跑。# 远程执行示例 racadm -r 192.168.10.50 -u root -p calvin getsysinfogetsysinfo会返回机器型号、BIOS 版本、iDRAC 版本、电源状态、内存等一大堆信息是巡检时第一个敲的命令相当于给机器做一次全身摸底。3.2 用户与权限配置iDRAC 默认只有一个 root 用户运维规范上肯定不够用。我一般会建三类账号管理员、监控只读、应急账号。分开的意义在于权限最小化监控平台只给只读就算被利用也翻不了天。# 查看现有用户一般有 16 个用户槽位 racadm -r IP -u root -p calvin get iDRAC.Users # 配置第 3 个用户槽位 racadm -r IP -u root -p calvin set iDRAC.Users.3.UserName monitor racadm -r IP -u root -p calvin set iDRAC.Users.3.Password StrongPass!2024 racadm -r IP -u root -p calvin set iDRAC.Users.3.Privilege 0x005 racadm -r IP -u root -p calvin set iDRAC.Users.3.Enable EnabledPrivilege是个位掩码这个值是很多人搞不清的地方我列个表权限值含义0x001登录0x002配置0x004操作开关机等0x008只读0x00f登录配置操作只读普通用户0x1ff管理员全部权限监控账号给0x005登录操作或者0x009登录只读管理员给0x1ff。这个位掩码是或关系不是十个独立的开关所以0x005是 1 和 4 两位叠加的结果。改完用户配置建议racreset一下让配置彻底生效。注意iDRAC 用户槽位有上限一般 16 个别乱建用完要记得回收。密码复杂度策略在iDRAC.Users的相关属性里设简单密码会被直接拒绝。3.3 网络与服务开关iDRAC 网络配置是 racadm 用得最多的地方# 查看当前网络配置 racadm -r IP -u root -p calvin getniccfg # 设置静态 IP一行搞定 racadm -r IP -u root -p calvin setniccfg -s 192.168.10.50 255.255.255.0 192.168.10.1 # 切换回 DHCP racadm -r IP -u root -p calvin setniccfg -dsetniccfg -s后面依次是 IP、掩码、网关顺序别搞反。改完网络如果 IP 变了当前连接会断得用新 IP 重连。建议先getniccfg存档一份当前配置万一改错还能对照恢复。服务开关也是高频操作比如开 IPMI、开 SSH、开 Webracadm -r IP -u root -p calvin set iDRAC.IPMILan.Enable Enabled racadm -r IP -u root -p calvin set iDRAC.SSH.Enable Enabled racadm -r IP -u root -p calvin set iDRAC.WebServer.Enable Enabled racadm -r IP -u root -p calvin set iDRAC.Telnet.Enable DisabledTelnet 明文传输一律关掉。SNMP 如果要接监控平台就开iDRAC.SNMP.AgentEnable并配好团体字。另外还有几个安全相关项值得关注比如iDRAC.IPBlocking可以开启登录失败封锁防止暴力破解配置后台会话超时也能降低被冒用的风险。3.4 配置备份与批量下发这是 racadm 比 IPMI 强的地方——可以把整机配置导出成 XML再导到其它机器实现配置模板化。# 导出配置到文件 racadm -r IP -u root -p calvin get -f idrac_config.xml -t xml # 导入配置可以加 -c 只检查不应用 racadm -r IP -u root -p calvin set -f idrac_config.xml -t xml导出的时候注意含密码的字段默认会被掩码显示成星号导入到新机器时会用掩码占位所以密码这类需要单独再设。批量下发时我一般先导出一台标准机的配置把 IP、主机名这些个性化的字段手动改掉再循环导入其它机器。这个思路比逐项配置省心得多而且能保证整批机器的配置一致。4. 固件升级、日志导出与自动化运维4.1 固件升级的两种路径iDRAC 固件升级有两种主流做法。一种是从远程服务器拉取racadm -r IP -u root -p calvin fwupdate -g -u ftpuser -p ftppass -a ftp_ip -d /firmware/ -f iDRAC_fw.bin-g表示从网络获取-a是文件服务器地址-d是目录-f是文件名。这要求有一台内网的文件服务器。另一种是本地通过 Web 上传或者用racadm update命令走 HTTPS 从 Dell 官方仓库下载需要 iDRAC 能访问外网。生产环境一般用内网文件服务器的方式因为管理卡通常没有外网。升级过程会比较久iDRAC 自身固件升级后管理卡会重启连接会断几分钟这是正常的别以为挂了。升级 BIOS 或其它部件固件时会创建 job可以用racadm jobqueue view查看进度racadm -r IP -u root -p calvin jobqueue view这里有个经验固件升级尽量安排在维护窗口并且升级前先确认机器的冗余状态。如果机器是双电源但其中一路已经告警升级过程可能触发意外关机的风险。另外升级 BIOS 通常需要重启系统才生效别想当然以为升级完就完事了。4.2 日志抓取与故障定位出硬件故障时日志是第一手线索。racadm 能抓好几类日志# 系统事件日志 racadm -r IP -u root -p calvin getsel # iDRAC 自身的操作日志 racadm -r IP -u root -p calvin getraclog # 生命周期日志最全包含所有事件 racadm -r IP -u root -p calvin lclog view生命周期日志Lifecycle Log是最有价值的它把固件更新、配置变更、硬件告警全串在一起排障时先看它。要导出成文件方便分析racadm -r IP -u root -p calvin lclog export -f lc.log另外碰到需要联系厂商的情况工程师一般会要SupportAssist 收集或日志包可以用racadm supportassist collect一键打包。这个命令能把诊断信息、日志、配置汇总好省得来回扯皮问你要这要那。我定位硬件告警的套路通常是先lclog view看最近事件锁定告警时间点再用getsel看对应的硬件事件最后对照机器实际物理状态哪个槽位、哪根内存确认。三者交叉验证基本不会误判。4.3 批量脚本化单机命令会了之后批量就是套个循环的事。我一般写个 bash 脚本把 IP 列表读进来循环执行。#!/bin/bash # batch_config.sh - 批量配置 iDRAC 用户 USERroot PASScalvin IP_LISTidrac_ips.txt while read -r IP; do echo 处理 $IP racadm -r $IP -u $USER -p $PASS set iDRAC.Users.3.UserName monitor racadm -r $IP -u $USER -p $PASS set iDRAC.Users.3.Password StrongPass!2024 racadm -r $IP -u $USER -p $PASS set iDRAC.Users.3.Privilege 0x005 racadm -r $IP -u $USER -p $PASS set iDRAC.Users.3.Enable Enabled racadm -r $IP -u $USER -p $PASS racreset sleep 90 done $IP_LIST这个脚本虽然朴素但能解决 90% 的批量场景。缺点是不并发、慢如果要并发可以用xargs -P或者写成 Ansible 模块Dell 有官方dellemc.openmanage集合底层调的也是 Redfish。写脚本时我踩过的坑racadm 对某些操作会返回非零退出码但其实是成功的比如 racreset 会断开连接所以脚本里别太严格地依赖退出码判断成败最好把每条命令的输出日志留下来人工抽查更稳妥。5. 常见问题速查与踩坑记录5.1 故障排查对照表现象可能原因排查/解决ipmitool 连接超时网络不通/防火墙挡 UDP 623ping 管理 IP查管理网段 ACLipmitool 认证失败密码错/未开 IPMI over LAN/需 lanplus确认-I lanplus用 racadm 开 IPMILanracadm 连不上SSH 未开/端口错/账号权限不足确认iDRAC.SSH.Enable检查-r用法Web 登录转圈会话满/证书过期/固件 bugracadm racreset清理会话改 IP 后失联IP/掩码/网关填错前面板 LCD 或本地系统里racadm getniccfg核对新机器 IPMI 命令全报错新固件已移除 IPMI改用 Redfish 或 racadm固件升级卡住job 阻塞/文件格式不对jobqueue view看进度确认 .bin 文件高级功能用不了授权级别不够racadm get iDRAC.LicenseInfo查授权5.2 我踩过的坑坑一忘了 lanplus。早年用-I lan怎么都连不上折腾半天才发现新固件只认-I lanplus。现在我的命令模板里-I lanplus是固定项再也不会忘。坑二改网络把自己关在门外。有次远程setniccfg手快把网关敲错IP 也在别的网段结果彻底失联最后不得不让现场同事帮忙。从那以后改网络前我先确认有本地通道前面板或本地系统并且会先getniccfg存档一份。坑三默认密码没改被扫。有批测试机偷懒没改calvin结果管理网被扫到虽然没出大事但被安全审计通报了。现在新机器第一件事就是改密码写进标准交付流程。坑四racadm 版本不匹配。用老版本 racadm 客户端去管新固件 iDRAC有些新属性不识别报object not found。解决方法是升级本地 racadm 到对应版本或者干脆 SSH 进 iDRAC 里用自带的 racadm版本肯定匹配。坑五批量脚本里 racreset 之后立刻执行下一条。racreset 会让管理卡重启一分钟左右紧接着敲命令必然失败。脚本里 racreset 之后要加sleep 90之类的等待或者把重启类操作放到最后统一做。坑六忽略 License。有些高级功能完整的 SOL、虚拟控制台、部分 Redfish 特性需要 iDRAC Express 或 Enterprise 授权。新机器如果是基础版授权命令能连但功能用不了别以为是配置问题先查 License 再排查。坑七把管理网和业务网混在一起。早期为了省事把 iDRAC 配到业务网段结果业务网一抖动管理通道也跟着断远程救机器等于白搭。后来统一规划了独立管理网段虽然多插一根网线但故障隔离彻底运维心里踏实多了。这些坑单看都不复杂但真遇到时如果没有思路能在机房耗掉大半天。我现在维护的这套服务器基本都靠一个 racadm 的封装脚本加 IPMI 探测兜底。真要给点建议判断一台机器到底该用 IPMI 还是 racadm最简单的方法是先跑三条命令——mc info看 IPMI 通不通getsysinfo看 racadm 通不通get iDRAC.LicenseInfo看授权够不够。三条跑完方案的边界就清楚了。剩下的就是把账号、网络、日志这几项做成模板新机器上架时一把梭比等故障了再临时抱佛脚省心得多。最后再分享一个小技巧把常用的 racadm 和 ipmitool 命令按场景分组存成几个 shell 别名比如dirac-net、dirac-user、dirac-log敲起来快也不容易记错参数。