Ubuntu 24.04 设置 Wake-on-LAN (WOL) 远程唤醒

什么是 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 表示支持 WOL
  • p 物理活动(例如,网线连接)
  • 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

故障排查

常见问题

  1. WOL 不工作

    • 检查 BIOS 设置
    • 确认网卡支持 WOL
    • 验证服务是否正常运行
  2. 服务启动失败

    • 检查网卡名称是否正确
    • 确认 ethtool 命令路径
    • 查看服务日志:sudo journalctl -u wol.service
  3. 无法接收魔术包

    • 检查防火墙设置
    • 确认网络连接正常
    • 验证 MAC 地址是否正确

调试命令

# 查看服务日志
sudo journalctl -u wol.service -f

# 手动测试 ethtool 命令
sudo ethtool -s eth0 wol g

# 检查网卡详细信息
sudo ethtool eth0

安全考虑

安全建议

  1. 网络隔离:将 WOL 功能限制在内网使用
  2. 防火墙配置:只允许特定 IP 发送魔术包
  3. 监控日志:记录 WOL 唤醒事件
  4. 定期测试:确保功能正常工作

防火墙配置示例

# 只允许特定 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 功能。记住:

  1. BIOS 设置是关键:确保在硬件层面启用 WOL
  2. 网卡名称要正确:使用实际的网卡名称替换 eth0
  3. 定期测试功能:确保配置在重启后仍然有效
  4. 注意安全:限制 WOL 功能的使用范围

这样配置后,您就可以通过网络远程唤醒服务器,大大提升服务器管理的便利性。

使用 Hugo 构建
主题 StackJimmy 设计