IPMI带外管理教程

参考:Ipmitool工具的使用方式 ipmi带外管理

IPMI介绍

需求

有的时候,ssh无法连接到服务器,如

  • 死机,需要重启
  • 服务器的临时路由表配错,造成ssh无法访问服务器,需要重启

类似情况,为了能不亲自去机房就管理服务器,需要使用远程控制装置,也即带外管理,IPMI即是其中一种。

带外管理

  • 经过服务器所在的工作网络 来连接服务器(如通过ssh),此通道名曰数据通道。由数据通道理服务器,称带内管理。当服务器或工作网络出现物理故障时,就无法带内管理。
  • 使用独立的管理通道连接服务器,不论开机与否,也不论工作网络是否正常,均可进行连接与控制。由管理通道管理服务器,称带外管理。

IPMI的原理

IPMI 独立于 CPU BIOS 和 操作系统,故不论开机否,皆可监视控制服务器。ipmi 是一种规范的标准,其中最重要的物理部件就是 BMC (Baseboard Management Controller),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以监控各个传感器的数据并记录各种事件的日志。

引自:Ipmitool工具的使用方式

配置IPMI

有两种方法配置IPMI:进入BIOS或使用impitool软件。进入BIOS配置IMPI,详见IPMI远程管理功能使用介绍.docx。而impitool方法介绍如下,以下操作均在服务器上,用ssh连接之即可完成

安装ipmitool

sudo apt install ipmitool

ipmi的网络配置

显示ipmi的网络配置

sudo ipmitool lan print 1

返回

Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5 PASSWORD
                        : User     : MD2 MD5 PASSWORD
                        : Operator : MD2 MD5 PASSWORD
                        : Admin    : MD2 MD5 PASSWORD
                        : OEM      : MD2 MD5 PASSWORD
IP Address Source       : Static Address
IP Address              : 192.168.245.33
Subnet Mask             : 255.255.255.0
MAC Address             : ac:1f:6b:a7:0b:39
SNMP Community String   : public
IP Header               : TTL=0x00 Flags=0x00 Precedence=0x00 TOS=0x00
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP      : 192.168.245.97
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 1,2,3,6,7,8,11,12
Cipher Suite Priv Max   : XaaaXXaaaXXaaXX
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM
Bad Password Threshold  : 0
Invalid password disable: no
Attempt Count Reset Int.: 0
User Lockout Interval   : 0

IPMI的网络有两模式:

  • 自动获取(dhcp),设置方法如下:

    sudo ipmitool lan set 1 ipsrc dhcp

    它会自动获取到ipmi的ip、掩码、网关

  • 静态(static),设置方法如下

    sudo ipmitool lan set 1 ipsrc static

    需要自己配ipmi的ip、掩码、网关

  • 设置ipmi的ip

sudo ipmitool lan set 1 ipaddr <ipmi的ip>
  • 设置ipmi的掩码
sudo ipmitool lan set 1 netmask <ipmi的掩码>
  • 设置ipmi的网关
sudo ipmitool lan set 1 defgw ipaddr <ipmi的网关>

