Включение Wake-on-LAN: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показано 27 промежуточных версий этого же участника)
Строка 2: Строка 2:
#Установить в случае отсутствия нужный инструмент:
#Установить в случае отсутствия нужный инструмент:
#:{{cmd|# apt-get install -y ethtool}}
#:{{cmd|# apt-get install -y ethtool}}
#Выявить интерфейсы, поддерживающие технологию Wake-on-LAN:
#Выявить интерфейсы, поддерживающие технологию:
#:<source language="bash">
#:<source language="bash">
for NET in `ip li | awk '{gsub(":","");print $2}' | grep en`; do
# for NET in `ip li | awk '{gsub(":","");print $2}' | grep en`; do
    printf "\n$NET "
      printf "\n$NET "
    ethtool $NET | awk '/Supports Wake-on/{print $3}'
      ethtool $NET | awk '/Supports Wake-on/{print $3}'
done | sort
  done | sort
</source>
</source>
#:Пример вывода:
#:Пример вывода:
#:<source language="ini">
#:<source language="ini">
enp5s0f0 d
enp5s0f0 d
enp5s0f1 d
enp5s0f1
enp8s0f0 pumbg
enp8s0f0 pumbg
enp8s0f1 d
enp8s0f1 d
Строка 21: Строка 21:
eno2np1 g
eno2np1 g
</source>
</source>
#:Интересуют содержащие в выводе букву '''<code>g</code>''' — для приведённых примеров это <code>enp8s0f0</code>, <code>eno1np0</code> и <code>eno2np1</code>.
#:Подходят лишь содержащие в выводе букву '''<code>g</code>''' — для приведённых примеров это <code>enp8s0f0</code>, <code>eno1np0</code> и <code>eno2np1</code>.
#Включить Wake-on-LAN на нужном интерфейсе, к примеру:
#Включить Wake-on-LAN на нужном интерфейсе, к примеру:
#:{{cmd|# ethtool -s eno1np0 wol g}}
#:{{cmd|# ethtool -s eno1np0 wol g}}
#Обеспечить присутствие этого интерфейса в локалке, даже если он никак не задействован в обмене данными.
#Обеспечить присутствие этого интерфейса в локалке, даже если он никак не задействован в обмене данными.
=Собственно включение=
=Собственно включение=
*'''Через SystemD'''
*'''Через SystemD...'''
*:#Получить МАС-адрес нужного интерфейса:
*:#Получить МАС-адрес нужного интерфейса:
*:#:{{cmd|ip -o li sh eno1np0 | sed 's|.*link/ether ||;s| brd .*||'
*:#:<pre>$ ip -o li sh eno1np0 | sed 's|.*link/ether ||;s| brd .*||'</pre>
*:(если интерфейс не входит в объединение с общим МАС-ом для всех оъединённых)
*:#:''(если интерфейс не входит в объединение с общим МАС-ом для всех объединённых)'' или ''(если входит)'':
*:#:{{cmd|ip -o li sh enp1np0 | sed 's|.*permaddr ||'}}
*:#:<pre>$ ip -o li sh eno1np0 | sed 's|.*permaddr ||;s|\\.*||'</pre>
*:(если входит)
*:#:'''Пример вывода''': <code>3c:ec:ef:97:a5:2c</code>
*:#:<pre>3c:ec:ef:97:a5:2c</pre>
*:#Создать файл {{path|/etc/systemd/network/wake-on-lan.link}} с этим МАС-ом:
*:#Создать файл /etc/systemd/network/wired.link с этим МАС-ом:
*:#:<source language="ini">
*:#:<source language="ini">
[Match]
[Match]
Строка 43: Строка 43:
WakeOnLan = magic
WakeOnLan = magic
</source>
</source>
*'''Через {{path|/etc/network/interfaces}}'''
*'''Для ProxMox и прочих дебианов:'''
*:'''(актуально для ProxMox и прочих дебианов)'''
*:Добавить к описанию интерфейса в файле {{path|/etc/network/interfaces}} соответствующую опцию, например:
*:<source language="ini">
iface eno1np0 inet manual
    ...
    ethernet-wol g
    ...
</source>
Насколько я понял, оба варианта попросту отрабатывают команду включения Wake-on-LAN {{cmd|ethtool -s <iface> wol g}} для заданного интерфейса/МАС-адреса при каждом запуске сетевой службы.
 
 
После всех манипуляций выключить компьютер и попытаться запустить его уже по сети тем самым «волшебным пакетом».
 
=Обратная связь=
*[https://t.me/gbIMoBou @gbIMoBou]
*[[Участник:Дым#Заметки|Другие статьи]]
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
[[Категория:Admin]]

Текущая версия от 09:17, 12 декабря 2024

Проверка возможностей интерфейса

  1. Установить в случае отсутствия нужный инструмент:
    # apt-get install -y ethtool
  2. Выявить интерфейсы, поддерживающие технологию:
    # for NET in `ip li | awk '{gsub(":","");print $2}' | grep en`; do
          printf "\n$NET "
          ethtool $NET | awk '/Supports Wake-on/{print $3}'
      done | sort
    Пример вывода:
    enp5s0f0 d
    enp5s0f1
    enp8s0f0 pumbg
    enp8s0f1 d
    Или:
    eno1np0 g
    eno2np1 g
    Подходят лишь содержащие в выводе букву g — для приведённых примеров это enp8s0f0, eno1np0 и eno2np1.
  3. Включить Wake-on-LAN на нужном интерфейсе, к примеру:
    # ethtool -s eno1np0 wol g
  4. Обеспечить присутствие этого интерфейса в локалке, даже если он никак не задействован в обмене данными.

Собственно включение

  • Через SystemD...
    1. Получить МАС-адрес нужного интерфейса:
      $ ip -o li sh eno1np0 | sed 's|.*link/ether ||;s| brd .*||'
      (если интерфейс не входит в объединение с общим МАС-ом для всех объединённых) или (если входит):
      $ ip -o li sh eno1np0 | sed 's|.*permaddr ||;s|\\.*||'
      Пример вывода: 3c:ec:ef:97:a5:2c
    2. Создать файл /etc/systemd/network/wake-on-lan.link с этим МАС-ом:
      [Match]
      MACAddress = 3c:ec:ef:97:a5:2c
      
      [Link]
      NamePolicy = Kernel database onboard slot path
      MACAddressPolicy = persistent
      WakeOnLan = magic
  • Для ProxMox и прочих дебианов:
    Добавить к описанию интерфейса в файле /etc/network/interfaces соответствующую опцию, например:
    iface eno1np0 inet manual
        ...
        ethernet-wol g
        ...

Насколько я понял, оба варианта попросту отрабатывают команду включения Wake-on-LAN ethtool -s <iface> wol g для заданного интерфейса/МАС-адреса при каждом запуске сетевой службы.


После всех манипуляций выключить компьютер и попытаться запустить его уже по сети тем самым «волшебным пакетом».

Обратная связь