0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WOL起動の設定 debian12

Posted at

■環境

$ grep _NAME /etc/*release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"

■WOL起動できる設定になっているか確認

$ dpkg -l ethtool | grep ^ii || sudo apt-get install -y ethtool
$ ls /sys/class/net/ | awk '{print "ethtool "$0}' | sudo sh | grep "^[A-Za-z0-9]\|Wa"
Settings for br0:
Settings for br1:
Settings for docker0:
Settings for enp2s0:
        Supports Wake-on: pumbg
        Wake-on: g
Settings for enx00e04c6867c2:
        Supports Wake-on: pumbg
        Wake-on: g
Settings for lo:
Settings for virbr0:

■無効化(Disable)と有効化(MagicPacket)

$ man ethtool | lsec -sep "^\$" Wake on

                  p   Wake on PHY activity
                  u   Wake on unicast messages
                  m   Wake on multicast messages
                  b   Wake on broadcast messages
                  a   Wake on ARP
                  g   Wake on MagicPacket™
                  s   Enable SecureOn™ password for MagicPacket™
                  f   Wake on filter(s)
                  d   Disable (wake on nothing).  This option clears all  previous
                      options.

■有効にするなら、 d を gに変更、無効ならその逆

$ sudo ethtool -s enx00e04c6867c2 wol d
$ sudo ethtool enx00e04c6867c2 | grep Wa
        Supports Wake-on: pumbg
        Wake-on: d
$ sudo ethtool -s enx00e04c6867c2 wol g
$ sudo ethtool enx00e04c6867c2 | grep Wa
        Supports Wake-on: pumbg
        Wake-on: g

■2つめのawk文はマスク用、マジックパケットを投げる先となる物理NICのMACアドレスを調べておく

$ ls /sys/class/net/ | awk '{print "ip a s "$0}' | sudo sh | \
  awk '{if($1 ~ /^[0-9]/){gsub(":","",$2);printf "%s,",$2}else{if($1 ~ /link.ether/){print $2}}}' | \
  awk '{gsub("[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]$","XX:XX:XX",$0);print $0}'
br0,f2:78:c4:XX:XX:XX
br1,f2:0a:5b:XX:XX:XX
docker0,02:42:2f:XX:XX:XX
enp2s0,00:16:96:XX:XX:XX
enx00e04c6867c2,00:e0:4c:XX:XX:XX
lo,virbr0,52:54:00:XX:XX:XX

■WOLで起こす側(WOLクライアント)の確認

$ dpkg -l wakeonlan | grep ^ii || sudo apt-get install wakeonlan
$ wakeonlan 00:16:96:XX:XX:XX
Sending magic packet to 255.255.255.255:9 with 00:16:96:XX:XX:XX

■WOLで起動するか試す前に、パケットキャプチャして届いていることを確認する
マジックパケットは、ff:ff:ff:ff:ff:ffに続けて、
起動したい装置のMACアドレスを16回繰り返したデータパターン(AMD Magic Packet Format) が
ペイロードに含まれているパケット
「YYYY YYYY」はマジックパケットを送信したIP
「ffff ffff」はブロードキャストの宛先IP(のはず)
「d4e3」は「54499」送信元ポート番号
「0009」は宛先wolポート番号

$ dpkg -l tcpdump | grep ^ii || sudo apt-get install -y tcpdump
$ sudo tcpdump -X -vvv -i enp2s0 -n  '(proto 0x0842 or udp port 9) and src [client-ip] '
tcpdump: listening on enp2s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
23:01:14.157395 IP (tos 0x0, ttl 64, id 8124, offset 0, flags [DF], proto UDP (17), length 130)
    [client-ip].54499 > 255.255.255.255.9: [udp sum ok] UDP, length 102
	0x0000:  4500 0082 1fbc 4000 4011 4f34 YYYY YYYY  E.....@.@.O4...\
	0x0010:  ffff ffff d4e3 0009 006e 01bd ffff ffff  .........n......
	0x0020:  ffff 0016 96XX XXXX 0016 96XX XXXX 0016  ......>.....>...
	0x0030:  96XX XXXX 0016 96XX XXXX 0016 96XX XXXX  ..>.....>.....>.
	0x0040:  0016 96XX XXXX 0016 96XX XXXX 0016 96XX  ....>.....>.....
	0x0050:  XXXX 0016 96XX XXXX 0016 96XX XXXX 0016  >.....>.....>...
	0x0060:  96XX XXXX 0016 96XX XXXX 0016 96XX XXXX  ..>.....>.....>.
	0x0070:  0016 96XX XXXX 0016 96XX XXXX 0016 96XX  ....>.....>.....
	0x0080:  XXXX                                     >.

■「ffff ffff」はブロードキャストの宛先IP(のはず)としたのは、
「あて先 MAC アドレスではない」らしいという謎の記述があり、ちょっと何のことだかわからなかったため

https://ja.wikipedia.org/wiki/Wake-on-LAN

■一応、ふつうのpingで宛先IPになることを確認した上で、
同位置にブロードキャストの宛先IPの16進数が入るということは確認した

 $ ping -b 255.255.255.255
23:31:16.009130 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    172.31.31.92 > 255.255.255.255: ICMP echo request, id 9719, seq 2, length 64
	0x0000:  4500 0054 0000 4000 4001 6f2e YYYY YYYY  E..T..@.@.o....\
	0x0010:  ffff ffff 0800 a8f3 25f7 0002 b4b2 e667  ........%......g
	0x0020:  0000 0000 cf25 0000 0000 0000 1011 1213  .....%..........
	0x0030:  1415 1617 1819 1a1b 1c1d 1e1f 2021 2223  .............!"#
	0x0040:  2425 2627 2829 2a2b 2c2d 2e2f 3031 3233  $%&'()*+,-./0123
	0x0050:  3435 3637                                4567

■パケットが届いているのに起動しないなら、BIOSでWOLが無効になっていないか確認する

■WOL起動することを確認したら、再起動後も反映する設定を入れる
 interface でも nmcli でも「rc.local」に直接指示するでも、手動で実行しなくても良い方法で動けば良い

$ grep -B 1 -A 1 "inet manual" /etc/network/interfaces.d/br0 
auto enp2s0
iface enp2s0 inet manual
        ethernet-wol g
$ nmcli con show | awk '!/br|docker|lo|vnet/'
NAME                UUID                                  TYPE      DEVICE  
Wired connection 1  797521d2-3bb9-4ff4-9a0c-5eae29844446  ethernet  --    
$ nmcli con show "Wired connection 1" | grep wake-on-lan
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
$ sudo nmcli c modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
$ nmcli con show "Wired connection 1" | grep wake-on-lan
802-3-ethernet.wake-on-lan:             magic
802-3-ethernet.wake-on-lan-password:    --

$ cat /etc/rc.local
#!/bin/bash
ethtool -s enp2s0 wol g
exit 0
$ sudo chmod +x /etc/rc.local
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?