配置imp账号

  • 查看通道

    sudo ipmitool channel info [<通道号>==0,1,2,3...,12, 无13, 14,15; 缺省=15]

    一般 15号通道返回, 表示支持网页图形界面控制, 此通道的用户需要开ipmi=on权限, 才能用网页远程控制

    Channel 0xf info:
      Channel Medium Type   : System Interface
      Channel Protocol Type : KCS
      Session Support       : session-less
      Active Session Count  : 0
      Protocol Vendor ID    : 7154

    1号通道返回如下, 表示支持 ipmi 协议, 此通道的用户需要开ipmi=on权限, 才能用ipmi命令搞远程控制

    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    : enabled
        User Level Auth     : enabled
        Access Mode         : always available
      Non-Volatile Settings
        Alerting            : enabled
        Per-message Auth    : enabled
        User Level Auth     : enabled
        Access Mode         : always available
  • 查看用户

    sudo ipmitool user list [<通道号>==0,1,2,3...,12, 无13, 14,15; 缺省=15]
    ID  Name	     Callin  Link Auth	IPMI Msg   Channel Priv Limit
    1                    true    false      false      Unknown (0x00)
    2   ADMIN            true    false      false      Unknown (0x00)
    3                    true    false      false      Unknown (0x00)
    4                    true    false      false      Unknown (0x00)
    5                    true    false      false      Unknown (0x00)
    6                    true    false      false      Unknown (0x00)
    7                    true    false      false      Unknown (0x00)
    8                    true    false      false      Unknown (0x00)
    9                    true    false      false      Unknown (0x00)
    10                   true    false      false      Unknown (0x00)

    一般服务器出厂自带的用户名ADMIN,其出厂权限如下:

    • 15号通道, 即缺省通道
    sudo ipmitool user list # 缺省channel号 是 15
    ID  Name	         Callin  Link Auth	IPMI Msg   Channel Priv Limit
    2   ADMIN            true    false      false      Unknown (0x00)
    【下面的命令用此id=2】【需callin=true,浏览器才能登录】
    • 1号通道
    sudo ipmitool user list 1 # 1 是channel 号, 一般不改

    返回

    ID  Name	         Callin  Link Auth	IPMI Msg   Channel Priv Limit
    2   ADMIN            false    false      true         ADMINISTRATOR (0x00)
    【IPMI=true才能使用ipmi的命令行登录】
  • 若返回如上, 则不需要改用户权限

  • 若权限不对, 则执行以下命令

    sudo ipmitool channel setaccess 15 2 callin=on link=off ipmi=on privilege=0x0 # 缺省channel号 是 0
    # 和
    sudo ipmitool channel setaccess 1 2 callin=off link=off ipmi=on privilege=0x4 # 1 是 channel 号
    
    # 2是用户号, 根据`sudo ipmitool user list [1]`返回的用户号来写
    # Privilege-level=Administrator

    Privilege levels privilege 的取值

    • 0x0 - Unknown [初始化为这个, 可以不改]

    • 0x1 - Callbac

    • 0x2 - User

    • 0x3 - Operator

    • 0x4 - Administrator [如果要改, 一般就设成这个]

    • 0x5 - OEM Proprietary

    • 0xF - No Access

    得到上述所需权限

  • 交互地修改密码: 对所有通道的第2号用户重设密码

    sudo ipmitool user set password 2

    然后输入两边密码 junipmi

    或直接非交互地执行

    sudo ipmitool user set password 2 <密码>  && sudo sed -i '$d' /root/.zsh_history

    删去最后1行 避免暴露密码

数据线路与管理线路

线路连接

ipmi的网口接线有两种方法:

  • 独立线路:
    • 管理线路:一根单独的网线,一段插在服务器上,另一端插在一个交换机上,然后通到外网。此线路仅供ipmi使用。
    • 数据线路:另一单独的网线,一段插在服务器上,另一端插在另一交换机上,然后通到外网。此线路供ssh、http(s)等使用,ipmi不用。
  • 共用线路:上述两线路合并成一个。优点是可以节约一个服务器的网络插口,以及交换机;缺点是,当数据线路坏了,就得去机房修,ipmi用不了。参考

ip设置

不论哪种接线,服务器有以下两个IP(通常是局域网IP):

  • /etc/network/interfaceseth0(或enp97s0f0等) 的address(即ip)
  • 上文设置的ipmi的ip

此二IP必须不同。若是同一个IP,企图用端口区分——ipmi用特定的端口,而ssh、http(s)等用其他特定端口,则从无法连接到ipmi,例如,用浏览器访问此IP,则会显示的是服务器的http(s)的页面,而非ipmi管理页面。

NAT

为了能在外网用浏览器连接ipmi管理服务器,需要在ipmi的网关上,设置NAT,使得<ipmi的网关的外网ip>:<ipmi的NAT端口> 转发到 >ipmi的ip>:443。其中443是ipmi的https端口。

ipmi各种连接端口

以 Supermicro IPMI (firmware SMT_X9_218) 为例

