原创

利用Wake-on-LAN技术实现远程唤醒

温馨提示:
本文最后更新于 2025年04月08日,已超过 28 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

 

一.简介

1.1核心原理

Wake-on-LAN (WoL) 通过以太网帧中的「魔法包」(Magic Packet)激活目标设备的网卡,即使设备处于关机或休眠状态,只要保持最小待机功耗即可响应。主板和网卡都要支持 Wake-on-LAN,主板为网卡提供必要的待机电流。

1.2魔法包结构

  • 6字节的FF前缀(0xFFFFFFFFFFFF):告诉接收方这是一个用于唤醒的特殊数据包
  • 重复16次的目标设备MAC地址(共96字节):即使在网络传输过程中某些数据位发生了错误或丢失,只要有一部分MAC地址能够被网卡正确读取,就足以触发唤醒操作。
  • 通常通过UDP协议在端口7或9发送:UDP是一种无连接的传输层协议,这意味着它不需要建立连接就可以发送数据报文。这种特性使得UDP非常适合用于发送简单的、一次性的唤醒请求,如魔法包。

1.3唤醒流程

网卡在接收到魔法包后,验证MAC地址,将这个魔法包转换为唤醒信号发送给主板。主板触发计算机的电源供应单元(PSU)启动,最后系统上电。

二.配置步骤

使用一根网线直接连接Windows电脑和树莓派,以使用有线网卡唤醒Windows电脑。

2.1Windows

2.1.1BIOS

进入BIOS进行以下配置

启用 Resume By PCI-E/Networking Device

Wake-on-LAN 需要硬件级别的支持来接收并处理来自网络的魔法包。启用 Resume By PCI-E/Networking Device 确保了主板能够识别并响应由网卡发出的唤醒请求。当启用此功能时,主板会在计算机关闭或处于低功耗状态时为网卡提供必要的电力,以便它可以持续监听网络上的魔法包。

禁用 Fast Boot

快速启动(Fast Boot)是一种旨在减少系统启动时间的功能,它通过跳过某些硬件的完整初始化步骤来加快启动速度。然而,对于需要完全初始化才能正确工作的一些硬件(如支持 WoL 的网卡),这可能导致问题。

2.1.2操作系统

进入Windows操作系统后,在设备管理器--网卡属性--电源管理完成以下配置

允许此设备唤醒计算机

当您勾选“允许此设备唤醒计算机”时,实际上是告诉操作系统允许该网卡在接收到特定类型的网络信号(如魔法包)时能够将系统从低功耗状态(例如睡眠或休眠模式)中唤醒。如果不勾选这一选项,即使网卡接收到魔法包,它也无法向系统发出唤醒指令,导致 WoL 功能无法正常工作。

只允许魔术数据包唤醒

通过勾选“只允许魔术数据包唤醒”,您可以限制只有包含正确格式的魔法包的数据帧才能唤醒您的计算机。这意味着普通的网络流量或非预期的数据包不会意外地触发系统唤醒。

在控制面板--高级电源管理完成以下配置

关闭链接状态电源管理

当启用 Link State Power Management 时,操作系统会尝试根据网络活动自动调整 PCI Express 设备(包括网卡)的电源状态。这意味着在系统试图节省电力的情况下,可能会将网卡置于较低的电源状态,这可能会影响到网卡监听网络的能力。如果网卡的电源状态被降低,它可能无法正确地接收到来自网络的魔法包,导致 WoL 失效。

静态IP

为Windows电脑分配一个静态IP地址,确保其在网络中的位置是固定的。

2.树莓派

为树莓派分配一个静态IP地址,确保其在网络中可访问到Windows电脑。

修改 /etc/netplan/50-cloud-init.yaml 文件来配置静态IP:

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.5/24
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4] 

应用更改:

sudo netplan apply

三.发送魔法包

在树莓派上安装并使用 wakeonlan 工具

sudo apt-get update
sudo apt-get install wakeonlan
# 发送魔法包到指定的目标MAC地址
# -i 192.168.1.255 是广播地址,d8:43:ae:67:e3:8b为目标计算机的MAC地址
wakeonlan -i 192.168.1.255 d8:43:ae:67:e3:8b
正文到此结束