--- slug: make-one-proxmox-node-to-wol-another title: "Make one Proxmox node to wake-on-lan another" tags: [self-hosting, homelab, Proxmox, WOL] image: /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: ```bash 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: ```bash ip link show enp1s0 ``` and write down our network device MAC address. Then create a file: ```bash nano /etc/systemd/network/90-wakeonlan.link ``` with the next content: ``` [Match] MACAddress= [Link] NamePolicy=kernel database onboard slot path MACAddressPolicy=persistent WakeOnLan=magic ``` After that we need to reboot and check WOL status again: ```bash 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: ```bash apt update apt install etherwake ``` Now we can power the victim off and try to wake it with: ```bash etherwake -i vmbr0 ``` Where `vmbr0` is a bridge network interface of current Proxmox node, and `` 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: ```bash crontab -e ``` Cron job line to add: ``` @reboot sleep 30s && /usr/sbin/etherwake -i vmbr0 ```