端口 对应协议 协议版本
22/tcp ssh Dropbear sshd 2012.55 (protocol 2.0)
80/tcp http lighttpd
443/tcp https lighttpd
623/tcp ipmi-rmcp SuperMicro IPMI RMCP
623/udp IPMI ?
1900/udp UPnP SSDP ?
5900/tcp vnc, ikvm (远程桌面重定向) VNC (protocol 3.8)
5985/tcp wsman
49152/tcp upnp ntel UPnP reference SDK 1.3.1 (Linux 2.6.17.WB_WPCM450.1.3; UPnP 1.0)

详见:

从外部连接ipmi

有多种方法从其他机器连接ipmi来管理服务器:浏览器、命令行工具SMCIPMITool、专用GUI工具IPMIView,详见简介。一般用浏览器就好了。

浏览器

机房的局域网内,浏览器访问https://<ipmi的ip>;机房外的网络,浏览器访问https://<ipmi的网关的外网ip>:<ipmi的NAT端口>

然后在如下界面中输入ipmi账号和密码

ScreenShot 2019-12-19 23.54.27

更多用法,详见IPMI远程管理功能使用介绍.docx

桌面远程操控

ipmi 支持基于 iKVM 技术, 将服务器的桌面图像发送到远端, 进行桌面远程控制. 有两种方法来实现, 分别是 浏览器中的iKVM/HTML5 和 本地程序Java iKVM Viewer. 此二方法等效.

浏览器中iKVM/HTML5

本法可直接在浏览器中进行远程桌面控制, 本地程序Java iKVM Viewer比方便. 但老旧版本的服务器的ipmi不支持iKVM/HTML5功能, 在下图中找不到iKVM/HTML5按钮.

在浏览器中连上ipmi的控制页面 (如上文), 如下点击如下

image-20200206175520485

于是浏览器弹出另一个标签页, 内容如下, 在此可进行服务器桌面的远程操控.

image-20200206175801169

使用Java iKVM Viewer

本法依赖于本地的Java, 用以运行 jnlp 文件来加载 Java iKVM Viewer, 以进行远程桌面控制.

获得jnlp文件

在浏览器中连上ipmi的控制页面 (如上文), 然后如下点

ScreenShot 2020-02-06 18.22.03

或者点击如下

image-20200206180245990

浏览器会下载一个文件 launch.jnlp. 这个文件需要本地安装有Java才能运行.

端口修改

若你采用了 ssh的端口映射 来连接远程服务器, 则需要把 launch.jnlp 中的端口改成ssh映射到的本地端口.

例如, 若连接服务器采用命令为

ssh <用户名>@<跳板机> -L <ipmi-https-本地端口>:localhost:443 \
<ipmi-ipmi命令行工具-本地端口>:localhost:623 \
<ipmi-ikvm-本地端口>:localhost:5900

其中 443 是ipmi的https默认端口, 623 是ipmi的命令行工具默认端口, 5900 是ipmi的ikvm默认端口.

则需要把 launch.jnlp 文件第一行的 443 改为 <ipmi-https-本地端口>,

<jnlp spec="1.0+" codebase="https://localhost:443/">

文件结尾的 5900 改为 <ipmi-ipmi命令行工具-本地端口>, 5900 改为 <ipmi-ikvm-本地端口>.

  <application-desc main-class="tw.com.aten.ikvm.KVMMain">
    <argument>localhost</argument>
    <argument>+0eyiVR7u06ENfW</argument>
    <argument>2875U+A==</argument>
  <argument>null</argument>
    <argument>63630</argument>
    <argument>5900</argument>
    <argument>623</argument>
    <argument>0</argument>
    <argument>0</argument>
  </application-desc>
</jnlp>
启动远程连接

双击 launch.jnlp 文件, 然后会依次弹出窗口如下,

  • 继续

image-20200206182014080

  • 等完成验证, 啥也别点

ScreenShot 2020-02-06 18.24.37

  • 运行

ScreenShot 2020-02-06 18.24.40

  • 然后弹出Java iKVM Viewer窗口, 在其中可以进行远程桌面控制.

ScreenShot 2020-02-06 18.25.07

报错Authentication failed

如果从一个服务器下载了 launch.jnlp,重启服务器或过了一段时间服务器端的ikvm登陆令牌就会变化,导致之前下载的 launch.jnlp文件结尾那段里写的令牌 +0eyiVR7u06ENfW 2875U+A==失效,

