wake-on-LAN (WOL) 是一种以太网网络标准,允许通过网络消息打开服务器。您需要将“幻数据包”发送到启用 LAN 唤醒的以太网适配器和主板,以打开被叫系统。确保将网卡(eth0 或 eth1)与主板连接并启用 BIOS 的 WOL 功能。这是在RHEL / Fedora / CentOS / Debian / Ubuntu Linux下启用WOL的快速指南。
客户端软件
最好使用软件将 WoL(局域网唤醒)幻数据包发送到目标系统。你会发现所有现代操作系统的各种工具,包括MS-Windows 8 / 10,Apple macOS和OS X,所有现代Linux发行版,FreeBSD,OpenBSD,NetBSD和许多智能手机。
Linux Install etherwake Under Debian / Ubuntu Linux
我们使用etherwake命令在Linux操作系统下发送局域网唤醒“魔术数据包”。键入以下 apt-get command/apt 命令以在 Debian / Ubuntu Linux 桌面下安装相同的命令:
会话:## apply all patches on Debian/Ubuntu ##
$ sudo aptitude install etherwake
## OR ##
$ sudo apt install etherwake
[sudo] password for vivek: Reading package lists... DoneBuilding dependency tree Reading state information... DoneE: Unable to locate package etherwak [vivek@nixcraft-wks01 backups]$ sudo apt install etherwake
安装一个工具以在 RHEL/CentOS Linux 上发送 LAN 唤醒“魔术包”
还有Perl脚本来唤醒计算机。我们可以在Debian / Ubuntu Linux上安装如下:
sudo apt-get install wakeonlan
在 Fedora/RHEL/CentOS/Rocky 和 AlmaLinux 系统上键入以下 dnf command/yum 命令。例如:我的 RHEL 8 盒子的输出:$ sudo yum install net-tools
Red Hat Linux 和朋友用户应该使用 net-tools 软件包,默认情况下可能会安装该软件包。命令名称为以太唤醒。
在 macOS Unix 上安装 wakeonlan
首先,在 macOS 上安装 Homebrew,然后运行:
有关详细信息,请参阅“macOS – 使用 LAN 唤醒 (WOL) 命令实用程序唤醒服务器”。$ brew install wakeonlan
如何在 Linux 下发送 WOL 魔术包?
键入以下命令:
或
RHEL / Centos / Fedora Linux 用户,请尝试: 如果您的 MAC 地址是 xx:yy:zz:11:22:33,您将键入:
或
在哪里,$ wakeonlan MAC-Address-Here
$ etherwake MAC-Address-Here
$ etherwake -D MAC-Address-Here$ ether-wake MAC-Address-Here
$ wakeonlan xx:yy:zz:11:22:33
$ etherwake xx:yy:zz:11:22:33
xx:yy:zz:11:22:33 是远程服务器的 MAC 地址。您可以使用 ping 命令和 arp 命令的组合来获取 mac 地址:
ping -c 4 server3 && arp -n
例子
以下是使用受限广播地址 (255.255.255.255) 的方法: 使用子网广播地址: 我们也可以使用另一个目标端口
我们可以使用文件作为硬件和 IP 地址的来源:
以下是包含硬件地址 (mac) 的文本文件的示例。让我们使用 more 命令或 cat 命令/less 命令来显示它: 示例配置文件:$ wakeonlan mac
$ wakeonlan mac-1 mac-2$ wakeonlan -i 192.168.1.255 mac
$ wakeonlan -i 192.168.1.255 -p PORT mac
$ wakeonlan -i 192.168.1.255 -p 4242 mac$ wakeonlan -f homelab.wol
$ wakeonlan -f homelab.wol macmore homelab.wol
如何验证远程 Linux 服务器是否支持局域网唤醒 (WOL)?
首先,重新启动远程服务器并转到 BIOS >电源管理>“局域网唤醒”。请打开 WoL。接下来,保存并关闭 BIOS 设置。在网络接口卡的 BIOS 硬件选项中激活局域网唤醒 (WoL) 后,还需要使用 ethtool 激活它。ethtool 命令将配置 eth0 以响应魔术数据包:
其中,# ethtool -s eth0 wol g
-s eth0:您的网卡。随意将 eth0 替换为您的实际网络接口设备名称。
wol g:使用魔术包设置 LAN 唤醒选项。
键入以下命令以查看 eth0 的 wol 的当前状态: 从我的 NAS 服务器输出:# ethtool eth0
如果您使用的是 RHEL / SL / Fedora / CentOS Linux,请编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:添加/修改以下行:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ETHTOOL_OPTS="wol g"
或
ETHTOOL_OPTS="wol g autoneg off speed 100 duplex full "
保存并关闭文件。如果您使用的是 Debian / Ubuntu Linux,请编辑 /etc/network/interfaces:将以下内容附加到 eth0:# vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
post-up /sbin/ethtool -s eth0 wol g
post-down /sbin/ethtool -s eth0 wol g
如何在备份脚本中使用唤醒局域网
下面是一个示例 shell 脚本,它将从我的 rsnapshot Linux 备份服务器唤醒我的笔记本电脑(IP 192.168.2.25 和 mac 48:2a:e3:5c:16:bc):
#!/bin/bash
# load ssh keys from keychain
. /home/backups/.keychain/backup-ssh-key
# Try to wake up sleeping laptop at night and odd time as per cronjob
/usr/bin/wakeonlan 48:2a:e3:5c:16:bc
# Sleep for 30 seconds to that laptop comes online
/bin/sleep 30
# Verify and start backup
/sbin/ping -q -c 30 192.168.2.25 >/dev/null
if [ "$1" != "" ]
then
# start backup
/usr/local/bin/rsnapshot "$1"
# push everything offsite to aws-s3 buckets and exit this session due to slow upload links
echo '/home/backups/push-mirror-to-aws-s3' | /usr/bin/at now + 5 minute
else
echo "Usage: $0 [hourly|daily|montly|weekly|yearly]"
exit 1
fi
总结
我解释了如何将“魔术数据包”设置为启用局域网唤醒 (WoL) 的以太网适配器和主板以打开 PC 或服务器。当您的系统处于挂起或深度睡眠模式时,魔术包也可以工作。例如,我的备份 FreeBSD 和 Linux 服务器可以在午夜唤醒我的笔记本电脑并备份文件。当然,您的 BIOS 必须支持 WoL 选项。否则,它将不起作用。使用 man 命令查看以下手册页:
另请参阅有关 WoL 的维基百科页面。$ man wakeonlan
$ man ethtool