本文主要介绍如何实现把远程访问物理主机控制台的功能集成到Web应用系统。
一.概念介绍
1. IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。Ipmi 是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以远程开关机。目前惠普、戴尔,联想、 NEC 等大多数厂商的主板上具有 BMC 等嵌入式的管理微控制器的服务器都支持 IPMI 。实现对物理服务器远程控制,需要服务器主板支持有带外管理网口(远程控制卡),带外IP可以PING通,用户名密码设置正确。
2.shellinabox一款自由开源的基于Web的Ajax的终端模拟器。它使用AJAX技术,通过Web浏览器提供了类似原生的 Shell, 允许用户通过指定的端口访问linux服务器的ssh shell。
3.IPMITOOL 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具, 通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。
4.SOL (SerialOver LAN ),通过 IPMI 会话重定向本地串行接口,允许远程访问 LINUX 串行控制台。
二.整体方案
以下为整体搭建方案图,前提物理主机要支持IPMI技术,带外管理网口可用,带外IP可以PING通,用户名密码正确。只要物理主机支持IPMI标准协议都可以适用该方案。下面将以DELL为例子介绍如何搭建过程。原理主要以下两点。
1.调用IPMITOOL命令实现终端重定向,主要涉及以下命令 ipmitool -I lanplus -H -U -P -C 3 sol activate
2.利用shellinabox的Ajax的shell终端模拟器,及shellinabox本身注册服务功能,达到调用IPMITOOL时自动显示到物理主机控制台。

三.配置物理主机IPMI,以DELL为例
1.按“F2”进入BIOS启动 - 在初始屏幕上,可以看到在BIOS和BMC版本,接下来,你可以遍历服务器“选项卡- ,会看到 “设置BMC LAN配置”


2.配置IPMI用户名密码 一旦设置的IP地址-通过Web用户界面,可以得到更多的信息。BMC Web的用户界面相对简单,可以验证是否配置正常。在浏览器输入https://ip 地址ip为远程ip地址。如果能够登陆,则意味配置成功。

3. 配置远程终端重定向, 设置重定向到串口com2

4. 配置grub启动参数,进入物理主机操作系统.
执行命令vi/boot/grub/grub.conf 修改grub.conf配置文件增加这行记录console=ttyS1,9600n8


console=tty0 代表显示器输出
console=ttyS0 代表定向到串口1,如果是ttyS1代表定向到串口2
57600则为串口通信采用的波特率,波特率和bios设置的一样
5. 修改/etc/inittab文件增加以下行

6.修改/etc/securetty 增加一行:ttyS1

7.重启物理主机reboot
四.搭建shellinabox服务器
1. 在任何一台物理主机上创建一台linux虚拟机,这里以centos为例,ip:192.168.217.155。在centos虚拟机上安装shellinabox,可以使用yum安装或者源码编译安装,使用yum安装需要先打上epel的repo且可以通外网。
2.在cenos上执行安装shellinabox命令

3.安装成功后,执行以下命令关闭防火墙
service iptables stop
chkconfig iptables off
4.执行命令启用shellinabox服务

5.默认情况下,shellinaboxd侦听本地主机上的TCP端口4200,在浏览器输入虚拟机ip:4200,则可以通过浏览器访问到虚拟机centos的控制台。

五.安装ipmitool工具
在刚才创建的sellinabox服务器上安装impitool工具,LINUX 一般系统自带IPMI TOOl,用于计算带外管理(运行在硬件平台上,需要有BMC支持),但有些版本是默认没安装IPMI,所以没安装的话要用户手动安装。以下简单介绍centos rmp包安装,针对CentOs操作系统,编译了一个rmp包,安装步骤如下。
1.把rmp包放到centos操作系统中,解压压缩包到某个目录下ipmitool
2.请虚拟机的DVD挂载上虚拟机本身操作系统的ISO
3.执行以下命令编译ipmitool.repo文件
4.安装成功最后显示结果

5.安装成功需要启动相应的驱动模块,可以通下以下两种命令启动驱动
/etc/init.d/ipmi start
或者通过以下命令:
modprobe ipmi_msghandler
modprobe ipmi_devintf
modprobe ipmi_si
modprobe ipmi_poweroff
modprobe ipmi_watchdog
6.通过cat /proc/devices | grep ipmidev获得设备号,如得到的设备号是248,用mknod -m 600 /dev/ipmi0 c 248 0 建立文件索引点
7.验证是否成功,如提示有以下命令则安装成功

六.shellinabox与ipmitool结合
通过shellinabox调用ipmitool命令以达到重定向到物理主机控制台。shellinabox提供参数-s这个参数的意思相当于给这个服务注册应用地址。-s参数的详细说明:

举例说明:

这表示当前这个shellinabox服务有两个调用地址,一个是根目录/,另一个是/date。调用/时,返回的是登录页面;调用/date时,返回的是在shell里执行date的结果。
这里我们将注册一个服务调用IPMITOOl命令, 修改shellinabox配置文件配置文件默认在/etc/sysconfig/shellinaboxd, 在配置文件增加以下一行记录/ipmitool_console:nobody:nogroup:/:\"ipmitool -I lanplus -UAdministrator -H 10.0.1.100 -P V8W5HHBR-C 3 sol activate usesolkeepalive

修改成功后保存并执行命令service shellinaboxd restart重启。在浏览器输入以下https://192.168.217.155:4222/ipmitool/get_console 则浏览器页面显示自动跳转到物理主机控制台上。如以下图所示

至此我们就可以通过开源组件shellinabox调用ipmitool工具进行终端重定向,以实现远程访问物理主机控制台的功能。通过该方法,可以把远程访问物理主机控制台的功能集成到相应的Web应用系统。
原创文章,写作不易,转载请获得授权并标明出处,欢迎留言交流
网友评论