<application-desc main-class="tw.com.aten.ikvm.KVMMain">
    <argument>localhost</argument>
    <argument>+0eyiVR7u06ENfW</argument>
    <argument>2875U+A==</argument>
  <argument>null</argument>
    <argument>63630</argument>
    <argument>5900</argument>
    <argument>623</argument>
    <argument>0</argument>
    <argument>0</argument>
  </application-desc>
</jnlp>

此时运行 launch.jnlp会报错“Authentication failed”(如下图),无法连接远程桌面。

image-20241029195346156

解决办法:重新从ipmi控制网页下载launch.jnlp(其中的令牌更新了),然后运行launch.jnlp,才能连上远程桌面。

终端

命令格式

ipmitool除了可以直接在服务器上配置ipmi(见上文),还可以从另一台电脑的终端 远程地控制服务器的ipmi。格式:

ipmitool -H <远程ipmi的ip> -p <远程ipmi的端口>  -I lanplus -U <远程ipmi的用户名> [-P <远程ipmi的密码>] <ipmi的命令>
  • -p <远程ipmi的端口> : 缺省为 623,即iipmi-rmcp协议的默认端口。当使用NAT,将 服务器集群的ipmi的公网ip:ipmi的公网端口 NAT 成某服务器的 ipmi的内网ip:ipmi的内网端口 ,则此参数写为 -H <服务器集群的ipmi的公网ip> -p <ipmi的公网端口>

  • -P <远程ipmi的密码> : 此参数若不加,则为交互式输入ipmi的密码,推荐之;否则加此参数,要输入密码明文(不建议)

  • <ipmi的命令> : 相当于在服务器上执行了命令 sudo ipmitool <ipmi的命令> ,例如 <ipmi的命令> = lan print 1 ,以显示远程服务器上显示ipmi的网络配置

常用的<ipmi的命令>

  • chassis power status :查看远程服务器电源状态
  • chassis power reset :重启远程服务器, 相当于按重启机箱上的按键, 掉电后立即上电
  • chassis power reset : 重启远程服务器, 从掉电到上电有1秒钟的间隔
  • chassis power off :关闭远程服务器电源
  • chassis power on :然后再开启远程服务器. 这样也相当于按重启机箱上的按键

服务器死机处置办法

以下操作均等效于按机箱上的电源键. 不推荐用power reset, 而是先power offpower on, 因为直接 power reset 掉电后立即上电, 不知道是否关机成功, 而先 power offpower on 则可根据返回判断是否关机成功.

用浏览器重启

首先考虑用浏览器连接ipmi:

  • Power Down, 看见 Power On 按钮从灰变亮, 则说明关电源成功.
  • 此时再点 Power On, 看见 Power On 按钮从亮变灰, 且点 Refresh Console Preview 后显示开机界面, 则说明开机成功.

image-20200206211639722

用命令重启

若用浏览器连ipmi重启服务器不成功, 则尝试用命令行重启服务器

  • 关机
sudo ipmitool -H <远程ipmi的ip> -p <远程ipmi的端口>  -I lanplus -U <远程ipmi的用户名> [-P <远程ipmi的密码>] chassis power off

返回如下则关机成功

Chassis Power Control: Down/Off
  • 开机
sudo ipmitool -H <远程ipmi的ip> -p <远程ipmi的端口>  -I lanplus -U <远程ipmi的用户名> [-P <远程ipmi的密码>] chassis power on

返回如下则开机成功

Chassis Power Control: Up/On

返回如下则是<远程ipmi的密码>输入错误

Error: Unable to establish IPMI v2 / RMCP+ session
  • 浏览器上查看

然后在浏览器上ipmi页面, 点 Refresh Console Preview 后显示开机界面, 则说明开机成功.

远程控制开机界面

若上面虽然重启成功, 但ssh仍然连不上去, 则说明操作系统启动失败. 此时需要用桌面远程操控来进入recovery模式, 进行修复. 操作方法详见 linux开机界面.

看门狗安装

参考1 参考2

看门狗原理

