Como Configurar o Wake-on-LAN em um Servidor Debian

Como Configurar o Wake-on-LAN em um Servidor Debian

1. Obtendo Informações

Antes de começar, certifique-se de que a opção de Wake-on-LAN (WOL) está habilitada na BIOS do servidor.

Abaixo está o meu passa a passo no servidor de teste como referência, para ativar o Wake-on-Lan.

Tela de Bios Servidor

Em seguida, precisamos descobrir o endereço IP, o endereço MAC e o nome da interface de rede que será configurada para WOL. Utilize o seguinte comando para listar as interfaces de rede:

ip a | grep '0'  # Exibe as interfaces que possuem '0' no nome

Aqui está um exemplo do resultado obtido:

umbrel@umbrel:~$ ip a | grep "0"
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
group default qlen 1000
    link/ether 40:8d:5c:4b:61:7a brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.198/24 brd 192.168.42.255 scope global dynamic noprefixroute enp1s0
    inet6 fe80::16c1:a6b6:cf8f:bb38/64 scope link noprefixroute
3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 56:44:0d:85:41:91 brd ff:ff:ff:ff:ff:ff permaddr 5c:e4:2a:08:7a:69

No exemplo acima, a interface de interesse é a enp1s0, com endereço MAC 40:8d:5c:4b:61:7a e IP 192.168.42.198.

Com essas informações, você precisa realizar dois passos:

  1. Configurar a interface de rede (enp1s0) para habilitar o Wake-on-LAN no servidor.
  2. Instalar a ferramenta necessária em outro computador para ligar o servidor remotamente pela rede.

2. Configurando o Servidor

Primeiro, verifique se a função Wake-on-LAN está ativa na interface de rede utilizando o ethtool. Instale o software e execute o comando abaixo:

sudo apt install ethtool
sudo ethtool enp1s0

A saída do comando será semelhante a esta:

Settings for enp1s0:
    Supported ports: [ TP    MII ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: Symmetric Receive-only
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: Symmetric Receive-only
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                         100baseT/Half 100baseT/Full
                                         1000baseT/Full
    Link partner advertised pause frame use: Symmetric Receive-only
    Link partner advertised auto-negotiation: Yes
    Link partner advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Auto-negotiation: on
    master-slave cfg: preferred slave
    master-slave status: slave
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: external
    MDI-X: Unknown
    Supports Wake-on: pumbg
    Wake-on: d
    Link detected: yes

No trecho Wake-on:, precisamos que a configuração esteja como g (habilitado). Para ativar, use o comando:

sudo ethtool -s enp1s0 wol g

Agora, o servidor está configurado para Wake-on-LAN.

Persistindo a Configuração Após Reinicialização

Se a configuração não se mantiver após uma reinicialização, crie um script para aplicar o comando automaticamente ao ligar o sistema:

sudo vim /etc/network/if-up.d/wol_fix.sh

No editor, adicione o seguinte conteúdo:

#!/bin/sh 
/sbin/ethtool -s enp1s0 wol g

Salve e saia do editor.

Em seguida, defina permissões de execução para o arquivo:

sudo chmod +x /etc/network/if-up.d/wol_fix.sh

Crie uma unidade de serviço no systemd para garantir que o script seja executado durante a inicialização:

sudo vim /etc/systemd/system/wol_fix.service

Adicione o seguinte conteúdo:

[Unit] 
Description=Fix para manter o Wake-on-LAN habilitado após a reinicialização

[Service] 
ExecStart=/etc/network/if-up.d/wol_fix.sh 
Type=oneshot 
RemainAfterExit=yes  

[Install] 
WantedBy=multi-user.target

Salve e saia do editor.

Agora, recarregue o daemon do systemd e habilite o serviço:

sudo systemctl daemon-reload 
sudo systemctl enable wol_fix.service 
sudo reboot

3. Configurando o Outro Computador

No outro computador, instale o software wakeonlan para enviar o comando que ligará o servidor pela rede:

sudo apt install wakeonlan

Para ligar o servidor, basta executar o comando com o endereço MAC do servidor:

wakeonlan 40:8d:5c:4b:61:7a

O servidor deve iniciar. Para testar, execute um ping no IP do servidor:

ping 192.168.42.198

Se o servidor estiver ativo, você verá uma resposta semelhante a esta:

64 bytes from 192.168.42.198: icmp_seq=16 ttl=64 time=5.94 ms
64 bytes from 192.168.42.198: icmp_seq=17 ttl=64 time=2.29 ms
64 bytes from 192.168.42.198: icmp_seq=18 ttl=64 time=1.71 ms
64 bytes from 192.168.42.198: icmp_seq=19 ttl=64 time=2.43 ms
64 bytes from 192.168.42.198: icmp_seq=20 ttl=64 time=1.75 ms
64 bytes from 192.168.42.198: icmp_seq=21 ttl=64 time=2.04 ms

Esses são os passos que realizei para configurar o Wake-on-Lan em casa, sintam se livres para alterar ou melhorar essas etapas.

4 - Bônus - Adicionando atalho no DWM

Em um editor de texto, crie um menu para o DMenu, conforme abaixo:

#!/bin/bash

ligar_home_lab="HomeLab Ligar"

# Variable passed to dmenu
options="$ligar_home_lab"

chosen="$(echo -e "$options" | dmenu -p "Wake-on-Lan Servidores " )"
case $chosen in
     $ligar_home_lab)
         wakeonlan 40:8d:5c:4b:61:7a
         notify-send -t 3000 "Wake-on-Lan Home Lab" "Enviado sinal para ligar servidor"
    ;;
esac

Salve o arquivo em um local de path, dê permissão e adicione esse script em um atalho no dwm:

static const Key keys[] = {
...
 MODKEY|ShiftMask,             XK_v,                           spawn,          SHCMD("~/.local/bin/dmenu/dmenu-wake-on-lan") },
...
};

Após compilar o DWM, o seu ataho estará pronto:

Dmenu para ligar homelab

Esse bônus foi apenas um exemplo, na verdade há infinitas formas de fazer isso, com diversos outros softwares, utilize isso como base.

Referências

comments powered by Disqus