说来也巧,云子可信刚好最近出了个一键批量开关机的功能,支持一键开启局域网内的所有计算机,可能能帮到答主。
当然,远程开机功能现而今是个比较普通的功能,市面上还有很多产品也支持这个功能,包括一些硬件产品和一些免费的软件产品。
一键开关机功能的部分
下面讲一讲批量开机功能的大概原理:
远程开一台计算机
要解决批量开机的问题,首先要解决开指定的一台计算机的问题,即用一台计算机去使得另一台计算机开机,也就是大家平常所说的“远程开机”。
远程开机的问题早在1980年左右就被 inter 和 IBM 团队解决了,提出一种叫Wake on LAN ( WoL ) 的局域网唤醒的协议。该协议需要硬件如主板、电源、网卡的支持。由于硬件在当时没有特别普及,Wake on LAN 协议并未得到很好的普及。
IBM PCI Token-Ring Adapter 2 上的 Wake-On-LAN 物理接口(白色模块),图片来源于 wikipedia.org
随着计算机硬件的逐渐发展,Wake on LAN 现在已经作为一个工业标准协议广泛普及,用于在低功耗模式下远程唤醒计算机,即远程开机。
怎样的计算机硬件才能支持 Wake on LAN 进行远程开机呢?
计算机需要有ATX电源
网卡需要支持 Wake on LAN 协议
主板需要支持相应的电源和网卡
BIOS上也有相应设置
Wake on LAN 是如何工作的呢?
这得从一个叫魔术包( Magic Packet )的特殊数据包说起,要让计算机被远程唤醒,也就是说需要计算机收到并处理这个魔术包的信息。
Wake on LAN 魔术包,图片来源于 howtogeek.com
可以看出,Wake on LAN 的魔术包是以UDP包的形式发送的,UDP Header 中包含了如下几个信息:
Source IP: 发送魔术包的设备的 IP 地址(这里的设备不仅仅是计算机,也有可能是其他可以发包的设备,比如市面上常见的开机棒等)。
Destination IP: 目的计算机的 IP 地址,即需要唤醒计算机的 IP 地址。
Source Port、Destination Port: 上述对应设备的端口号。
值得注意的是,魔术包中经常也会发送目的计算机的 MAC Address( MAC 地址 )。通过 Destination IP 和 MAC Address 可以确定需要唤醒计算机。
计算机之间发送魔术包的图例,图片来源于 baike.baidu.com
现在大家可能对设备之间怎样唤醒计算机有了一定的了解。即只要有一台计算机或硬件设备能给目标计算机发送魔术包(Magic Packet 即可)。
大家说 Wake on LAN ,都会说远程开机。光靠上面的描述并无法很好地完成“远程”这个特点。那么作为市面上声称的“远程开机”产品,特别是云子可信终端管理这样的 SaaS 产品,是如何做到“远程”的呢?
远程开机流程示意图
说道远程开机就得说到云服务,这里就拿云子可信为例,说明一下如何做到“远程”开机:
前期准备:
首先设备A处于开机状态,且能够发送 Wake on LAN 的魔术包。
如果是计算机则仅需要安装相应软件,如云子可信终端管理客户端。若是开机棒则需要保证开机棒运行、联网正常。
开机流程:
作为管理员可以通过PC端下发开机策略给云服务器 C(对于云子可信也可以用移动端的微信小程序下发策略)。
云服务器在接到管理员的策略之后,云服务器 C会发送一条消息给局域网内的设备A( A 已经开机且具有发魔术包的能力)。
设备 A 在接收到云服务器 C 发送的消息后,便会将魔术包发送给目标设备 B 。
目标设备 B 通过 Wake on LAN 协议被唤醒,执行开机。
远程批量开启计算机
现在我们知道了如何远程开启一台计算机,那么如何批量开启多台电脑呢?
前面说道,Wake on LAN 所发送的魔术包是 UDP 包,采用的 UDP 协议。UDP 协议是一种无连接的传输协议,即发送 UDP 包时不需要像 TCP 包一样需要在通信双方进行三次握手,更像是一种广播。为局域网内所有计算机发送的开机广播。
既然是广播,会导致局域网内不希望开机的计算机也开机吗?
答案是不会,正如上面魔术包中的信息所示,魔术包中包含了目的设备的IP、MAC等信息,只有符合IP、MAC的计算机才能被开机。就云子可信而言,开机需要发送的魔术包中已经包含了需要开机的计算机信息。