BMC 上运行了一个计时器,称看门狗。操作性上运行了喂狗的守护进程,每隔几秒(如10秒)去重置 BMC 上的计时器,让它恢复起始计时(如300秒)。若因内内核死机(panic)、内存冻结等,没法及时喂狗,则计时器会持续倒计时。数到0秒时,“狗饿死咬人”,即 BMC 会执行预定操作,如让服务器重启、断电。注意,不是看门狗让系统死机,是若死机则看门狗让系统重启。

安装配置方法 手动执行

文档

  • 安装喂狗进程
sudo apt install ipmitool # 安装ipmi的命令行工具
sudo apt install watchdog # 安装喂狗进程
  • 配置喂狗进程:sudo vim /etc/watchdog.conf, 确认有以下几行,若被注释则解注释,若value不同则改之,若无此行则加此行
watchdog-device   = /dev/watchdog   # 狗的驱动 在文件系统下显示为一个特殊文件 /dev/watchdog,喂狗即每几秒往当中写东西,若此文件不更新,则狗“饿死”(倒计时耗尽)“咬人”(执行action)
watchdog-timeout  = 300             # 狗的倒计时秒数
interval          = 10              # 喂狗的间隔秒数
realtime         = yes              #
priority         = 1
  • 设置喂狗进程开机自启 sudo vim /etc/modules, 行尾添加
ipmi_watchdog
  • 设置action:以下是失败的探索

设置计时到0后的操作默认为’reset’,即重启服务器,如需修改,则可尝试如下办法,来源,但此方法【我实验过无效】:

sudo vim /etc/default/openipmi, 确认有以下几行,若被注释则解注释,若value不同则改之,若无此行则加此行

IPMI_Watchdog=yes
IPMI_WATCHDOG_OPTIONS="timeout=240 action=reset" # action的其他选项  'none', 'power_cycle', 'power_off'
  • 重启服务器,以使上述配置生效。重启之后测试:

    • 开机自启
    lsmod | grep ipmi

    返回

    ipmi_devintf
    ipmi_si
    ipmi_watchdog   # 必需要有这个
    ipmi_msghandler
    • 喂狗进程状态
    service watchdog status

    返回中必需有如下字样,表面喂狗进程持续运行

    active (running)
    • 查看看门狗状态:连续执行多次
    sudo ipmitool mc watchdog get

    返回

    Watchdog Timer Use:     SMS/OS (0x44)
    Watchdog Timer Is:      Started/Running   # 需要是Started/Running
    Watchdog Timer Actions: Hard Reset (0x01) # 需要是Hard Reset
    Pre-timeout interval:   0 seconds
    Timer Expiration Flags: 0x10
    Initial Countdown:      300 sec
    Present Countdown:      292 sec  # 多执行几次 这个数不小于 300 - 10 (喂狗间隔)
  • 死机测试:当上述测试正常,且目前无要运行的用户任务,则可在服务器上,用下法人为制造死机(来源),看看300秒后能否自动重启。若可以,说明看门狗能正常工作。

    sudo su
    echo 1 > /proc/sys/kernel/sysrq
    echo c > /proc/sysrq-trigger

安装与测试脚本

安装脚本

sudo apt install ipmitool -y
sudo apt install watchdog -y

sudo mv /etc/watchdog.conf /etc/watchdog.conf_backup
sudo cat <<- EOM | sudo tee /etc/watchdog.conf > /dev/null
# ping           = 172.31.14.1
# ping           = 172.26.1.255
# interface      = eth0
# file           = /var/log/messages
# change         = 1407

# Uncomment to enable test. Setting one of these values to '0' disables it.
# These values will hopefully never reboot your machine during normal use
# (if your machine is really hung, the loadavg will go much higher than 25)
# max-load-1     = 24
# max-load-5     = 18
# max-load-15        = 12

# Note that this is the number of pages!
# To get the real size, check how large the pagesize is on your machine.
# min-memory     = 1
# allocatable-memory = 1

# repair-binary      = /usr/sbin/repair
# repair-timeout     = 60
# test-binary        =
# test-timeout       = 60

