zoukankan      html  css  js  c++  java
  • 远程唤醒WOL启动服务器或电脑

    1. 场景:

    因为新型肺炎的原因,交通受阻,无法去公司上班,只能在家远程工作,但是放假前服务器全关掉了,现在也没人去开,然后群里有人说服务器是支持远程唤醒的,可以远程启动,于是启动了部分服务器,但是对于不支持远程唤醒的服务器还是没办法。借此机会总结一下WOL技术的原理和操作方法。

    2. 远程唤醒原理(WOL)

    2.1 WOL原理

    其实是网络唤醒,即Wake-on-LAN,通俗的讲成了远程唤醒。WOL可以实现通过网络启动的主要原因就是来自于网卡对WOL的支持。除此外,还有WOL的扩展Wake-on-Wireless-LAN(WoWLAN),即通过无线网卡来唤醒电脑,同样的也需要无线网卡的支持。不过目前来说,似乎大部分机器都无法直接通过无线网卡来唤醒。

    WOL的原理是:通过向网卡发送一个特定格式的数据包,网卡识别到这个数据包之后,配合硬件等设备来启动电脑或者服务器。虽然电脑或服务器关机了,但是如果是支持WOL的网卡,则网卡仍然是通电的,所以仍然能够接受来自局域网络内的数据包。

    特定的数据包称为唤醒魔包(Wake on Magic Packet),其数据格式如下:

    FF FF FF FF FF FF MAC地址x16 密码段

    前6个字节固定FF,后面跟网卡的物理地址重复16次,最后是4-6字节的密码段

    将这个16进制的数据转换为二进制后,封装为UDP格式,然后发送到网络中,网卡接收到数据后进行处理,若为自己的MAC地址,则触发开机。

    需要注意的是:发送数据包时最好采用UDP广播的形式,即例如192.168.0.255此类的地址,对192.168.0这个网段内的所有地址发送数据包。

    2.2 python实现WOL唤醒

    import socket
    from binascii import a2b_hex
    
    if __name__ == '__main__':
        addr = '192.168.0.255'
        port = 9
        udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        package = 'FFFFFFFFFFFF'
        for i in range(0, 16, 1):
        	# 网卡地址
            package += 'B888E330D465'
        package += '000000000000'
        udp.sendto(a2b_hex(package), (addr, port))
    
    

    2.3 Java实现WOL唤醒

     public static void main(String[] args) {
            try {
                InetAddress inetAddress = InetAddress.getByName("192.168.0.255");
                int port = 9;
                StringBuilder data = new StringBuilder("FFFFFFFFFFFF");
                for (int i = 0; i < 16; i++) {
                	// 网卡地址
                    data.append("B888E330D465");
                }
                data.append("000000000000");
                byte[] bytes = Hex.decodeHex(data.toString());
                DatagramSocket datagramSocket = new DatagramSocket();
                DatagramPacket packet = new DatagramPacket(bytes, bytes.length, inetAddress, port);
                datagramSocket.send(packet);
            } catch (DecoderException | IOException e) {
                e.printStackTrace();
            }
    
        }
    

    3. 远程唤醒操作步骤

    3.1 环境说明

    身边没有服务器,而且只带了个华为的小本本回来,所以没办法用这个笔记本测试,于是就拿出了8年前买的联想的thinkpad来测试。它网卡是支持WOL的。

    3.2 先说测试结果

    关机状态无法唤醒,很可能是硬件问题导致的;
    睡眠状态下可以成功唤醒。

    3.3 操作流程

    • 在设备管理器中找到有线网卡,然后在“属性”中开启“魔术封包唤醒”以及“关机 网络唤醒”是否开启,然后在“电源管理”中打开“允许此设备唤醒计算机”。
      在这里插入图片描述在这里插入图片描述 在这里插入图片描述

    • 电源管理中关闭“快速启动”

      经过测试,“快速启动”对于休眠状态的唤醒无影响,但对于关机后唤醒是否有影响没测试到。

    • 记录下网卡地址

      找到对应网卡名称的物理地址记下来。

    	ipconfig/all
    
    • 将待唤醒电脑休眠

    • 下载个WOL工具来发送数据包。发送工具手机上以及电脑上都有相应的工具。这里下载个电脑版的,例如AP WOL Tool:
      在这里插入图片描述
      填入IP、MAC地址、子网掩码、端口后,点击start(wow)进行发送魔术包。电脑将被重新唤醒

  • 相关阅读:
    修改oracle的sys、system密码
    错误随手笔记
    JS 全选
    ider向虚拟机上传jar包
    Spring中的八大设计模式
    事务的隔离级别
    hive常用函数全集
    Kafka常用命令
    字符设备驱动框架学习总结
    根文件系统熟悉(一)根文件系统构建过程记录
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286610.html
Copyright © 2011-2022 走看看