Как я могу постоянно включить Wake-on-LAN?

Вопрос или проблема

Я хочу включить функцию Wake-on-LAN для своих сетевых карт навсегда. Руководство сообщества рекомендует добавить соответствующую команду в /etc/network/interfaces. В прошлом, редактируя конфигурационные файлы Ubuntu, я заметил, что файл сетевого интерфейса вероятно записывается заново при каждом запуске, если не при каждом обновлении apt. Как лучше всего убедиться, что Wake-on-LAN включен при каждом запуске?

Скрипт запуска, который выполняется после настройки сетевых карт, должен решить проблему. Ubuntu использует upstart. Прочитав о заданиях upstart, ethtool, написании скрипта upstart и поиске в интернете лучшего решения, я наткнулся на это от jevinskie (вы захотите поместить это в файл в /etc/init):

start on started network

script
    for interface in $(cut -d: -f1 /proc/net/dev | tail -n +3); do
        logger -t 'wakeonlan init script' enabling wake on lan for $interface
        ethtool -s $interface wol g
    done
end script
  • Запускается, когда сетевые карты инициализированы
  • Получает названия сетевых интерфейсов из /proc/net/dev
  • Логирует действия в syslog
  • Действует на все найденные сетевые карты
  • Требует ethtool, так что убедитесь, что он установлен:

    sudo apt-get install ethtool
    

Если вы хотите наделить только одну сетевую карту силой пробуждения, то что-то вроде этого более уместно:

start on started network

script
    interface=eth0
    logger -t 'wakeonlan init script' enabling wake on lan for $interface
    ethtool -s $interface wol g
end script

Для меня конфигурации с использованием Netplan сработали (как для включения, так и для отключения WOL), так как я использую Ubuntu.

Проверьте этот аналогичный вопрос о том, как это включить. Canonical также предоставила хорошую документацию о том, как использовать Netplan:

Шаги, которые я выполнил

В моем конкретном случае я хотел отключить Wake on Lan, но это сводится к простому установлению булевой переменной в true/false.

  1. Я создал этот YAML конфигурации Netplan (вам нужен доступ sudo для создания файла в этой директории):
# /etc/netplan/02-disable-wol.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth-no-wakeonlan:
      match:
        macaddress: "11:22:33:44:55:66" # MAC-адрес интерфейса eth
      wakeonlan: false # Для включения установите на true
      dhcp4: false # Для включения установите на true
  1. Чтобы протестировать эту конфигурацию, я выполнил sudo netplan try, который применяет конфигурации на несколько минут, прежде чем вернуть их назад.
    ПРИМЕЧАНИЕ: По-видимому, это известная ошибка, что netplan try не может вернуть конфигурации. Этот учебник говорит, что перезагрузка должна быть достаточной (и удаление yaml файла, предполагаю)

  2. Затем мне нужно было открыть интерфейс настроек сети Ubuntu, чтобы переключиться на вновь созданный сетевой интерфейс netplan-eth-no-wakeonlan.

  3. Готово!

