- Linux пробуждение по сети
- Linux пробуждение по сети
- ru WakeOnLan
- Аппаратная часть
- Прошивка / BIOS
- Настройка интерфейса
- stretch
- Squeeze
- После squeeze
- Отправка WOL сообщений
- WOL чувствительность
- WOL Persistence
- Kernel 2.6
- Debugging state with ethtool
- Conclusion
- Wake-on-LAN
- Contents
- Hardware settings
- Software configuration
- Enable WoL on the network adapter
- Make it persistent
- systemd.link
- systemd service
- netctl
- NetworkManager
- Enable WoL in TLP
- Trigger a wake up
- On the same LAN
- Across the internet
- Miscellaneous
- Check reception of the magic packets
- Using netcat
- Using ngrep
- Example of WoL script
- Troubleshooting
- NetworkManager
- Network adapter is still powered off on shutdown
- Wake-up after shutdown
- Fix using BIOS Settings
- Fix by Kernel quirks
- Battery draining problem
- Realtek
- alx driver support
Linux пробуждение по сети
Как настроить 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
Источник
Linux пробуждение по сети
опять перейдёт в состояние «d» и, если вам нужно, добавьте приведённую выше
команду куда-нибудь в /etc/rc.local.
Это может не работать (или не сработать второй раз), если выполнялся сброс (переинициализации) карты (в том числе — на ноутбуках после «сна»).
Лучше это делать из:
— Ubuntu/Ddebian: /etc/network/interfaces в post-up / pre-down
— AltLinux — в /etc/net/ifaces/ethX/ifup-post
— в других — в соотв. местах, выполняемых _каждый раз_ после инициализации устройства или перед его отключением.
1.4 , Р ( ? ), 12:58, 21/12/2010 [ответить] | + / – |
хочу через интернет. ))) |
1.6 , Alex ( ?? ), 01:17, 27/12/2010 [ответить] | + / – |
> девятый порт, помеченный в /etc/services как discard, что означает то, что > пакет с этого порта отправить не получится Бред, это просто название протокола, RFC863. |
1.7 , sam ( ?? ), 17:23, 29/12/2010 [ответить] | + / – |
Если на компьютере несколько сетевых карт обязательно нужно указать в параметр -i адрес Например, если нужно разбудить комп с адресом 192.168.2.34 в сети 192.168.2.0/24 то можно так и указать например широковещательный адрес сети Источник Немного заметок об особенностях работы Wake On LAN (WOL) в операционной системе Debian. Аппаратная частьВаш первый шаг к загрузке компьютера через сеть — убедиться, что ваша Ethernet-карта и материнская плата поддерживают какой-либо тип функции Wake On LAN. В особенности карты 3Com’s маркировки -NM (non managed) не поддерживают WOL, тогда как карты маркировки -M (managed) поддерживают. Есть две основные системы. Старый способ заключается в использовании 3-пинового коннектора Wake On LAN между вашей Ethernet-картой и материнской платой. Оба гнезда(англ.версия — «headers») обычно именуются ‘wol’. Более новая система использует Wake On LAN pin на PCI-шине, что устраняет необходимость в кабеле. Некоторые материнские платы поддерживают оба варианта и только предоставляют гнездо для обратной совместимости с Ethernet-картами, не поддерживающими PCI pin. Более новые материнские платы с встроенными сетевыми картами поддерживают Wake On LAN без необходимости каких-либо выводов / кабелей. Прошивка / BIOSВ хорошем BIOS в управлении питанием вы найдёте ясную, интуитивно понятную опцию «Wake On LAN». К сожалению, моя система не была столь ясной и имела несколько возможных вариантов. один казался работающим всегда, остальные — временами. Я строил по информации заимствованной у Mark Ivey, т.к. У меня тоже есть Shuttle XPC SK41G и я успешно использую опцию «PowerOn by PCI Card». 1 Настройка интерфейсаstretchДобавьте этот файл: перезагрузитесь. Проверьте работу: Директива Wake-on: g означает, что всё работает. SqueezeДля Squeeze ethtool параметры могут быть установлены непосредственно из /etc/network/interfaces. Результат выше может быть достигнут так: Скрипт /etc/network/if-up.d/ethtool будет заботиться о вызове ethtool по ifup. Читайте /usr/share/doc/ethtool/README.Debian для более полной информации. Дальше можете выключить систему и приготовить остальные системы, чтобы разбудить её. После squeezeПосле аппаратной активации Wake On LAN также необходимо активировать его в программном обеспечении. Это делается с использованием программы ethtool, которая говорит интерфейсу отвечать на волшебный пакет (the magic packet). Замените eth0 на имя вашего сетевого интерфейса: Это можно автоматизировать с помощью записи в /etc/network/interfaces: Это запускает ethtool после каждого подъёма интерфейса eth0, а также после его отключения, таким образом WOL должен работать даже в случае, когда сеть отключена некорректно. Отправка WOL сообщенийЯ установил пакет etherwake в контролирующей системе для отправки «Magic Packet» к моему компьютеру для пробуждения. Программа должна быть запущена от имени root для отправки пакета (Я использую sudo для её запуска). Также доступен wakeonlan — программа, использующая UDP-пакеты, а TCP, и не требующая прав root для запуска. Она также чуть более гибкая в настройке. WOL чувствительностьЯ нашёл, что не хочу каких-либо Wake On LAN настроек, за исключением Wake on «Magic Packet» (g). Я хочу только включать мою машину тогда, когда я ей это говорю, ни одноадресных (u), широковещательных (b) или многоадресных (m) сообщений. WOL PersistenceHardware looks up to spec, you think the BIOS is set right, but it still doesn’t work without some tweaking using the software. According to the Wake On Lan client FAQ most Linux drivers disable the WOL feature on boot 2 , so we need to get it going. Kernel 2.6With a 2.6 kernel we’re using /etc/modprobe.d. You may be using /etc/modprobe.conf, but if it’s not including /etc/modprobe.d you’re probably getting told about that each time you boot and some stuff may not be configured properly. I’m using /etc/modprobe.d and I added a file local.conf into the directory. It says: ethtool comes from the ethtool package, so you’ll need to install that unless your card supports a load option to set WOL. If that’s the case I’d make an local.conf file with the appropriate options line, maybe something like: If your kernel uses an initramfs image (eg. Debian stock kernels), also run update-initramfs -u (or update-initramfs -u -k all if necessary) to rebuild kernel initial ramdisk(s). Testing on another machine with a C3905B-TXNM and a 3C905C-TXM that uses the 3c59x module to drive them both I found that ethtool was unable to query them or set the WOL setting, but that the enable_wol=1 setting did work and was required. While I was messing with these settings, I noticed that both 8139too and 8139cp were loading, but loading just 8139cp alone failed since my chipset isn’t new enough so I blacklisted it. Debugging state with ethtoolAfter an hour struggling with why my system still didn’t work I started throwing in the ethtool query command all over the place to see what the deal was: I found that (at least with my 8139too driver on Debian 3.1/Sarge) the install line was working when I’d modprobe 8139too, but ifup also resets the WOL setting, so I added an up line to /etc/network/interfaces under eth0: I kept the ethtool command in /etc/modprobe.d/local.conf in case I boot and ifup isn’t executed before shutting down. ConclusionWake On LAN works on Debian and opens some new options up to me. I can log into my gateway and boot my desktop, grab what I need and then power it back off remotely. I’m using DHCP with MAC-to-IP mappings so I can look in that file on my gateway system to know the MAC address of the system I wish to wake up. If I didn’t have that I could keep a text file. My next feat is to have non-essential systems power-off (not just halt) on a power outage to extend the battery runtime for the essential systems and then use WOL to power the other systems back on after power is restored and the battery has hit some specific charge level. I think some settings with halt or APM or ACPI are not right on those systems. See OffAndOnAgain. Источник Wake-on-LANWake-on-LAN (WoL) is a feature to switch on a computer via the network. ContentsHardware settingsThe target computer’s motherboard and Network Interface Controller have to support Wake-on-LAN. The target computer has to be physically connected (with a cable) to a router or to the source computer for WoL to work properly. Some wireless cards have support for Wake on Wireless (WoWLAN or WoW). The Wake-on-LAN feature also has to be enabled in the computer’s BIOS. Different motherboard manufacturers use slightly different language for this feature. Look for terminology such as «PCI Power up», «Allow PCI wake up event» or «Boot from PCI/PCI-E». Note that some motherboards are affected by a bug that can cause immediate or random #Wake-up after shutdown whenever the BIOS WoL feature is enabled. Software configurationEnable WoL on the network adapterDepending on the hardware, the network driver may have WoL switched off by default. To query this status or to change the settings, install ethtool , determine the name of the network interface, and query it using the command: The Wake-on values define what activity triggers wake up: d (disabled), p (PHY activity), u (unicast activity), m (multicast activity), b (broadcast activity), a (ARP activity), and g (magic packet activity). The value g is required for WoL to work, if not, the following command enables the WoL feature in the driver: This command might not last beyond the next reboot and in this case must be repeated via some mechanism. Common solutions are listed in the following subsections. Make it persistentsystemd.linkLink-level configuration is possible through systemd-networkd#link files. The actual setup is performed by the net_setup_link udev builtin. Add the WakeOnLan option to the network link file: Also see systemd.link(5) for more information. systemd serviceThis is an equivalent of previous systemd.link option, but uses a standalone systemd service. Alternatively install the wol-systemd AUR package, then activate this new service by starting wol@interface.service . udev is capable of running any command as soon as a device is visible. The following rule will turn on WOL on all network interfaces whose name matches enp* . The file name is important and must start with a number between 81 and 99 so that it runs after 80-net-setup-link.rules , which renames interfaces with predicable names. Otherwise, NAME would be undefined and the rule would not run. The $name placeholder will be replaced by the value of the NAME variable for the matched device. A command can be run each time the computer is (re)booted using «@reboot» in a crontab. First, make sure cron is enabled, and then edit a crontab for the root user that contains the following line: netctlIf using netctl, one can make this setting persistent by adding the following the netctl profile: NetworkManagerNetworkManager provides Wake-on-LAN ethernet support. One way to enable Wake-on-LAN by magic packet is through nmcli. First, search for the name of the wired connection: By following, one can view current status of Wake-on-LAN settings: Enable Wake-on-LAN by magic packet on that connection: Then reboot, possibly two times. To disable Wake-on-Lan, substitute magic with ignore . The Wake-on-LAN settings can also be changed from the GUI using nm-connection-editor . You can disable Wake-on-Lan for all connections permanently by adding a dedicated configuration file : Enable WoL in TLPWhen using TLP for suspend/hibernate, the WOL_DISABLE setting should be set to N in /etc/tlp.conf to allow resuming the computer with WoL. Trigger a wake upTo trigger WoL on a target machine, its MAC address must be known. To obtain it, execute the following command from the machine: Here the MAC address is 48:05:ca:09:0e:6a . In its simplest form, Wake-on-LAN broadcasts the magic packet as an ethernet frame, containing the MAC address within the current network subnet, below the IP protocol layer. The knowledge of an IP address for the target computer is not necessary, as it operates on layer 2 (Data Link). If used to wake up a computer over the internet or in a different subnet, it typically relies on the router to relay the packet and broadcast it. In this scenario, the external IP address of the router must be known. Keep in mind that most routers by default will not relay subnet directed broadcasts as a safety precaution and need to be explicitly told to do so. Applications that are able to send magic packets for Wake-on-LAN:
https://muflone.com/gwakeonlan/english/ || gwakeonlan
https://sourceforge.net/projects/wake-on-lan/ || wol
https://github.com/stefmitropoulos/wol_qt || wol_qtAUR On the same LANIf you are connected directly to another computer through a network cable, or the traffic within a LAN is not firewalled, then using Wake-on-LAN should be straightforward since there is no need to worry about port redirects. In the simplest case the default broadcast address 255.255.255.255 is used: To broadcast the magic packet only to a specific subnet or host, use the -i switch: Across the internetWhen the source and target computers are separated by a NAT router, different solution can be envisaged:
Otherwise Wake-on-Lan can be achieved via port forwarding. The router needs to be configured using one of these two options:
In any case, run the following command from the source computer to trigger wake-up: MiscellaneousCheck reception of the magic packetsIn order to make sure the WoL packets reach the target computer, one can listen to the UDP port, usually port 9, for magic packets. The magic packet frame expected contains 6 bytes of FF followed by 16 repetitions of the target computer’s MAC (6 bytes each) for a total of 102 bytes. Using netcatThis can be performed by installing gnu-netcat on the target computer and using the following command: Then wait for the incoming traffic to appear in the nc terminal. Using ngrepInstall ngrep on the target computer and type the following command: Example of WoL scriptHere is a script that illustrates the use of wol with different machines: TroubleshootingNetworkManagerNetwork adapter is still powered off on shutdownSetting auto negotiation to yes may help if WOL is configured through nmcli and network adapter is still powered off on shutdown. Wake-up after shutdownIt is known that some motherboards are affected by a bug that can cause immediate or random wake-up after a shutdown whenever the BIOS WoL feature is enabled (as discussed in this thread for example). Fix using BIOS SettingsThe following actions in the BIOS preferences can solve this issue with some motherboards:
Fix by Kernel quirksThe issue can also be solved by adding the following kernel boot parameter: xhci_hcd.quirks=270336 This activates the following quirks: Battery draining problemSome laptops have a battery draining problem after shutdown [1]. This might be caused by enabled WOL. To solve this problem, disable it by using ethtool as mentioned above. RealtekUsers with Realtek 8168 8169 8101 8111(C) based NICs (cards / and on-board) may notice a problem where the NIC seems to be disabled on boot and has no Link light. See Network configuration/Ethernet#Realtek no link / WOL problem. If the link light on the network switch is enabled when the computer is turned off but wake on LAN is still not working, booting the system using the r8168 kernel module at least once and then switching back to the r8169 kernel module included with the kernel seems to fix it at least in the following configurations:
For the r8168 module you might need to set the s5wol=1 module option to enable the wake on LAN functionality. alx driver supportFor some newer Atheros-based NICs (such as Atheros AR8161 and Killer E2500), WOL support has been disabled in the mainline alx module due to a bug causing unintentional wake-up (see this patch discussion). A patch can be applied (or installed as a dkms module) which both restores WOL support and fixes the underlying bug, as outlined in this thread. Источник |