什么是 Wake-on-LAN?
Wake-on-LAN (WOL) 是一种网络标准,允许通过网络发送特殊的"魔术包"来远程唤醒处于关机或睡眠状态的计算机。这对于服务器管理非常有用,可以实现:
配置步骤
1. BIOS/UEFI 设置
首先需要在主板 BIOS 中启用 WOL 功能
2. 检查网卡支持
确认网卡支持 WOL 功能:
# 查看网卡信息
ip addr show
# 检查网卡 WOL 支持状态
sudo ethtool eth0 | grep -i wake
输出示例:
Supports Wake-on: pumbg
g
表示支持 WOLp
物理活动(例如,网线连接)u
单播数据包m
多播数据包b
广播数据包
Wake-on: d
d
表示当前禁用
Wake-on: g
g
表示当前启用了 WOL
3. 创建 WOL 服务
创建 systemd 服务文件来启用 WOL:
sudo nano /etc/systemd/system/wol.service
添加以下内容:
[Unit]
Description=Enable Wake-on-LAN
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s eth0 wol g
[Install]
WantedBy=multi-user.target
:::tip 重要提示
请将 eth0
替换为您实际的网卡名称。可以通过 ip addr show
命令查看网卡名称。
:::
4. 启用并启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启用 WOL 服务
sudo systemctl enable wol.service
# 启动 WOL 服务
sudo systemctl start wol.service
# 检查服务状态
sudo systemctl status wol.service
5. 验证配置
# 检查网卡 WOL 状态
sudo ethtool eth0 | grep -i wake
# 应该显示:
# Supports Wake-on: g
# Wake-on: g
测试 WOL 功能
1. 获取目标机器 MAC 地址
# 查看网卡 MAC 地址
ip link show eth0
2. 发送 WOL 魔术包
从另一台机器发送唤醒包:
# 安装 wakeonlan 工具
sudo apt install wakeonlan
# 发送唤醒包(替换为实际 MAC 地址)
wakeonlan 00:11:22:33:44:55
3. 使用 nmap 发送魔术包
# 安装 nmap
sudo apt install nmap
# 发送魔术包
sudo nmap -sn 192.168.1.100
高级配置
1. 多网卡配置
如果服务器有多个网卡,可以为每个网卡创建服务:
# 为 eth1 创建服务
sudo nano /etc/systemd/system/wol-eth1.service
[Unit]
Description=Enable Wake-on-LAN for eth1
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s eth1 wol g
[Install]
WantedBy=multi-user.target
2. 持久化配置
确保重启后 WOL 设置仍然生效:
# 检查服务是否开机自启
sudo systemctl is-enabled wol.service
# 测试重启后 WOL 状态
sudo reboot
# 重启后检查
sudo ethtool eth0 | grep -i wake
故障排查
常见问题
-
WOL 不工作
- 检查 BIOS 设置
- 确认网卡支持 WOL
- 验证服务是否正常运行
-
服务启动失败
- 检查网卡名称是否正确
- 确认 ethtool 命令路径
- 查看服务日志:
sudo journalctl -u wol.service
-
无法接收魔术包
- 检查防火墙设置
- 确认网络连接正常
- 验证 MAC 地址是否正确
调试命令
# 查看服务日志
sudo journalctl -u wol.service -f
# 手动测试 ethtool 命令
sudo ethtool -s eth0 wol g
# 检查网卡详细信息
sudo ethtool eth0
安全考虑
安全建议
- 网络隔离:将 WOL 功能限制在内网使用
- 防火墙配置:只允许特定 IP 发送魔术包
- 监控日志:记录 WOL 唤醒事件
- 定期测试:确保功能正常工作
防火墙配置示例
# 只允许特定 IP 发送 WOL 包
sudo ufw allow from 192.168.1.0/24 to any port 9
自动化脚本
创建 WOL 管理脚本
#!/bin/bash
# wol-manager.sh
MAC_ADDRESS="00:11:22:33:44:55"
SERVER_IP="192.168.1.100"
case "$1" in
"wake")
echo "正在唤醒服务器..."
wakeonlan $MAC_ADDRESS
;;
"status")
echo "检查服务器状态..."
ping -c 1 $SERVER_IP > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "服务器在线"
else
echo "服务器离线"
fi
;;
*)
echo "用法: $0 {wake|status}"
exit 1
;;
esac
参考资源
总结
通过以上步骤,您可以在 Ubuntu 24.04 上成功配置 Wake-on-LAN 功能。记住:
- BIOS 设置是关键:确保在硬件层面启用 WOL
- 网卡名称要正确:使用实际的网卡名称替换 eth0
- 定期测试功能:确保配置在重启后仍然有效
- 注意安全:限制 WOL 功能的使用范围
这样配置后,您就可以通过网络远程唤醒服务器,大大提升服务器管理的便利性。