# Настройка Wake-on-LAN (WOL) в Linux


{{% param description %}}

<!--more-->

## Настройка WOL

Для начала нужно проверить, что в BIOS/UEFI включена функция **Wake on LAN**.
Далее устанавливаем `ethtool` и проверяем настройки.
Указываем имя сетевого, через которое хоть будить компьютер. Существующие можно посмотреть командой `ip a`. 

```shell
sudo apt update && sudo apt install ethtool
sudo ethtool enp8s0 | grep "Wake-on"
```
Если вывод показывает значение **d** — значит режим отключен.
Меняем режим на **Wake on MagicPacket** — **g**. Подробнее режимы можно посмотреть в [документации](https://man7.org/linux/man-pages/man8/ethtool.8.html).

```shell
sudo ethtool --change enp8s0 wol g
```

Проблема ручного изменения в том, что он работает только до перегрузки системы.
Поэтому, нужно добавить его в автозагрузку одним из следующих способов:


### Netplan

В вашу конфигурацию, например в `/etc/netplan/10-init.yaml` нужно добавить опцию `wakeonlan`.

```yaml
network:
  version: 2
  ethernets:
    enp8s0:
      dhcp4: true
      wakeonlan: true
```


### Interfaces

В вашу конфигурацию, например в `/etc/network/interfaces` нужно добавить опцию `ethernet-wol`.

```ini
auto enp8s0
iface enp8s0 inet dhcp
        ethernet-wol g
```


### NetworkManager

Нужно посмотреть как называется ваше подключение в системе и изменить на нем режим работы.

```shell
nmcli con show
sudo nmcli c modify "netplan-enp8s0" 802-3-ethernet.wake-on-lan magic
nmcli c show "netplan-enp8s0" | grep 802-3-eth
```


### Systemd-networkd

Смотрим ваши интерфейсы и корректируем нужный

```shell
networkctl list
sudo networkctl edit enp8s0
```

и добавляем опцию

```ini
[Link]
WakeOnLan=magic
```

Далее активируем изменения

```shell
sudo networkctl reload
sudo networkctl reconfigure
```


### Systemd

Если предыдущие варианты по каким-то причинам не подошли, то можно это сделать через **systemd**. 

Создаем новую службу

```shell
sudo systemctl edit wol.service --full --force
```

И добавляем установку значения в **Wake on MagicPacket**.

```ini
[Unit]
Description=Enable Wake-on-LAN
After=network-online.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool --change enp8s0 wol g
[Install]
WantedBy=network-online.target
```

Перезагружаем измененные конфигурации служб и запускаем.

```shell
sudo systemctl daemon-reload
sudo systemctl enable wol.service
sudo systemctl start wol.service
systemctl status wol
```


## Проверка работы

Усыпляем наш компьютер `sudo systemctl suspend` или выключаем его `sudo systemctl poweroff`. 
Индикатор на сетевой карте компьютера может и не гореть, зависит от производителя, 
но он обязан гореть на коммутаторе (пусть даже желтым), иначе магические пакеты до вашей сетевой карты не дойдут.

Далее, с другого компьютера отправляем команду на включение, указывая MAC адрес включаемого компьютера.

```shell
sudo apt update && sudo apt install etherwake
sudo etherwake -i ens3 11:22:33:44:55:66
```

