- Enabling Wake-On-LAN (In Ubuntu 20.10)
- Table of Contents
- Beginning
- Middle
- Ethtool
- Checking the Interface
- Turn It On Temporarily
- Test It Out
- Take Two
- Making It Permanent
- Set It Up
- Enable The Service
- Как настроить wake on lan ubuntu
- WOL: Приключения «Волшебного Пакета» в Linux
- Приступим
- Как включить Wake On Lan (WOL) в Ubuntu 16.04
- 6 ответов
Enabling Wake-On-LAN (In Ubuntu 20.10)
Table of Contents
Note: The systemd configuration here isn’t quite right, but since this post is kind of long and convoluted I made a standalone update about the systemd configuration file in this post.
Beginning
These are my notes on getting Wake-On-LAN working in Ubuntu 20.10. I have a server that I use to run most of the computation on when I use emacs/jupyter but I have it in a corner upstairs and although it’s only a little walk, I find that the fact that I have to stop what I’m doing and go upstairs to push that little button on the front makes me lazy and so it ends up running more than it has to so I thought I’d enable Wake-On-LAN so I can suspend it and wake it up whenever I need to. I’m only going to use suspend (APM S3). When I tried to use hibernate (S4) it ended up shutting down my machine (S5). Interestingly, my BIOS menu has an option to enable waking up from shutdown, but since my disk is encrypted, and I didn’t set up a separate SSH server, I have to go enter the passphrase to unlock the disk before the operating system can boot up, so it kind of defeats its own purpose.
Middle
Ethtool
The command I used to set up Wake-On-LAN on the remote machine is called ethtool. It’s in the Ubuntu repositories but wasn’t installed on my machine so I had to add it.
Checking the Interface
From what I’ve read, not all ethernet interfaces support Wake-On-LAN (although I’ve never seen one that doesn’t) so a quick check might be useful. First, find the name of your ethernet interface.
My machine shows four interfaces so I’ll just show the output for the interface I’m interested in rather than the whole output for the command.
Ethtool uses the name of the interface, in this case it’s enp4s0 , so we’ll need to note that. Additionally, the machine that I used to wake up the machine needs the MAC address ( 38:d5:47:79:ab:0b ) so it’d be useful to write that down someplace. I’m waking it up from the LAN so the IP address isn’t so important, and to be able to SSH into it I need to know it anyway, so it’s really those two pieces of information that I need. Now to check if it supports Wake-On-LAN.
Ethtool will give you some information if you don’t run it as root but for Wake-On-LAN you need to run it as root. The important lines in the output is near the bottom and it looks something like this if it supports Wake-On-LAN.
The man-page for ethtool tell you what that cryptic pumbg means — the letters are different options that this interface supports for Wake-On-LAN. In this case they are:
| Option | Description |
|---|---|
| p | Wake on PHY activity |
| u | Wake on unicast messages |
| m | Wake on multicast messages |
| b | Wake on broadcast messages |
| g | Wake on MagicPacket messages |
There’s an additional option which is what the interface was set on – d – as you can see in the last line of the output. This means Disable (wake on nothing). This option clears all previous options. I don’t have many devices on my network, so I don’t know that there’s a lot of broadcasts, multicasts, etc. that would be waking it up all the time, but since one feature of Wake-On-LAN is that it only wakes the machine when it gets the «Magic Packet», only the g and d options matter. Now that I knew it was supported, it was time to try it out.
Turn It On Temporarily
The ethtool will turn on Wake-On-LAN, but (supposedly) everytime you reboot the machine it will reset to disabled. I haven’t really tested this out, but I’ll document how to make it permanent later, anyway.
So, as you might guess, we changed the Wake-On-LAN setting to listen for MagicPacket messages. You can check using the ethtool again.
The Wake-on line should have changed to:
Now to suspend the machine so we can test it out.
Test It Out
Now, on my local machine I needed to install wakeonlan. There’s a surprising number of programs to send the Magic Packet, but this just happened to be the one I used.
The default way to use wakeonlan is apparently to just pass it the MAC address of the computer to wake up, and it will send the Magic Packet out as a broadcast, so that’s what I did.
And then I pinged the machine and I waited. And I waited. And I waited… Eventually I went upstairs and saw that it was still sleeping so I pushed the power button to wake it up and went back downstairs.
Take Two
Something wasn’t right so I SSHd into the server and started up tcpdump to see if the packets were going through.
Which gave me this output:
And then I sent the Magic Packet again.
…And nothing happened. For some reason the packets weren’t getting picked up by the machine. Luckily, wakeonlan lets you pass in an IP address as an option. The man page recommends using a broadcast address, but I have the IP addresses of my machines on the LAN reserved on my router/access-point so I just passed in the full address (I did try the LAN broadcast and it worked too).
I have my machine’s IP address aliased in my /etc/hosts file so erebus is just an alias for the machine’s IP address. The subnet broadcast version looked like this.
The output from tcpdump for the first packet looked like this.
So, something was different. I suspended the machine again and sent the Magic Packet and this time it worked. Go figure.
Making It Permanent
Set It Up
The reasons that I said earlier that the Wake-On-LAN setting «supposedly» is temporary is that:
- I haven’t really re-booted that machine to test it out (I have rebooted, but I haven’t disable the systemd service that I’m documenting here).
- The machine that I’m typing this on had Wake-On-LAN enabled and it doesn’t have a systemd service enabled.
But, really, I don’t remember even enabling Wake-On-LAN on this machine so maybe it just was the default and I didn’t realise it… another thing I should look into one of these days. Anyway, to make a service that always enables Wake-On-LAN the first step is to find the path to ethertool .
In my case the path was /sbin/ethtool , so once you know this you can create a file at /etc/systemd/system/wol.service (I think you can use another systemd sub-folder, and you can name the file anything you want, within reason, but this one seems to work well enough). In this file you put settings that look something like this:
The only thing specific to my machine is enp4s0 , the name of the ethernet interface, although it’s possible that the path to the ethtool executable might be different too… but it should be the same on Ubuntu 20.10, anyway.
Enable The Service
To enable it you can do this:
Where wol.service is the name of the file you created with the settings. You can check its status if you want.
So, that’s how I got one machine working with Wake-On-LAN. Hopefully I won’t have to look so hard the next time. Here’s the pages that I stole this from.
- TechRepublic on using ethtool and setting up a systemd service for this (don’t use the systemd file here, though).
- Stack Overflow on how to suspend and hibernate from the command-line
- Stack Overflow on what the difference is between suspend and hibernate
- Stack Overflow on using tcpdump to look for the Magic Packets on the remote machine
- Stack Overflow on editing remote files as root with emacs (not documented here, but maybe later)
- Stack Overflow on editing a local file as root with emacs (not used here, but I can never remember the syntax)
Источник
Как настроить wake on lan ubuntu
Как настроить Wake On Lan в Linux-01
Всем привет сегодня расскажу как настроить Wake On Lan в Linux.
WakeOnLan (WOL) — это технология позволяющая включить компьютер, методом отправки на него специального пакета данных, называемыми Magic Packet. Принцип работы этой технологии таков, что при выключении компьютера он переходит в дежурный режим и переводит сетевую карту в режим пониженного потребления, просматривая все поступающие пакеты из сети. Если сетевой адаптер обнаружит Magic Packet, он выдаст сигнал на включение компьютера. Примечание: для использования данной технологии необходима поддержка данной функции (технологии) сетевым адаптером, почти все современные сетевые адаптеры поддерживают данную технологию.
В данном посте мы рассмотрим настройку данной функции на примере ОС Linux.
1. В первую очередь мы просмотрим список наших сетевых интерфейсов используя утилиту ethtool:
ifconfig
В ответ получим список наших используемых сетевых интерфейсов (в моём случае он 1):
eth0 Link encap:Ethernet HWaddr 6c:62:6d:f0:ce:b4
inet6 addr: fe80::6e62:6dff:fef0:ceb4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4528 errors:0 dropped:0 overruns:0 frame:0
TX packets:491 errors:0 dropped:0 overruns:0 carrier:1
collisions:0 txqueuelen:1000
RX bytes:686281 (670.1 KiB) TX bytes:61590 (60.1 KiB)
Нам необходим интерфейс который имеет доступ к внешней сети (в моём случае eth0). Теперь проверим поддерживает ли сетевой адаптер данную технологию и настроим её используя утилиту ethtool. Устанавливаем её:
apt-get install ethtool — для Debian
yum install ethtool — для CentOS
и запустим её, для просмотра информации о сетевом интерфейсе:
ethtool eth0
В ответ мы получим всю информацию о нашем сетевом интерфейсе:
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: pg
Wake-on: d
Current message level: 0x0000003f (63)
drv probe link timer ifdown ifup
Link detected: yes
Где Supports Wake-on: pg — означает что наш сетевой интерфейс поддерживает технологию Wake On Lan, Wake-on: d — но она отключена.
Wake On Lan можно включить вручную 1 командой, но при каждой перезагрузке нашей машины он будет деактивироватся, для этого мы создадим и будем использовать специальный скрипт.
Для этого выполняем следующее:
cd /etc/init.d/
nano wakeonlanconfig
Добавляем в скрипт строки:
#!/bin/bash
ethtool -s eth0 wol g
exit
Даём права скрипту:
chmod a+x wakeonlanconfig
Создаём символическую ссылку и делаем наш скрипт исполняемым:
update-rc.d -f wakeonlanconfig defaults
Проверяем что всё нормально вводим команду:
/etc/init.d/wakeonlanconfig
Если ничего в ответ не получили, значит всё хорошо и можно проверить на практике.
Вот так вот просто настроить Wake On Lan в Linux
Источник
WOL: Приключения «Волшебного Пакета» в Linux
Совсем недавно LeeMiller описал как воспользоваться посылкой «волшебного пакета» для удаленного включения компьютера под управлением Windows, большое ему спасибо.
Очень странно, что ни кто не спросил в комментариях, — А как же быть с Линуксом? Ничего не получается, у него нет, как минимум, Пуск — Панель Управления — Сетевые Подключения!
Либо все и так всё знают, либо это никому не надо, но я, всё же, рискну об этом написать.
Пост будет творческой переработкой моего стародавнего HowTo, опубликованного на forum.ubuntu.ru, написанного, в свою очередь, после чтения англоязычных мануалов.
UPD: перенёс в «Железо», поближе к топику-мотиватору. Смотрится странно, выслушаю пожелания на перенос в другое место.
Всю теорию и настройку BIOS’а я опускаю, её замечательно разобрал LeeMiller.
Нашей задачей будет заставить сетевую карту оставаться в ждущем режиме после выключения компьютера. Если в Windows для этого достаточно поставить одну галку, то в Linux настройки сетевой карты не запоминаются и надо их производить при каждом запуске системы. Для этого понадобится сделать скриптик и поставить его на загрузку ОС.
Опыты ставились над Ubuntu, но я думаю что с «другими линуксами» проблем возникнуть не должно.
Приступим
Наблюдаем результат наподобие
eth0 Link encap:Ethernet HWaddr 01:23:45:67:89:ab
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::215:f2ff:fe6f:3487/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:71495 errors:0 dropped:0 overruns:0 frame:0
TX packets:76190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:23164212 (22.0 MiB) TX bytes:7625016 (7.2 MiB)
Interrupt:217 Base address:0xd400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1290 errors:0 dropped:0 overruns:0 frame:0
TX packets:1290 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:161182 (157.4 KiB) TX bytes:161182 (157.4 KiB)
В данном примере у нас одна сетевая карта, eth0. Если карт несколько, то их несколько 🙂
— Теперь создаем сам скрипт, для этого сначала необходимо получить права администратора:
Здесь я хочу обратить внимание на параметры: -s eth0 wol значит «заставить WOL карточки eth0» g — «ждать волшебного пакета». У WOL есть еще пяток вариантов чего ждать, но к данной теме это не относится.
Если никакого вывода не последовало и показалась следующая строка ввода — значит всё прошло гладко.
— Проверяем на практике.
Распечатываем данное руководство, выключаем первый компьютер и идём ко второму 🙂
Шлём пакет одним из предложенных LeeMiller’ом способов. Если способы не нравятся — рекомендую свой любимый, простенький веб-сервис, которым можно воспользоваться даже при помощи браузера в сотовом телефоне.
Хочу обратиться к тем, кто умнее меня, — если есть (наверняка есть) более красивый способ реализации — сообщайте, будем обновлять знания!
И благодарю LeeMiller’a за то что отсыпал кармы из волшебного пакета, без этого ничего бы не вышло.
Источник
Как включить Wake On Lan (WOL) в Ubuntu 16.04
Как включить Wake On Lan (WOL) в Ubuntu 16.04 LTS?
6 ответов
Я нашел лучший способ, который работал для меня. По крайней мере, чище. Я пишу об этом, потому что, гугляя Ubuntu 16 wol и другие подобные поиски, я сталкивался с этим постом несколько раз. Это может помочь кому-то еще.
Очевидно, Ubuntu изменил upstart для systemd, это в Ubuntu 15, Ubuntu 16 и, вероятно, в следующих версиях. Я новичок в обеих системах, но это сработало для меня.
Чтобы WOL работал, мне приходилось включать его каждый раз при загрузке системы. Чтобы избежать этого вручную, я использовал systemd для этой цели. Вот что я сделал:
Сначала создайте файл /etc/systemd/system/[email protected] (держите символ @). Поместите это в это:
Включите это для интерфейса при загрузке, выполните следующую команду (измените eth3 с вашим интерфейсом):
Вы должны увидеть что-то вроде этого:
Чтобы проверить, включен ли он, выполните следующую команду (измените eth3 с вашим интерфейсом), и он должен вернуть enabled :
Чтобы проверить это, перезагрузитесь и запустите (измените eth3 с вашим интерфейсом):
Вы должны увидеть строку со следующим:
Upstart — это основанная на событиях замена для демона /sbin/init, который обрабатывает запуск задач и служб во время загрузки, останавливает их при завершении работы и контролирует их во время работы системы.
— upstart — основанный на событиях демон init
systemd — это набор основных строительных блоков для системы Linux. Он предоставляет диспетчер системы и услуг, который запускается как PID 1 и запускает остальную часть системы. (. )
— systemd
В Ubuntu 16.04 установлены WOL_DISABLE=N в /etc/default/tlp чтобы избежать отключения WOL с помощью управления питанием TLP.
добавлять NETDOWN=no в /etc/default/halt для предотвращения отключения сетевой карты во время выключения
Включить Wake on LAN в /etc/network/interfaces когда используется статическая конфигурация сети.
Включите wake on lan в BIOS, войдите в настройки BIOS и найдите что-нибудь под названием «Wake up on PCI event», «Wake up on LAN» или подобное. Измените это так, чтобы это было включено. Сохраните настройки и перезагрузите компьютер.
Предупреждение. Некоторые материнские платы / сетевые контроллеры не поддерживают WOL при «холодной» загрузке (состояние S5, когда питание системы физически отключается и снова включается). В этом случае должен быть выполнен как минимум один цикл питания (включение, выключение). Чтобы решить эту проблему, BIOS можно настроить на включение при восстановлении переменного тока и запланировать выключение в Ubuntu после этого. Обратитесь к руководству по материнской плате для получения дополнительной информации.
Для того, чтобы WOL работал, убедитесь, что ваш интерфейс Ethernet правильно отключен вашей системой при отключении питания.
Создайте скрипт bash с именем wol_poweroff.sh в каталоге /etc/rc6.d/:
Поместите этот код в это:
Скопируйте его в каталог /etc/rc0.d (чтобы он также работал с halt):
Сделайте их обоих исполняемыми:
Теперь проверьте, работает ли он, выключив компьютер с помощью sudo shutdown now или же sudo poweroff и используя инструмент WOL, чтобы отправить ему волшебный пакет.
Это было единственное, что сработало для меня. Я нашел эти шаги в отчете об ошибке на launchpad.net.
По словам автора, Робби Уильямсона, это работает из-за следующего:
Чтобы заставить WOL работать, интерфейс Ethernet должен быть надлежащим образом отключен как часть выключения системы. Это должно быть выполнено как часть уровней запуска rc0 и rc6, отмечая, что Linux обычно имеет 7 различных уровней запуска (или режимов работы):
rc0.d — система остановлена
rc1.d — однопользовательский режим
rc2.d — однопользовательский режим с поддержкой сети
rc3.d — многопользовательский режим — загрузка в текстовом режиме
rc4.d — еще не определено
rc5.d — многопользовательский режим — загрузка в X Windows
rc6.d — выключение и перезагрузка
Запустите следующее в терминале:
Вы должны увидеть g рядом с пробуждением по локальной сети после написания второй команды
Помимо параметров, предложенных @nkef, вы можете установить следующие параметры в /etc/network/interfaces, если вы используете DHCP вместо статических настроек IP для сетевого адаптера (здесь он называется eth0):
(проверено на Ubuntu 16.04 LTS).
Если вы используете NetworkManager, то вы можете включить WOL через nmcli :
Запомните НАИМЕНОВАНИЕ подключения ТИПА «802-3-ehternet» для УСТРОЙСТВА, представляющего интерес. Скажите, что это имя «Проводное соединение 1». Затем измените его правильно:
Чтобы получить его MAC-адрес:
Теперь вы можете выключить его и включить с другого компьютера в той же локальной сети с помощью wakeonlan 1a:2b:3c:4d:5e:6f команда, где 1a:2b:3c:4d:5e:6f MAC-адрес сетевой карты предыдущего шага
Это меня немного поразило в Ubuntu 18.04 (безголовая / минимальная установка), к сожалению, уже перечисленные здесь ответы, хотя иногда они могут показаться работающими, не дают надежного решения, поскольку они создают условия гонки или сражаются с подобными systemd, Нетплан и Удев.
Я тоже сначала попробовал этот подход, и он, похоже, сработал, я планирую загрузку системы каждый вечер через WakeOnLan для запуска резервного копирования, поскольку системный BIOS не обеспечивает опцию запланированного включения переменного тока.
Он работал бы в течение нескольких дней, а затем отказывался просыпаться, включение его вручную и запуск ethtool показывали, что WoL был отключен:
Поэтому я решил, что нужно было еще кое-что отключить, и у меня было много таких проблем в последние несколько лет, когда systemd захватил части системы, и я решил начать здесь, о чудо:
WakeOnLan =. По умолчанию выключено.
Примеры онлайн показывают что-то вроде:
Как бы то ни было, это все еще не работает. Потом я наткнулся на это:
И что я могу найти в /run/systemd/network/10-netplan-eno1.link?
Решение Либо:
- удалить нетплан,
- настроить сеть через конфигурацию netplan,
- или установите файл systemd.link для более высокого приоритета.
Поскольку у меня уже был файл systemd.link, я просто переименовал его в 00-wired.link, перезагрузился, и теперь отчеты ethtool eno1:
Без каких-либо дополнительных услуг исключительно для того, чтобы попытаться включить WoL.
Источник