При загрузке Ubuntu должна прочитать все файлы в /etc/netplan/*.yaml и применить их конфигурации.

Создайте новый файл, скажем, wakeonlanconfig, и поместите в него следующие строки:

#!/bin/bash
ethtool -s eth0 wol g
exit

Затем установите разрешения на файл, сделав его исполняемым:

chmod a+x wakeonlanconfig

И, наконец, сделайте так, чтобы скрипт выполнялся при запуске:

update-rc.d -f wakeonlanconfig defaults

Для получения дополнительной информации посетите: http://lukasz-lademann.blogspot.com/2013/01/how-set-up-wol-wake-on-lan-on-thin.html

В Ubuntu 16.04 дополнительно установите WOL_DISABLE=N в /etc/default/tlp, чтобы избежать отключения WOL из-за управления энергопотреблением TLP.

http://linrunner.de/en/tlp/docs/tlp-configuration.html

Добавьте NETDOWN=no в /etc/default/halt, чтобы предотвратить отключение сетевой карты во время завершения работы

Ответы здесь либо устарели, либо содержат недостаточно важной информации. В современных версиях Ubuntu Netplan – это то, что нужно, но для настройки определенных функций вам необходимо передать их через менеджер сети. Вот что сработало для меня:

network:
  version: 2
  ethernets:
    NM-3bc8f989-e4ad-359e-89d6-8e66e83d93ef:
      renderer: NetworkManager
      wakeonlan: true
      networkmanager:
        uuid: "3bc8f989-e4ad-359e-89d6-8e66e83d93ef"
        name: "Wired connection 1"
        passthrough:
          802-3-ethernet.wake-on-lan: "magic,unicast"

Документацию по параметрам passthrough можно найти здесь:
https://www.networkmanager.dev/docs/api/latest/nm-settings-nmcli.html

И вы можете протестировать результат с помощью CLI менеджера сети, например:

sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic

Ответ или решение

Как Включить Wake-on-LAN на Постоянной Основе в Ubuntu

Wake-on-LAN (WOL) позволяет вам включать компьютер удаленно через сеть. Для того чтобы эта функция работала постоянно после каждой перезагрузки системы или обновления, необходимо предпринять несколько шагов. В этом руководстве мы рассмотрим, как правильно настроить WOL в Ubuntu, используя разные подходы: через скрипты, Netplan и NetworkManager.

1. Установка необходимых инструментов

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

sudo apt-get install ethtool

2. Использование Upstart для настройки WOL

Если вы хотите включить WOL для всех сетевых интерфейсов, вы можете создать Upstart-скрипт, который будет выполняться при инициализации сети. Для этого создайте файл в каталоге /etc/init, например, wakeonlan.conf:

sudo nano /etc/init/wakeonlan.conf

Содержимое файла должно выглядеть следующим образом:

start on started network

script
    for interface in $(cut -d: -f1 /proc/net/dev | tail -n +3); do
        logger -t 'wakeonlan init script' enabling wake on lan for $interface
        ethtool -s $interface wol g
    done
end script

Этот скрипт будет запускаться каждый раз, когда сеть инициализируется, и включать WOL для всех найденных интерфейсов.

3. Использование Netplan для настройки WOL

Если вы используете более новые версии Ubuntu (17.10 и выше), рекомендуется использовать Netplan. Чтобы включить WOL с помощью Netplan, выполните следующие шаги:

  1. Создайте файл конфигурации в каталоге /etc/netplan:
sudo nano /etc/netplan/02-wol.yaml
  1. Добавьте следующую конфигурацию, заменив eth0 на название вашего сетевого интерфейса:
network:
  version: 2
  ethernets:
    eth0:
      wakeonlan: true
  1. Примените изменения с помощью команды:
sudo netplan apply

4. Проверка и отладка

Для проверки настройки WOL вы можете протестировать, включается ли компьютер по сети:

  1. Убедитесь, что ваш компьютер правильно реагирует на команды WOL с другого устройства.
  2. Убедитесь, что настройки BIOS сетевого интерфейса на целевом компьютере включены для поддержки WOL.

5. Дополнительные настройки

Если вы используете TLP или другой менеджер электропитания, убедитесь, что они не отключают функцию WOL:

  • В файле /etc/default/tlp установите:
WOL_DISABLE=N
  • Также добавьте NETDOWN=no в /etc/default/halt, чтобы предотвратить отключение сетевого интерфейса при выключении.

Заключение

Настройка функции Wake-on-LAN в Ubuntu может показаться сложной задачей, однако, следуя приведенным выше рекомендациям, вы сможете легко включить и настроить эту функцию на постоянной основе. Это позволит вам удобно включать компьютер удаленно и значительно улучшит управление сетевыми устройствами.

Для дальнейшего изучения возможностей и параметров вы можете обратиться к документации Netplan или к документации по TLP.

Оцените материал
Добавить комментарий

Капча загружается...