Linux之WOL网络唤醒

WOL简介

WOL(Wake-on-LAN)技术是一种计算机局域网唤醒技术,其主要功能是使处于关机或休眠状态的计算机能够通过局域网(通常是以太网)被远程唤醒并恢复到运行状态。具体来说,当一台计算机进入休眠或关机状态时,可以通过局域网中的另一台设备发送特定的网络广播包(magic魔术包)来触发该计算机的唤醒过程。

魔术包(Magic Packet)组成

魔术包是一个UDP广播数据包,包含特定的格式和内容。它主要由以下几个部分构成:

  • 固定前缀: 6个字节的0xFF。
  • 目标主机MAC地址: 该地址需要重复多次,通常为16次。
  • 密码(可选): 4-6字节的密码。
FF FF FF FF FF FF FF MAC 地址 × 16 4-6字节的密码(可选)

Linux下使用WOL

能使用WOL的主要前提条件:

  • 硬件支持: 目标主机的网卡和主板必须支持WOL功能!
  • 网络环境: 网络环境应允许通过局域网或互联网进行数据传输,有时还需要适当的路由和防火墙规则来确保数据包能够正确到达目标主机!最简单的环境是操作机器与目标机器在同一网段。

注意:有线连接通常比无线连接更稳定,因此建议使用有线网卡以提高唤醒成功率!

下面是使用WOL的主要流程。

确认目标机器BIOS中WOL是否已开启

这个在每个机器上都有些差异,只要确定网络唤醒这个选项已打开即可。

确认目标机器网卡是否支持WOL,且是否已启用

查看状态

ethtool 网卡名

注意查看如下行:

Supports Wake-on: pumbg
Wake-on: d
  • Supports Wake-on: pumbg 表示网卡支持远程唤醒
  • Wake-on: d 表示已禁用
  • Wake-on: g 表示已启用

启用WOL:

sudo ethtool -s  网卡名 wol g

测试

可以使用etherwakewakeonlan,这两个工具一般都需要自行安装。这些工具主要是用来生成并发送符合标准的魔术包。

  • etherwake
    etherwake -b [被唤醒设备网卡的mac地址] -i [发出唤醒请求的网卡名]
  • wakeonlan
    wakeonlan [被唤醒设备网卡的mac地址]

    持久化修改

上面的操作只是临时的,重启后会丢失。
可以将相关操作加入自启动脚本,或如果系统支持systemd等管理,可将操作服务化,添加相关服务。