在Debian服务器上设置局域网唤醒(WOL)

时间:2020-03-21 11:47:01  来源:igfitidea点击:

我们有一个非任务关键型备份服务器,该服务器托管其他服务器上每晚的MySQL数据库副本。

工作原理如下:

  • 在凌晨2点,服务器“ A”创建数据库备份并将其复制到外部HDD上。
  • 然后,服务器“ A”连接到备份服务器,并在此上传数据库副本。
  • 服务器“ A”和备份服务器位于同一局域网中。

因此,备份服务器不需要24/7全天候在线,而是按需。
明智的做法是让服务器仅在需要传输备份时才休眠并唤醒。
这可以通过使用LAN唤醒消息来完成。

安装

我们将在Debian服务器上配置WOL。
更新软件包列表并安装ethtool:

# apt-get update && apt-get install ethtool

配置WOL

我们已经在BIOS上启用了WOL,并且需要检查我们的以太网卡支持的WOL类型:

# ethtool eth0
Settings for eth0:
	Supported ports: [ TP ] 
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: Unknown
	Supports Wake-on: g
	Wake-on: d
	Current message level: 0x000000ff (255)
	Link detected: yes

正如我们在上面看到的,以太网卡支持Wake-on:g。
跟随手册页:

# man ethtool
[...]
wol p|u|m|b|a|g|s|d...
 Sets Wake-on-LAN options. Not all devices support this. The
 argument to this option is a string of characters specifying
 which options to enable.
p Wake on PHY activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket™
s Enable SecureOn™ password for MagicPacket™
d Disable (wake on nothing). This option clears all previous options.

因此,我们可以使用所谓的魔术包唤醒服务器。
让我们在网络驱动程序上设置选项以响应魔术包:

# ethtool -s eth0 wol g

为了使此过程自动化并避免在服务器重新启动后再次键入相同的命令,我们需要打开网络配置文件“/etc/network/interfaces”进行编辑,并将以下行(棕色)添加到我们现有的网络配置中:

auto eth0
iface eth0 inet static
 address 10.28.0.5
 netmask 255.255.255.0
 gateway 10.28.0.254
 dns-nameservers 10.28.0.254
 /sbin/ethtool -s eth0 wol g

确保已启用WOL:

# ethtool eth0 | grep Wake-on
 Supports Wake-on: g
 Wake-on: g

现在,我们必须找到NIC的MAC地址,这是唤醒备份服务器所必需的。
可以从'/sys/class'检索MAC:

# cat /sys/class/net/eth0/address 
00:21:00:00:00:00

可以通过pm-suspend命令将服务器发送到睡眠状态。
必须安装pm-utils软件包。

发送魔术包

我们将使用wakeonlan实用程序发送一个魔术包(从服务器“ A”发送)。

# apt-get install wakeonlan

Wakeonlan使用UDP数据包,并以NIC MAC地址作为参数:

$wakeonlan 00:21:00:00:00:00
Sending magic packet to 255.255.255.255:9 with 00:21:00:00:00:00

如果我们对传出流量有一些严格的防火墙规则,请确保这些规则允许广播离开:

# iptables -A OUTPUT -p udp -d 255.255.255.255 -j ACCEPT

注意我自己。
从Mikrotik路由器发送WOL:

[Hyman@theitroad] > tool wol mac=00:21:00:00:00:00 interface=lan-bridge