Wake-on-LAN entre máquinas Linux: Um guia prático

Acordar uma máquina remotamente sem chegar perto dela é um luxo que qualquer administrador de infraestrutura aprecia. O Wake-on-LAN (WOL) torna isso possível em redes cabeadas, e configurar entre duas máquinas Linux é surpreendentemente simples. Vamos aos passos.

O que você precisa saber antes de começar

Wake-on-LAN funciona através de um “magic packet” — um pacote especial que a placa de rede reconhece mesmo quando a máquina está desligada ou suspensa. O requisito fundamental é que a placa de rede mantenha energia e esteja configurada para despertar. Também é importante notar que WOL funciona praticamente apenas em Ethernet; Wi-Fi não suporta na maioria dos casos.

Configurando o host alvo (máquina que será ligada)

Passo 1: Verificar suporte à WOL

Comece verificando se sua placa de rede suporta Wake-on-LAN:

sudo ethtool <interface>

Substitua <interface> pelo nome da sua interface, como eth0, ens0 ou enp3s0. Na saída, procure pela linha:

Supports Wake-on: pumbg

O caractere g significa que sua placa suporta wake-on-magic-packet — exatamente o que você precisa. Se aparecer apenas d, significa que o suporte está desabilitado no firmware.

Passo 2: Habilitar WOL

Para ativar WOL naquela interface:

sudo ethtool -s <interface> wol g

Essa configuração é volátil — desaparece ao reiniciar. Para torná-la permanente, você tem algumas opções. A mais robusta é usar systemd.

Tornando persistente com systemd

Crie o arquivo /etc/systemd/system/[email protected]:

[Unit]
Description=Wake on LAN for %i

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s %i wol g

[Install]
WantedBy=multi-user.target

Depois, ative para sua interface:

sudo systemctl enable wol@<interface>
sudo systemctl start wol@<interface>

Isso garante que WOL seja habilitado automaticamente a cada inicialização.

Passo 3: Anotar o endereço MAC

O MAC address é o identificador único que o host de origem usará para enviar o magic packet:

ip link show <interface>

Você verá algo como:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff

Guarde esse endereço MAC — aa:bb:cc:dd:ee:ff nesse exemplo.

Configurando o host de origem (máquina que vai despertar a outra)

Passo 1: Instalar a ferramenta wakeonlan

Instale o utilitário responsável por enviar o magic packet:

# Debian/Ubuntu
sudo apt install wakeonlan

# Fedora/RHEL
sudo dnf install wol

# Arch
sudo pacman -S wol

Passo 2: Enviar o magic packet

Agora é simples. Para acordar o host alvo:

wakeonlan aa:bb:cc:dd:ee:ff

Substitua pelo MAC address que você anotou. Se tudo estiver configurado corretamente, a máquina alvo deve ligar em poucos segundos.

Enviando para uma rede diferente (broadcast)

Se precisar enviar WOL para outro segmento de rede:

wakeonlan -i <broadcast_ip> <mac_address>

Por exemplo:

wakeonlan -i 192.168.1.255 aa:bb:cc:dd:ee:ff

Troubleshooting

Não funcionou? Aqui estão algumas verificações:

Verifique se WOL realmente está ativo:

sudo ethtool <interface> | grep Wake-on

Você deve ver Wake-on: g. Se ver Wake-on: d, volte ao Passo 2 da configuração do host alvo.

Confirme o MAC correto:

Use ip link show novamente para garantir que você anotou corretamente. Endereços MAC são sensíveis — um caractere errado e não funciona.

Verifique o estado da máquina alvo:

A máquina deve estar desligada ou em suspensão, mas com energia na placa de rede. Se estiver ligada, WOL não fará nada.

Teste a conectividade de rede:

Certifique-se de que as duas máquinas podem se comunicar na mesma rede. Um ping simples funciona? Bom sinal.

Firewall:

Na maioria dos ambientes LAN local, WOL não é bloqueado. Porém, se houver um firewall restritivo, WOL usa UDP na porta 9. Verifique se essa porta está aberta entre as máquinas.

Automatizando (bônus)

Se você quer despertar múltiplas máquinas ou agendar despertas, crie um script:

#!/bin/bash

# macs.conf - arquivo com MACs
HOSTS=(
  "aa:bb:cc:dd:ee:ff"
  "11:22:33:44:55:66"
)

for mac in "${HOSTS[@]}"; do
  echo "Despertando $mac..."
  wakeonlan "$mac"
  sleep 2
done

Ou use cron para despertar em horários específicos:

0 8 * * 1-5 /usr/local/bin/wol-startup.sh

Conclusão

Wake-on-LAN em Linux é elegantemente simples quando você entende a mecânica. Com a configuração certa no host alvo e o pacote wakeonlan no host de origem, você tem um sistema de despertar remoto confiável. É especialmente útil em ambientes de desenvolvimento ou servidores que você quer manter desligados para economizar energia, mas que precisam estar prontos para uso imediato.

Lembre-se: WOL é um recurso de rede local. Para ambientes em nuvem ou infraestrutura distribuída, você precisará de outras soluções. Mas para seu datacenter privado ou laboratório, é praticamente essencial.

Rolar para cima