2.7 KiB
slug | title | tags | image | ||||
---|---|---|---|---|---|---|---|
make-one-proxmox-node-to-wol-another | Make one Proxmox node to wake-on-lan another |
|
/img/homelab.png |
Nothing is eternal, especially the relevance of documentation. I think help.ubuntu.com is an absolute winner, holding the largest number of outdated and irrelevant pages. But that's not a topic for today's post. One of my Proxmox cluster nodes can't power itself on after the outage. But it supports wake-on-LAN, so I decided that another node could power it on. And the simplicity of this task was overrated by me.
:::warning
Wake on LAN doesn't work across VLANs. Magic packets could be sent and received only inside a single subnet.
:::
The victim
First of all, even after enabling "Wake up on PCI event" or something in BIOS it was not working because WoL was still disabled on a software level. It can be checked with:
ethtool enp1s0
Where enp1s0
is a physical network interface of a Proxmox node, not a bridge.
There should be Wake-on:
setting among others. In my case it was Wake-on: d
, which means that wake-on-LAN is disabled, according to ethtool
documentation:
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(tm)
s Enable SecureOn(tm) password for MagicPacket(tm)
d Disable (wake on nothing). This option clears all previous
options.
We need to set it to wake by the MagicPacket(tm). We need to create a config file for this to be enabled on system start. But first we need to:
ip link show enp1s0
and write down our network device MAC address. Then create a file:
nano /etc/systemd/network/90-wakeonlan.link
with the next content:
[Match]
MACAddress=<mac-address-here>
[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent
WakeOnLan=magic
After that we need to reboot and check WOL status again:
ethtool enp1s0
Now Wake-on
should be set to g
.
The one who bothering
On another node we need to install an util that will be sending a magic packet:
apt update
apt install etherwake
Now we can power the victim off and try to wake it with:
etherwake -i vmbr0 <mac_address>
Where vmbr0
is a bridge network interface of current Proxmox node, and <mac_address>
is a MAC address of the victim's physical network interface.
If it works, we can now add a cron job to wake our victim upon current node startup, adding some delay to make sure the network is ready:
crontab -e
Cron job line to add:
@reboot sleep 30s && /usr/sbin/etherwake -i vmbr0 <mac_address>