Dell PowerEdge 服务器远程控制参考手册
本手册介绍 Dell PowerEdge 系列服务器的远程控制命令。
远程控制功能
本文所涉及的远程控制是指基于主板 Baseboard Management Controller (BMC) 或远程控制卡 Remote Access Controller (RAC)的操作办法,主要是指在主机加电、网络连通的前提下,远程开关机,切换启动媒介,查看主机硬件状态,远程查看控制台并安装操作系统。其中终端和 刷系统的功能需要安装企业版远程控制卡;开关机和查看硬件状态有 BMC 即可。
Dell PowerEdge 系列服务器都配有 BMC,也就是说中文网所有服务器都支持通过 IPMI LAN 接口远程开关机和查看硬件状态;所有 R610 机器都标配 iDRAC6 Express 卡,大部分 R610 机器配有 iDRAC6 Enterprise 卡。仅 Enterprise 卡有独立网口,且支持远程终端和刷系统。Enterprise 卡依赖于 Express 卡。
根据 Dell 参考资料,主机上若有 DRAC 卡,则 BMC 被屏蔽,DRAC 卡的 IPMI LAN 接口是默认关闭的,需要通过 DRAC 命令客户端 racadm 开启,或者直接用 racadm 代替通用 IPMI 命令客户端(如 ipmitool, freeipmi)实现其所有操作。
远程控制故障诊断
部分 PowerEdge 服务器如 R410、R510、R710 标配不含 Express 卡,若采购配置为 Enterprise 卡,那么渠道商方面可能擅自调换配件,在原标配基础上加个 Enterprise 卡,但这样的配置下,开机时会提示是 BMC(Baseboard Management Controller)而非 Enterprise 卡,这是因为没有 Express 卡则 Enterprise 卡无法工作。此时必须向戴尔销售或服务热线反馈,补发相应机型的 Express 卡配件(价格已包含在 Enterprise 卡中)。Express 卡的安装参考相应机型的 Hardware Owner‘s Manual,或者由戴尔工程师代为安装。
Express 卡只支持共享网口,而Enterprise 卡可以配为使用独立网口或者共享网口,有些 Enterprise 卡机器可能会发生配为独立网口但是无法连通的情况,此时可以到现场或者登陆主机系统恢复 DRAC 卡出厂设置,再启用独立网口。
iDRAC 卡支持简单的防火墙功能,但只能限定一个网段的访问,如果该功能启用但限定网段设置有误,那么无法使用远程控制通道。除了到现场重启机器进行配置外,可以 登陆主机系统,使用相应版本的本地 racadm 命令解除限定,或者在特定网络环境下欺骗一个该限定网段的地址,从而获得访问控制。注意该限定功能只影响 ssh 、远程 racadm 和 web 访问等功能,而 IPMI lan 是不受影响的,IPMI 目前也都不支持解除限定或恢复出厂设置等 DRAC 扩展功能。
远程控制命令客户端
远程控制命令行客户端有两种,一种是标准 IPMI 客户端,只支持远程开关机、切换启动媒介、查看主机硬件状态等有限的功能,另一种是戴尔 DRAC 客户端,支持更多功能。两种客户端都有本地(主机系统)和远程两种模式。
iDRAC 也支持 Web 访问,可以用 https://idrac_ip 访问。只有图形界面才支持介质映射。图形界面需要用 Internet Explorer 或 Firefox 访问,如果需要访问虚拟控制台功能,那么 Internet Explorer 需要安装 ActiveX 空间, Firefox 需要 Java Web Start 支持。详见“端口影射部分”。
标准 IPMI 客户端 ipmitool 的安装
# yum install OpenIPMI OpenIPMI-tools # CentOS 5 # yum intall ipmitool # CentOS 6
注意,仅为标准发行版内核且使用 open 接口时才需要安装 OpenIPMI 包(便于加载内核模块);系统部编译的静态内核有 IPMI 支持,而系统部裁剪的系统预装了 Dell srvadmin 不识别静态内核,其 instsvcdrv 服务会在开机时删掉 /dev/ipmi0 ,造成 IPMI open 接口无法访问,创建该设备文件便可以恢复使用。
# mknod /dev/ipmi0 c `awk ‘/ipmidev/{print $1}‘ /proc/devices` 0
戴尔 DRAC 客户端的安装
戴尔 DRAC 客户端 DTK 由于厂商工具包演变,依赖关系很混乱,dns1:/export/PXE/dtk_3.0_519_Linux/tools/dell-toolkit.rpm 是一个比较干净的版本。
# # also installs compat-libstdc++-33 on CentOS 6 # yum --nogpgcheck localinstall dell-toolkit.rpm
命令文件是 /opt/dell/toolkit/bin/racadm{,3,4,5,6},不同型号的板卡使用不同的版本的工具,而且 racadm6 似乎只支持 Enterprise 卡,没有本地客户端支持 Express 卡。
此外,DRAC 客户端支持 ssh 访问,可以 ssh 登陆 DRAC 地址,然后在 SM-CLP 命令行下使用 racadm (注意 help 不显示该命令)。
命令参考
注,
racadm 子命令的支持与具体版本有关;
racadmX 统一使用 racadm 表示,不再区分具体客户端,不区分本地和远程,远程命令加上 -r DRAC_IP -u root [-p PASSWORD];
ipmitool 命令统一使用 open 接口表示,使用 lan 接口需加上 -I lan -H DRAC_IP -U root [-f PASSWORD_FILE] 等选项;
IPMI lan 地址和密码参见各地管理机 /etc/sel.passwd 文件,注意该文件权限为 0600
帮助
# man ipmitool # racadm help # racadm getconfig -h
主机信息
# ipmitool delloem sysinfo # racadm getsvctag # racadm getsysinfo # syscfg --biosver
启用 DRAC 的 IPMI lan 功能
# racadm config -g cfgIpmiLan -o cfgIpmiLanEnable 1
主机电源状态/关机开机/冷重启/热重启/关机/开机
# ipmitool chassis power status/cycle/reset/soft/off/on # racadm serveraction powerstatus/powercycle/hardreset/?/powerdown/powerup
重启 DRAC 卡
# ipmitool mc reset cold/warm # racadm reset
恢复 DRAC 卡出厂设置
# racadm racresetcfg
解除 IP 段限制
# racadm config -g cfgRacTuning -o cfgRacTuneIpRangeEnable 0
设置 lan 接口参数
root 用户编号是 2 ,默认密码是 calvin
# ipmitool user list 1 ID Name Callin Link Auth IPMI Msg Channel Priv Limit 2 root true true true ADMINISTRATOR > racadm getconfig -u root # cfgUserAdminIndex=2 cfgUserAdminUserName=root # cfgUserAdminPassword=******** (Write-Only) cfgUserAdminEnable=1 cfgUserAdminPrivilege=0x000001ff cfgUserAdminIpmiLanPrivilege=4 cfgUserAdminIpmiSerialPrivilege=4 cfgUserAdminSolEnable=1 # ipmitool user set password 2 xxx # ipmitool delloem lan set dedicated # ipmitool lan set 1 ipaddr 172.24.0.x # ipmitool lan set 1 netmask 255.255.255.0 # ipmitool lan set 1 defgw ipaddr 172.24.0.230 # ipmitool lan print # racadm config -u root -g cfgUserAdmin -o cfgUserAdminPassword xxx # racadm config -g cfgLanNetworking -o cfgNicEnable 1 # racadm config -g cfgLanNetworking -o cfgNicIPv4Enable 1 # racadm config -g cfgLanNetworking -o cfgNicSelection 2 # racadm config -g cfgLanNetworking -o cfgNicIpAddress x.x.x.x # racadm config -g cfgLanNetworking -o cfgNicNetmask 255.255.255.0 # racadm config -g cfgLanNetworking -o cfgNicGateway x.x.x.x
设置下一次启动的引导媒介(似乎无法生效?)
# ipmitool chassis bootdev pxe # racadm config -g cfgServerInfo -o cfgServerFirstBootDevice PXE
设置引导顺序和重试
# syscfg --bootseq # 查看引导顺序 # syscfg --bootseq=hdd.emb.0,nic.emb.1 # syscfg --bootseqretry=enable
LCD 显示屏控制
# ipmitool delloem lcd status # ipmitool delloem lcd set mode userdefined xxx
导出/比对 IPMI 配置
# yum install freeipmi # bmc-config --checkout > bmc.conf # bmc-config --diff --file bmc.conf # ipmi-chassis-config --checkout > chassis.conf # ipmi-chassis-config --diff --file chassis.conf
注,freeipmi 只支持 IPMI 规范,不支持厂商扩展特性,ipmitool 则有一些支持。
iDRAC 端口映射配置
悲剧的是,IPMI 没有防火墙功能,iDRAC https 只支持限制单网段的访问,虽然还支持密码试探的频率限制。我们的硬件检测走的是 IPMI(管理机走的是 open 接口)。出于安全考虑,中文网的 iDRAC 除了管理机 mgr1 和 mrg2 放在了内网。无论从公司出口还是其他可信公网出口,都无法直接访问 iDRAC 网络,也就是说,无法使用其虚拟控制台功能,除非做端口映射。
iDRAC 功能 | 端口 | 说明 |
---|---|---|
iDRAC web | tcp/443 | https://idrac_ip |
iDRAC virtual screen | tcp/5900 | 在 iDRAC web 里点“虚拟控制台”时,Firefox 版会下载一个 jnlp 文件(包含会话信息,使用一次就会失效),java web start 根据该文件下载客户端,该客户端会连接 5900 端口打开虚拟控制台 |
iDRAC ssh | tcp/22 | ssh idrac_ip 登陆后可以使用 racadm 命令 |
IPMI | udp/623 | ipmitool -I lan -H idrac_ip |
在 ssh 客户端上转发端口
ssh 客户端如 SecureCRT, Putty 和 X-Shell 都支持本地端口转发,即登陆到中转机时本机上建立 SOCKS5 代理端口,访问本机的该端口时相当于在中转机上访问目标资源(如内网的 iDRAC )。一个 ssh 连接可以同时启用多个 SOCKS5 代理。本地端口转发的的配置因客户端而异,以 ssh(1) 为例,是
ssh some_host -D 127.0.0.1:443 -D 127.0.0.1:5900
需要注意的是,SOCKS5 代理应该侦听 127.0.0.x 以避免安全问题。这样可以支持同时访问多个内网 iDRAC
ssh some_host -D 127.0.0.1:443 -D 127.0.0.1:5900 -D 127.0.0.2:443 -D 127.0.0.2:5900
在中转机上映射端口
如果 iDRAC 使用了内网,可能映射这些端口 ipmi udp/623 和 idrac tcp/{22,443,5900},以 gw50 为例:
# ip addr add 172.24.0.230 dev eth1 # 所有内网 iDRAC 的网关 # ip addr add 0.0.0.0 dev eth3 # 公网映射入口 # arping -I eth3 -c 3 -U 0.0.0.0 # 通知路由器 ## net.ipv4.ip_forward=1 # 启用网关功能 # iptables -t nat -L -nv # 查看现有规则 # iptables -t filter -L -nv # iptables -t nat -I PREROUTING -i eth3 -d 0.0.0.0 -p tcp --dport 443 -j DNAT --to 172.24.0.50 # 公网进来的 https 流量 # iptables -t nat -I PREROUTING -i eth3 -d 0.0.0.0 -p tcp --dport 5900 -j DNAT --to 172.24.0.50 # 公网进来的虚拟控制台流量 # iptables -t nat -I PREROUTING -i eth3 -d 0.0.0.0 -p udp --dport 623 -j DNAT --to 172.24.0.50 # 公网进来的 IPMI 流量(可选) # iptables -t nat -I OUTPUT -d 0.0.0.0 -p tcp -m multiport --dports 22,443,5900 -j DNAT --to 172.24.0.50 # 网关产生的流量(可选) # iptables -t nat -I OUTPUT -d 0.0.0.0 -p udp --dport 623 -j DNAT --to 172.24.0.50 # 网关产生的流量(可选) # iptables -t nat -I PREROUTING -i eth3 -d 0.0.0.0 -p icmp --icmp-type 3 -j DNAT --to 172.24.0.50 # Path MTU # iptables -t nat -I POSTROUTING -o eth3 -s 172.24.0.0/24 -j SNAT --to 0.0.0.0 # 内网出去的流量 # iptables -t filter -I FORWARD -d 172.24.0.0/24 -j ACCEPT # 转发流量过滤,可以加上具体的公网源 IP 限定
注,上述 0.0.0.0 同一时间只能映射到一个内网地址。从网关向公网入口IP发起请求需特别注意,确认 nat/OUTPUT 已设射规则,不然实际访问的就是网关主机而非iDRAC系统。
iDRAC web 的问题
注意:iDRAC 使用缺省证书可能导致证书冲突 sec_error_reused_issuer_and_serial ,此时需要删除所有 Dell iDRAC 相关的证书,包含 iDRAC 服务器证书和证书机构中的 Dell inc. iDRAC 根证书(iDrac 使用 self-signed 证书,故归入此类)
另外,较低版本的 iDRAC 会遇到两个问题:1)使用 IE 浏览器关闭 iDRAC 界面而不注销,可能造成无法再次登录;2)Fireforx 浏览器打不开虚拟控制台,表现为无法保存 jnlp 文件。
缺陷版本(武汉) 设备类型 iDRAC6 硬件版本 0.01 固件版本 1.70 (Build 21) 固件更新 Fri Apr 1 17:07:41 2011 修复版本(东莞) 设备类型 iDRAC6 硬件版本 0.01 固件版本 1.80 (Build 17) 固件更新 Tue Nov 8 14:49:22 2011
问题 1)暂无解决办法。
问题 2)可以绕过。这个问题可能是由于产生的 jnlp 文件里面有个中文编码,造成 firefox 无法保存该启动文件。
>>> decodeURIComponent("=idrac-FWKL33X%2C+PowerEdge+R610%2C+%u7528%u6237%uFF1Aroot") URIError: malformed URI sequence decodeURIComponent("=idrac-FWKL33X%2C+PowerEdge+R610%2C+%u7528%u6237%uFF1Aroot"
实际上是 "title=idrac-FWKL33X,+PowerEdge+R610,+用户:root"
>>> decodeURIComponent("title=idrac-FWKL33X%2C+PowerEdge+R610%2C+User%3Aroot") "title=idrac-FWKL33X,+PowerEdge+R610,+User:root"
通过 firebug 记录原始请求,再用 openssl 获取完整的 jnlp 内容,将其中的 %u7528%u6237%uFF1A 改为 User%3A 即可,然后双击 jnlp 文件激活 java webstart 来下载并启动虚拟控制台。注意,该 jnlp 包含的 token 使用一次就失效,使用失效的 jnlp 会提示“登录失败,可能是网络太慢,请重试”,必须在 https 界面点“启动”产生新的 jnlp 内容。
# openssl s_client -connect 0.0.0.0:443 ... GET /viewer.jnlp([email protected]@idrac-FWKL33X%2C+PowerEdge+R610%2C+%u7528%u6237%[email protected]) HTTP/1.1 Host: 0.0.0.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: https://0.0.0.0/sysSummaryData.html?cat=C00&tab=T00&id=P00 Cookie: _appwebSessionId_=8f5ec0e255d7552abb915fde55cc25f5; batteriesIcon=status_normal; fansIcon=status_normal; intrusionIcon=status_normal; powerSuppliesIcon=status_normal; removableFlashMediaIcon=status_normal; temperaturesIcon=status_normal; voltagesIcon=status_normal Connection: keep-alive HTTP/1.1 200 OK Date: Mon, 28 Jan 2013 08:55:35 GMT Server: Mbedthis-Appweb/2.4.2 Content-type: application/x-java-jnlp-file Content-length: 3242 Connection: keep-alive Keep-Alive: timeout=60, max=2000 Cache-control: max-age=604800 Last-Modified: Mon Jan 28 08:55:35 2013 <?xml version="1.0" encoding="UTF-8"?> ...
参考资料
http://support.dell.com/support/edocs/software/smdrac3/idrac/
http://support.dell.com/support/edocs/systems/
http://stuff.mit.edu/afs/athena/dept/cron/documentation/dell-server-admin/en/DRAC_5/racugc1j.htm
After updating Java version, my application stops working.
http://java.com/en/download/help/clearcache_upgrade.xml
Java Network Launch Protocol (JNLP) Support
http://www.oracle.com/technetwork/java/javase/index-142562.html
http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#TRAVERSINGOFTABLES