使用wol对局域网内服务器通过网络唤醒方法进行远程开机

1. 对目标服务器BIOS进行设置,允许网络唤醒。一般情况下大部分服务器BIOS设置默认是开启了运行网络唤醒。

使用ethtool命令查看服务器网卡设置:

$ sudo ethtool enp4s0f0
Settings for enp4s0f0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
MDI-X: Unknown
Supports Wake-on: g
Wake-on: g
Link detected: no

保证Wake-on参数的值为g,则表示服务器通过该网卡支持网络唤醒。

2. 确定目标服务器网卡的MAC地址

使用ifconfig查看目标网卡的MAC地址。

$ ifconfig
enp4s0f0: flags=4163 mtu 1500
inet 192.168.30.6 netmask 255.255.255.0 broadcast 192.168.30.255
inet6 fe80::574:abf3:4745:5bd6 prefixlen 64 scopeid 0x20

ether d8:9d:67:77:c0:8c txqueuelen 1000 (Ethernet)
RX packets 1604247143 bytes 837254279822 (779.7 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 906929717 bytes 13220325308560 (12.0 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 43

以上命令查知目标服务器的目标网卡MAC地址为d8:9d:67:77:c0:8c,broadcast值为192.168.30.255,这是后续唤醒该目标服务器所需要的参数值

3. 在控制服务器上安装wol软件

$ wget https://sourceforge.net/projects/wake-on-lan/files/wol/0.7.1/wol-0.7.1.tar.gz
$ tar zxf wol-0.7.1.tar.gz
$ cd wol-0.7.1
$ ./configure --prefix=/opt/sysoft/wol-0.7.1/ && make -j 4 && make install
$ cd .. && rm -rf wol-0.7.1
$ echo 'PATH=$PATH:/opt/sysoft/wol-0.7.1/bin/' >> ~/.bashrc
$ source ~/.bashrc

4. 在控制服务器上运行wol命令唤醒目标服务器

控制服务器一般是全天运行的,该服务器和其它用于计算的目标服务器处于同一个内部局域网内。这些局域网内的服务器具有相似的IP地址,前3个IP字段(192.168.30)相同,最后1个字段不同。此外,控制服务器一般能连接外网,具有一个能联外网的网口,该网口具有一个其他IP段的地址。

控制服务器有两个网口在同时工作。一个用于连接外网,一个用于和内网机器连接。使用控制服务器运行wol命令对目标服务器进行唤醒时,需要指定使用内网网口来对内网的目标机器进行唤醒。

$ wol -h 192.168.30.255 d8:9d:67:77:c0:8c
直接对指定MAC地址的局域网内服务器进行唤醒。

-h <string>
广播到该IP地址或主机,设置该参数的值来选择使用正确的局域网网口来对内网机器进行唤醒。该参数要设置成目标服务器网卡的broadcast值。特别是当控制服务器有多个网口连接时,不设置该参数的值,或设置错误的值,可能会导致不能唤醒目标服务器。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据