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 文件。
問題 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(0.0.0.0@0@idrac-FWKL33X%2C+PowerEdge+R610%2C+%u7528%u6237%uFF1Aroot@1359354221250) 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

