WOL(Wake-on-LAN)科普:从原理到在 NAS 与 Docker 上的实战应用
在家庭与小型办公室的数字化管理场景中,“远程开机”早已成为高频需求。不论是外网访问 NAS 文件、远程开发、还是让家里的主机做下载/渲染,“让设备在需要时自动开机”都是提高效率的关键能力。
而让这一切成为现实的核心技术,就是 WOL(Wake-on-LAN)网络唤醒。
本文带你从原理入门,再到手把手在 NAS / 群晖 / Docker 上实现 WOL 的完整方案,简单易懂,适用性强。
一、什么是 WOL(Wake-on-LAN)?
WOL = 网络唤醒
它允许你从网络上远程唤醒一台处于关机状态(低功耗状态)的电脑或设备。
工作条件
只有满足以下条件,WOL 才能成功:
- 主板支持 WOL(绝大部分都支持)
- 网卡支持 WOL
- BIOS/UEFI 中开启 WOL
- 网口使用有线网络(WIFI 绝大多数不支持)
- 设备关机后网口灯仍闪烁(代表网卡待机)
- 确保网关/交换机不会阻断广播包
二、WOL 的工作原理:Magic Packet“魔术包”
网络唤醒的关键,是发送一个特殊格式的数据包: Magic Packet(魔术包)
其结构非常简单:
FF FF FF FF FF FF (6 字节广播头)
+
(目标 MAC 地址重复 16 次)
示例(省略):
FF FF FF FF FF FF 70 4D 7B 1A 2B 5C ...重复16次
当目标设备收到这个结构的广播包,就会从待机状态被唤醒,即便没有系统运行。
三、唤醒方式有哪些?
局域网唤醒(最稳定): 在同一网段内发送 Magic Packet 即可。
广域网唤醒(外网唤醒): 需要额外条件
- ISP 分配固定 IP 或 DDNS
- 路由器支持端口转发 UDP 9 / UDP 7
- 路由器支持广播转发
外网 WOL 稍微麻烦一些,但 NAS 通常可以做到。
四、常见 WOL 使用场景
- NAS 唤醒家庭主机做任务
- 智能家居触发电脑开机
- 外出远程访问 PC / 服务器
- 夜间定时自动唤醒服务器
五、NAS / 群晖 / Docker 中安装 WOL 工具(实战)
下面给出两种种常见环境中的 WOL 工具安装方式:
- 群晖(Synology)
- Docker 环境
六、在群晖(Synology)上使用 WOL
NPS_IP:25091
七、在 Docker 中安装并使用 WOL(独立容器方式)
如果你希望通过 Docker 部署一个 Web 版 WOL 页面 推荐使用现成的 WOL 容器。
方法一:WOL Web GUI(带网页界面)
流行镜像:tchapi/docker-wakeonlan
配置文件
$ touch config.yaml
machines:
- name: desktop
mac: "00:11:22:33:44:55"
ip: "192.168.1.90 " # 可选,用于状态检查
- name: server
mac: "AA:BB:CC:DD:EE:FF"
ip: "192.168.1.100" # 可选,用于状态检查
server:
listen: ":7777" # 可选,默认为 :7777
docker 启动 wol web 页面, 监听的端口是 7777
$ docker run -d --network host -v $(pwd)/config.yaml:/etc/wol/config.yaml -- name wol ghcr.io/trugamr/wol:latest serve
或者使用 docker-compose,
$ touch docker-compose.yaml
#Docker Compose 示例jj
services:
wol:
image: ghcr.io/trugamr/wol:latest
command: serve # 启动网页界面
network_mode: "host"
volumes:
- ./config.yaml:/etc/wol/config.yaml
启动
$ docker compose up -d
访问:
http://NAS_IP:7777
要增删改唤醒设备的信息,则需要修改 config.yaml 文件, 然后再重启容器。
$ docker restart wol
点击WAKE即可唤醒
方法二:命令行版 WOL
- 流行镜像:tchapi/docker-wakeonlan
- 配置文件同上
命令行界面
- 列出所有已配置的设备
$ wol list
- 通过设备名称唤醒设备
$ wol send --name desktop
- 通过 MAC 地址唤醒设备
$ wol send --mac "00:11:22:33:44:55"
- 启动网页界面
$ wol serve
- 显示版本信息
$ wol version
可以在docker中使用 WOL 工具, 来唤醒局域网中的设备。(也可以在已经启动的容器中使用) 也可以额外启动一个容器进行唤醒操作,只要把前面命令行的 wol 替换成docker启动容器的操作即可。
举个例子,列出所有已配置的设备
$ docker run --network host -v $(pwd)/config.yaml:/etc/wol/config.yaml --rm ghcr.io/trugamr/wol:latest list
–rm 是为了在容器启动之后立即删除容器, 避免占用资源
通过 MAC 地址唤醒设备
$ docker run --network host -v $(pwd)/config.yaml:/etc/wol/config.yaml --rm ghcr.io/trugamr/wol:latest send --mac "00:11:22:33:44:55"
由于 WOL 是广播包,Docker 建议使用 –net=host 模式。
八、常见 WOL 失败原因与解决
| 失败原因 | 解决方案 |
|---|---|
| BIOS 未开启 WOL | Advanced → Wake on LAN → Enabled |
| 关机后网口灯不亮 | 主板不供电,更换设置或主板 |
| 网卡驱动禁用节能唤醒 | 设备管理器 → 网卡 → 电源管理 |
| 路由器不转发广播 | 打开“广播转发/UDP 广播” |
| Docker 不在 host 网络 | 使用 –net=host |
| 外网 WOL 无法唤醒 | 使用 DDNS + UDP 9 端口转发 |
久、总结
- WOL 是通过广播 Magic Packet 唤醒设备的技术
- 局域网 WOL 最稳定
- 群晖天然支持 WOL,也可通过 SSH + etherwake 操作
- Docker 上可部署网页版 WOL 工具
- 外网 WOL 需要路由器支持广播转发 WOL 是一个非常简单但极其实用的技术,配合 NAS、Docker、智能家居,你可以轻松构建一个高效的家庭 IT 自动化体系。
--完--
- 原文作者: 留白
- 原文链接: https://zfunnily.github.io/1/01/14/
- 更新时间:2026-08-18 01:13:55
- 本文声明:转载请标记原文作者及链接


