
PVE开启网络唤醒WOL
在 Proxmox VE(PVE)中设置网络唤醒(Wake-on-LAN, WOL)需结合硬件配置、系统命令和开机自启动设置。以下是详细步骤,分为 PVE 主机唤醒和 PVE 下虚拟机唤醒两类场景:
⚙️ 一、PVE 主机唤醒(物理机远程开机)
1️⃣ 硬件准备
主板支持:进入 BIOS 的
Power Management
选项,开启以下功能:Wake-on-LAN
(或WOL
、PME Event Wake Up
)。PCI/PCI-E 设备唤醒
(部分主板需单独启用)。
网卡支持:确认网卡支持 WOL(通过
ethtool
检查输出Supports Wake-on: pumbg
)。
2️⃣ PVE 系统配置
安装 ethtool
bash
apt update && apt install ethtool
查看网卡名称
bash
ip a # 确认网卡名(如 `enp4s0`)
启用 WOL 并测试
bash
ethtool -s enp4s0 wol g # 开启 WOL ethtool enp4s0 | grep Wake-on # 检查是否显示 `Wake-on: g`
注意:该设置重启后失效,需配置自启动⬇️。
设置开机自启(三选一)
方法①:通过
rc.local
(推荐简单场景)
编辑/etc/rc.local
,添加以下内容(网卡名需替换):bash
#!/bin/bash /sbin/ethtool -s enp4s0 wol g exit 0
赋予权限:
chmod +x /etc/rc.local
。方法②:通过 systemd 服务(推荐生产环境)
创建服务文件/etc/systemd/system/wol.service
:ini
[Unit] Description=Enable Wake-on-LAN After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ethtool -s enp4s0 wol g [Install] WantedBy=multi-user.target
启用服务:
bash
systemctl enable wol.service systemctl start wol.service ```:cite[5]
方法③:定时任务(备用)
添加 cron 任务(每天开机时执行):bash
echo "0 16 * * * root /sbin/ethtool -s enp4s0 wol g" >> /etc/crontab ```:cite[1]
3️⃣ 获取 MAC 地址并测试唤醒
查询 MAC:
bash
ethtool -P enp4s0 # 或 ip a show enp4s0
局域网唤醒:
使用另一台设备发送魔术包(工具如wakeonlan
、etherwake
或路由器内置网络唤醒功能):bash
wakeonlan -i PVE_IP PVE_MAC
💻 二、PVE 下虚拟机唤醒(伪 WOL)
若需通过魔术包唤醒 PVE 管理的虚拟机,需借助第三方工具(如 dosthol
),因为虚拟机网卡无法直接响应广播包。
1️⃣ 安装 dosthol 工具
bash
apt install gawk socat xxd
wget https://附件链接/dosthol.zip # 从原帖下载工具:cite[6]
unzip dosthol.zip
cp dosthol.sh /usr/local/bin/
cp dosthol.service /etc/systemd/system/
chmod +x /usr/local/bin/dosthol.sh
systemctl enable dosthol
systemctl start dosthol
2️⃣ 配置虚拟机
为虚拟机添加非直通虚拟网卡(型号不限)。
记录该网卡的 MAC 地址(在虚拟机配置中查看)。
3️⃣ Home Assistant 集成示例
yaml
switch:
- platform: wake_on_lan
name: "PVE_VM"
mac: "XX:XX:XX:XX:XX:XX" # 虚拟机虚拟网卡 MAC
host: "192.168.x.x" # 虚拟机 IP
turn_off:
service: shell_command.turn_off_vm
shell_command:
turn_off_vm: "bash /config/turn_off.sh" # 自定义关机脚本
⚠️ 三、注意事项
网卡名称:PVE 默认网卡名可能为
enpXs0
或vmbr0
绑定的物理网卡,需通过ip a
确认。公网唤醒:需搭配内网穿透(如 WireGuard)或路由器端口转发(UDP 端口 7/9)。
故障排查:
重启后检查 WOL 状态:
ethtool enp4s0 | grep Wake-on
。测试命令:
dostholc.sh -f wakeup -m MAC -v 1
(虚拟机场景)。确保 PVE 关机后网卡指示灯常亮(物理唤醒必要条件)。
💎 总结
按上述操作后,即可通过局域网/公网远程唤醒 PVE 主机或虚拟机。若唤醒失败,重点检查 BIOS 设置、网卡支持性及自启动服务状态。