# The retry-timeout and repair limit are used to handle errors in a more robust
# manner. Errors must persist for longer than retry-timeout to action a repair
# or reboot, and if repair-maximum attempts are made without the test passing a
# reboot is initiated anyway.
# retry-timeout      = 60
# repair-maximum     = 1

watchdog-device = /dev/watchdog
watchdog-timeout  = 300

# Defaults compiled into the binary
# temperature-sensor =
# max-temperature    = 90

# Defaults compiled into the binary
# admin          = root
interval        = 10
# logtick   = 1
# log-dir        = /var/log/watchdog

# This greatly decreases the chance that watchdog won't be scheduled before
# your machine is really loaded
realtime        = yes
priority        = 1

# Check if rsyslogd is still running by enabling the following line
# pidfile        = /var/run/rsyslogd.pid
EOM

sudo echo ipmi_watchdog | sudo tee -a /etc/modules > /dev/null

# 确认安装成功
echo '---------------------------------------------------'
sudo ipmitool mc watchdog get
echo '---------------------------------------------------'
cat /etc/watchdog.conf
echo '---------------------------------------------------'
cat /etc/modules

重启

sudo reboot

测试脚本

lsmod | grep  ipmi_watchdog; echo;
service watchdog status; echo;
for i in {1..5}; do sudo ipmitool mc watchdog get; echo; if [ $i -ne 5 ]; then sleep 3; fi; done

死机测试

echo 1 | sudo tee /proc/sys/kernel/sysrq
echo c | sudo tee  /proc/sysrq-trigger

取消看门狗

若要让之后每次开机, 看门狗都关着, 需要如下设置:

  • sudo vim /etc/modules , 删去 ipmi_watchdog

  • 重启系统 sudo reboot

  • 再次开机后, 看门狗还是开着的, 会持续倒计时, 一直数到 0, 然后自动重启系统. 自动重启前, 看门狗的状态为:

    $ sudo ipmitool mc watchdog get
    Watchdog Timer Use:     SMS/OS (0x44)
    Watchdog Timer Is:      Started/Running # 看门狗是开着的
    Watchdog Timer Actions: Hard Reset (0x01) # 到 0 重启系统
    Pre-timeout interval:   0 seconds
    Timer Expiration Flags: 0x10
    Initial Countdown:      600 sec
    Present Countdown:      230 sec # 持续减少, 到 0 重启系统
  • 自动重启后, 看门狗变成了 stopped, 此后每次重启系统都是这样的:

    $ sudo ipmitool mc watchdog get
    Watchdog Timer Use:     SMS/OS (0x04)
    Watchdog Timer Is:      Stopped # 变成stop了
    Watchdog Timer Actions: Hard Reset (0x01)
    Pre-timeout interval:   0 seconds
    Timer Expiration Flags: 0x10
    Initial Countdown:      600 sec
    Present Countdown:      0 sec

没有reset持续倒计时 - 抢救方法

ipmi_watchdog 模块之前一直在用,之后首次开机没有加载 ipmi_watchdog 模块(可能情况如:上文取消看门狗初次重启后,或 ipmi_watchdog 模块开机加载失败 ,等等原因),就会出现如下情况:

看见 sudo ipmitool mc watchdog get 返回

Watchdog Timer Use:     SMS/OS (0x44)
Watchdog Timer Is:      Started/Running
Watchdog Timer Actions: Hard Reset (0x01) # 只要不是none
Pre-timeout interval:   0 seconds
Timer Expiration Flags: 0x10
Initial Countdown:      300 sec
Present Countdown:      292 sec # 在不断减小,不reset

这表明电脑将很快执行重启、断点等action。故请立即执行

sudo ipmitool mc watchdog off

如此,倒计时关了,不再用担心被关机。

而后执行如下命令,以设置action=none。此设置立即生效,且只要开机不加载 ipmi_watchdog 模块,此设置在之后开机后依然有效,参考。若开机加载 ipmi_watchdog 模块,则实际执行的是 /etc/watchdog.conf 设置,而非如下设置。

sudo ipmitool raw 0x06 0x24 0x04 0x00 0x00 0x10 0xb8 0x0b

如此,会得到action=none, timeout=0xb8 0x0b= 300 s

