Wake-On-LAN (WOL) は LAN 経由あるいはインターネット経由でコンピュータの電源を投入する機能です。この記事は Arch Linux をインストールしたサーバーを Macbook Pro や Android スマホから起動できるようにした記録です。
前提条件
WOL を利用するにはマザーボードや NIC が WOL に対応しており、かつ、BIOS から WOL を有効に設定している必要があります。この設定方法はマザーボードによって異なりますので、PCI Power up, Allow PCI wake up event, Boot from PCI/PCI-E など WOL を連想させる名前の設定項目を探してください。
WoL の設定の確認
BIOS の設定に加えて Linux 上の設定も必要です。WOL の設定を確認するために ethtool
をインストールしてください。
# pacman -Syu ethtool
ethtool
を使って WOL の設定を確認します。Wake-on:
が d
になっている場合は WOL が無効、g
になっている場合は WOL が有効です。
# ethtool enp2s0
Settings for enp2s0:
...
Supports Wake-on: pumbg
Wake-on: d
...
ethtool
を使用して WOL の設定を変更できます。
# ethtool -s enp2s0 wol g
# ethtool enp2s0
Settings for enp2s0:
...
Supports Wake-on: pumbg
Wake-on: g
...
サーバーの設定
ethtool
による WOL の設定は再起動で効果を失います。設定を永続化するには以下のいずれかの設定が必要です。
netctl
ExecUpPost='/usr/bin/ethtool -s enp2s0 wol g'
systemctl
[Match]
MACAddress=00:00:00:00:00:00
[Link]
Name=enp2s0
WakeOnLan=magic
クライアントの設定
Mac OS X
HomeBrew を使用して wakeonlan
をインストールします。
# brew install wakeonlan
wakeonlan
コマンドの引数にサーバーの MAC アドレスを指定すると、Limited Broadcast Address (255.255.255.255) に対してマジックパケットを送信します。このマジックパケットがサーバーに届くと、サーバーの電源が起動します。
# wakeonlan 00:00:00:00:00:00
Android
適当な Android アプリをインストールしてください。私は Wake On Lan を使用しました。以下に設定値の例を示します。
Field | Value |
---|---|
Broadcast Address | 192.168.0.255 |
Host IP Address | 192.168.0.16 |
Port Number | 9 |
Mac Address | 00:00:00:00:00:00 |
Broadcast Address には Limited Broadcast Address (255.255.255.255) あるいは Directed Broadcast Address (e.g. 192.168.0.255) のいずれかを指定します。両者の違いについてはここでは触れません。ほとんどの環境ではどちらを指定しても正常に動作すると思います。
Host IP Address にはサーバーの IP アドレスを指定します。本来、WOL にはこの設定は不要なはずですが、アプリに依っては起動に成功したかを確認するために設定が必要な場合があります。
Port Number は WOL のマジックパケットを送信するポート番号です。通常は UDP の 7 番ポート (Echo Protocol) あるいは 9 番ポート (Discard Protocol) を使用します。
Mac Address は対象のサーバーの MAC アドレスです。