发布于
1320 字 · 7 分钟

网络唤醒(WOL)完全指南

AI 摘要

作者
  • avatar
    姓名
    Corner430
    社交账号
题图

1 概述

网络唤醒(Wake-on-LAN,简称 WOL)是一种通过网络远程开启计算机的技术。其原理是:当计算机处于关机或休眠状态时,网卡仍然保持微弱供电并监听网络流量。当网卡收到一个特殊的**魔术包(Magic Packet)**时,会向主板发送信号,触发计算机开机。

魔术包是一个包含目标网卡 MAC 地址的特殊数据包,由 6 个 0xFF 字节后跟 16 次重复的目标 MAC 地址组成。只要网卡、主板和操作系统都正确配置了 WOL 支持,就可以从局域网甚至互联网远程唤醒计算机。

要实现 WOL,需要满足以下条件:

  • 主板支持:BIOS/UEFI 中启用了 WOL 相关选项
  • 网卡支持:有线网卡支持 WOL(绝大多数有线网卡都支持)
  • 操作系统配置:在 OS 层面启用了网卡的 WOL 功能
  • 唤醒端:有设备能够发送魔术包(如路由器、另一台电脑等)

2 BIOS 设置

这是 WOL 的基础,必须首先在 BIOS/UEFI 中启用唤醒功能:

  1. 开机时按 DelF2 或对应按键进入 BIOS 设置界面
  2. 找到电源管理(Power Management)相关选项
  3. 将以下选项设为 Enabled(不同主板名称可能不同):
    • Wake on LAN / Wake on PCI/PCIE
    • Power On By PCI-E / Power On By PCIE Device
    • Resume by LAN / Resume on LAN
  4. 部分主板还需要设置关机后网卡供电:
    • ErP Ready 设为 Disabled(ErP 节能模式会切断关机后的网卡供电)
    • 或确保 Deep Sleep 设为 Disabled
  5. 保存并退出 BIOS

如果 BIOS 中找不到相关选项,请查阅主板说明书或搜索对应主板型号的 WOL 设置方法。

3 Windows 端配置

在 Windows 系统中,需要在网络适配器属性中启用 WOL:

  1. 右键点击「开始」菜单,选择「设备管理器」
  2. 展开「网络适配器」,找到有线网卡(如 Intel I219-V、Realtek PCIe GbE 等)
  3. 右键点击网卡 → 「属性」→ 切换到「高级」选项卡
  4. 在属性列表中找到并启用以下项目:
    • Wake on Magic Packet → 设为 Enabled
    • Wake on Pattern Match → 设为 Enabled(可选)
    • Energy Efficient Ethernet → 设为 Disabled(部分网卡需要关闭)
  5. 切换到「电源管理」选项卡,勾选以下选项:
    • 允许此设备唤醒计算机
    • 只允许幻数据包唤醒计算机

此外,还需确保 Windows 电源设置不会阻止 WOL:

  • 打开「控制面板」→「电源选项」→「选择电源按钮的功能」
  • 点击「更改当前不可用的设置」
  • 取消勾选「启用快速启动」(快速启动可能导致 WOL 不生效)

4 Ubuntu/Linux 端配置

4.1 安装 ethtool

sudo apt install ethtool

4.2 检查网卡是否支持 WOL

查看网络接口名称:

ip addr

找到有线网卡接口名(常见如 eth0enp2s0eno1 等),检查 WOL 支持:

sudo ethtool <interface>

在输出中查找 Wake-on 行:

  • Wake-on: d — 网卡支持 WOL,但当前处于禁用状态
  • Wake-on: g — WOL 已启用(g 代表 magic packet)

4.3 激活 WOL

sudo ethtool -s <interface> wol g

执行后再次确认:

sudo ethtool <interface>

此时 Wake-on 的值应变为 g

4.4 创建 systemd 服务(持久化 WOL)

ethtool 命令在每次重启后会失效,需创建 systemd 服务:

sudo vim /etc/systemd/system/wol.service
[Unit]
Description=Wake-on-LAN Configuration
After=network.target

[Service]
ExecStart=/usr/sbin/ethtool -s enp2s0 wol g

[Install]
WantedBy=default.target

请将 enp2s0 替换为实际的网络接口名。

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable wol.service
sudo systemctl start wol.service

重启后验证:

sudo systemctl status wol.service
sudo ethtool enp2s0 | grep Wake-on

5 OpenWrt 发送唤醒包

5.1 安装 etherwake

opkg update
opkg install etherwake

5.2 发送唤醒命令

# -i 指定 LAN 口接口(通常是 eth1 或 br-lan)
etherwake -i br-lan AA:BB:CC:DD:EE:FF

5.3 通过 LuCI 网页界面发送

  1. 登录 OpenWrt 管理界面(LuCI)
  2. 导航到「服务」→「网络唤醒」
  3. 选择目标设备的 MAC 地址或手动输入
  4. 点击「唤醒」按钮

如果 LuCI 中没有此选项,需安装 luci-app-wolopkg install luci-app-wol

6 防火墙与端口转发(远程唤醒)

默认情况下 WOL 只能在局域网内使用。从外网远程唤醒需要在路由器上配置端口转发。

6.1 开启 OpenWrt 外网访问

  1. 登录 OpenWrt 管理界面
  2. 进入「网络」→「防火墙」→「端口转发」
  3. 添加规则,将外网端口转发到 OpenWrt 管理端口
  4. 保存并应用

建议使用 HTTPS 并修改默认端口以提高安全性。

6.2 配置 WOL 端口转发

WOL 魔术包默认使用 UDP 端口 9。配置端口转发规则:

  • 协议:UDP
  • 外部端口:9(或自定义端口)
  • 内部 IP 地址255.255.255.255(广播地址)
  • 内部端口:9

6.3 远程唤醒方式

  • SSH 到路由器:登录 OpenWrt 后执行 etherwake 命令
  • 在线 WOL 工具:部分网站提供在线发送魔术包的功能
  • 手机 App:如 Wake On Lan(Android/iOS),填入公网 IP 和 MAC 地址

如果没有公网 IP,可配合 DDNS 或内网穿透工具(如 frp、ZeroTier)实现远程访问。

版权声明

除非另有说明,本文内容采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。