今天测试了下通过局域网远程开机(Wake On LAN,WOL)的功能,这篇文章就是今天测试结果的总结。
一、我的环境
我的实验环境拓扑图(图是用Visio+画图制作的):
共有三台实体机,实体机1-3,实体机1用于开机测试,实体机2、3分别为一个RedHat系统和一个Win7系统,实体机2中安装了VMware WorkStation,VM下的虚拟机,网络设置为“Custom: specific virtual network”,里面安装了两台虚拟机,一台Win7一台RedHat。
实体机的计算机:系统制造商为“LENOVO”,系统型号为“ThinkCnetre M8400T”,BIOS为“LENOVO BIOS Rev: 9SKT58A 0.0”,网卡为“Intel(R) 82579LM Gigabit Network Connection”。上面信息中,前三个可以在Windows的运行界面中输入“dxdiag”,进入“DirectX诊断工具”,在“系统信息“中可以看到,最后一个可以直接输入命令“ipconfig /all”查询到。
二、实体机1的配置
如果要实体机1可以被远程启动,需要先配置BIOS,实体机1是联想(LENOVO)的电脑,因此采用下面的步骤:
1)启动计算机,不停按F12进入“启动设备菜单”,该菜单中有四个选项:“SATA 1: ST1000DM003-1CH162”、“SATA 3: TSSTcorpDVD-ROM SH-116AB”、“Network 1: IBA GE Slot 00C8 v1381”、“Enter Setup”,选择“Enter Setup”,就可以进入“联想BIOS配置程序”了
2)进入“电源”菜单
3)把“增强的省电模式”设置为“关闭”。(如果该功能被打开,系统关机时会进入增强的省电模式。关机状态下,总功耗将会更低。当打开增强的省电模式,网卡唤醒功能将不能够使用。Intel(R) Manageability管理功能将不能够使用)
4)进入“唤醒配置菜单”,里面有如下几项:“网卡唤醒”、“PCI调制解调器唤醒”、“串口Ring唤醒”、“时钟唤醒(包含用户自定义唤醒)”,将“网卡唤醒”,设置为“主要”
三、通过实体机3启动实体机1
网络上有许多开源软件可以用来进行WOL操作,我使用了WakeOnLAN软件进行Windows系统之间的WOL操作工具。
WakeOnLAN在OSC上的页面地址为:http://www.oschina.net/p/wakeonlan
WakeOnLAN是一个用VB.NET写的开源软件,该软件内的AquilaWOL.vb中,有一个名为WakeUp的Sub负责远程启动计算机:
1)点击“File”菜单下的“New Host”
2)填写“Name”(任意)、MAC地址(被启动主机的MAC地址)和FQDN/IP(被启动主机的IP)
在主机列表中找到新增的主机,右键弹出菜单,点击“Wake Up”,就可以启动计算机了。
我还找了一个Python脚本用于远程启动,这个脚本名为wake_on_lan.py
它也是个被OSC收录的开源项目,地址在:http://www.oschina.net/p/wake_on_lan
向地址255.255.255.255中MAC地址为FC-4D-D4-4A-09-CF发送开机命令,也可以启动实体机1
四、通过实体机2启动实体机1
因为实体机2是个Linux系统,所以我继续使用上面的wake_on_lan.py尝试开启实体机1,但是这时会遇到问题:RedHat会告知找不到255.255.255.255,这个时候就需要查询当前主机的广播地址。
输入ifconfig可以查到广播地址(Bcast):
将广播地址设定为“170.0.0.255”,就可以远程开机实体机1了,详见下图:
五、其他主机
1)虚拟机1和虚拟机2无法开启实体机1
2)在虚拟机1中安装的WakeOnLAN软件可以关闭实体机1,因为关机命令是通过WMI执行的,所以,要成功实现远程关机,需要开放网络服务访问实体机1的权限,这需要在实体机1上进行配置
3)虚拟机1和虚拟机2在开启时可以相互ping通,但是VMwareWorkstation中的各个虚拟机貌似无法相互使用WOL进行开机操作
END