$ sudo ipmitool mc watchdog get
Watchdog Timer Use:     SMS/OS (0x44)
Watchdog Timer Is:      Started/Running
Watchdog Timer Actions: No action (0x00)
Pre-timeout interval:   0 seconds
Timer Expiration Flags: 0x00
Initial Countdown:      300 sec
Present Countdown:      288 sec

看门狗的开关

  • 查看看门狗配置
sudo ipmitool mc watchdog get
  • 关看门狗,不再倒计时
sudo ipmitool mc watchdog off
  • 依照最新的看门狗行为设置 启动看门狗
sudo ipmitool mc watchdog reset

看门狗行为设置

sudo ipmitool raw      0x06 0x24   0x04 0x<XX> 0x00 0x10 0x<YY> 0x<ZZ>
# sudo ipmitool raw  | 0x06 0x24 | 0x04 0x<XX> 0x00 0x10 0x<YY> 0x<ZZ>
#                    |所设是看门狗 | 设置参数

0x06 0x24:所设置是看门狗

  • 第一段 netfn: 0x06 = "App Application Requests”
  • 第二段 cmd:0x24 = "Set Watchdog Timer”

0x04 0x<XX> 0x00 0x10 0x<YY> 0x<ZZ> :看门狗的设置参数,详见。以下只讲解action和实践,来源

  • action: 0x<XX>

mceclip1.png

  • 倒计时时长:范围 0.1(0X0001) ~6553.5(0XFFFF) seconds

mceclip2.png

例如

0xc8 0x00 = 0x00c8 x 100ms = 20,000 ms =20 s

0x00 0x0c= 0x0c00 x 100ms = 307 s

0xb8 0x0b = 0x0bb8 x 100ms = 300 s

https不安全-SSL证书过期

服务器端添加自签名证书

参考

有效教程

创私钥 ipmi.pem

openssl genrsa -out ipmi.pem 2048

用私钥 ipmi.pem 制备证书 ipmi.cert

openssl req -new -key ipmi.pem -out ipmi.cert

交互输入如下

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:THU
Organizational Unit Name (eg, section) []:XXX-Lab
        # 也可不填
Common Name (e.g. server FQDN or YOUR name) []:localhost
        # 其他的项目可以乱填,但这个必须写【localhost】,才能用ssh -L端口映射ipmi到localhost后,能安全地连接ipmi
Email Address []:aaaa@xxx.yyyy.cn
        # 邮箱随便填

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
    # 可不填, 直接回车
An optional company name []:
    # 可不填, 直接回车

用私钥 ipmi.pem 签证书 ipmi.cert , 有效820天 (tls服务器证书有效期必需<=825天 出处)

openssl x509 -req -days 820 -in ipmi.cert  -signkey ipmi.pem -out ipmi.cert

然后将 ipmi.cert 上传到 New SSL Certificate, ipmi.pem 上传到 New Private Key, 再点 Update.

img

若显示提交成功, 则会重启ipmi设备 (不是操作系统重启), 一分钟后重新登录此页面, 则有了一个自签名的SSL证书.

浏览器端设置

把刚才的证书添加到本地的钥匙串

  • mac:
# 若仅为当前用户添加, catalina系统还允许如此操作
security import ipmi.pem  -k ~/Library/Keychains/login.keychain
# 若需为所有用户添加, 但catalina系统不允许如此操作了
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ipmi.pem

设置浏览器允许访问不安全的localhost

  • chrome 浏览器 访问如下url
chrome://flags/#allow-insecure-localhost
image-20201119231400452

此项改成enable, 即可访问 https://127.0.0.1:<端口>

  • firefox: 无需设置即可访问 https://127.0.0.1:<端口>
  • safari: 可直接访问https://localhost:<端口>; 若无法访问之, 可访问 https://127.0.0.1:<端口>; 欲修复https://localhost:<端口>的访问, 需

其他参考资料

看门狗的原理

ipmitool watchdog 使用示例

ipmitool命令文档

ipmitool常用命令指南

ipmitool常用命令

IPMI hardware watchdog with RHEL 7 / CentOS 7设置方法

/dev/watchdog文件不存在