🐳

Wake-on-LAN(WoL)を使ってみよう!

2024/10/30に公開

はじめに

Wake-on-LAN(以下WoL)と聞いてピンとくる方もいると思いますが、私自身もWoLというものがどんなものか知らず、業務で使う場面があったので色々と調べながら知識を深めていきました。また、WoLを使用する際の注意点も何点かあるので、こちらの記事で共有できればと思います!

Wake-on-LAN(WoL)とは?

まず初めにWoLについてですが、WoLとは「LANに接続されたPCの電源を別のPCから遠隔でONにする仕組み」を指します。この機能を使えるようにすることで、遠隔地から会社のPCを起動させることができるなどとても便利です。

WoLの仕組み

仕組みもとてもシンプルで、上記の画像のように「マジックパケット」と呼ばれるネットワークパケットを起動させたいPCに送信することで遠隔地からPCを起動させることが出来ます。

私は初め、「なぜこのマジックパケットを送るだけで、PCを起動させることができるのか?」と疑問に思っていました。
ただ、調べていくと、マジックパケットはブロードキャストとしてネットワーク上に送信され、ネットワークアダプタがこれを受信すると、そのパケット内のMACアドレスが自身のPCのMACアドレスと一致するかどうかを確認します。もし、一致していたらコンピュータに対して起動信号を送るという処理になっていて納得がいきました!

WoLの種類

WoLの中でも実は2種類存在していて、「ハードウェアWoL」と「ソフトウェアWoL」があります。

  • ハードウェアWoL
    ネットワークコントローラーのマジックパケット検出機能を使い、S5(電源オフ)からの復帰を行う機能で、設定はUEFIの設定メニューから行います。
  • ソフトウェアWoL
    Windows 10が行うWoLで、S3(スリープ)もしくはS4(休止状態)からの復帰が可能です。シャットダウン状態に対しては動作せず、設定はデバイスドライバのプロパティから行います。

・ソフトウェアWoLとハードウェアWoLの違い

方式 ソフトウェアWoL ハードウェアWoL
S3(スリープ)から復帰
S4(休止状態)から復帰
S4(ハイブリッドシャットダウン)から復帰
S5(クラシックシャットダウン)から復帰
対象ネットワークアダプター 内蔵/外付け 内蔵のみ
概要 Windows10が制御するWoL ハードウェア機能として実装されるWoL

・参考記事
https://atmarkit.itmedia.co.jp/ait/articles/2004/20/news021.html

WoLの利用手順

WoLによるPCの遠隔起動を行うためには、「起動される側のPCの設定」、「起動する側のPCの設定」の両方が必要となります。

「起動される側のPCの設定」

BIOS/UEFIの設定

1.BIOS/UEFIメニューを表示する

PCの電源を入れた直後にF2キーやdeleteキーを連打するとBIOS/UEFIメニューを表示できます。
※メーカーによって押すキーは異なります。
・参考記事
https://ishi-pc.net/colum/bios/#:~:text=①パソコンを再起動します ②キーボードの「F2」もしくは「Delete」を連打し、BIOS画面を出します,※メーカー、機種によってキーが異なる場合があります。 ③以上でBIOSの画面が出てきます

2.BIOS/UEFIメニューからWoLの有効化設定を行う

BIOS/UEFIメニューで以下の項目を「有効」にしてください。

  • ACPI (Advanced Configuration and Power Interface)
  • APM (Advanced Power Management)
  • APM Configuration
  • Power Management
  • PME Event Wake Up
  • PM Wake Up Event
  • Remote Wakeup
  • Remote Power On
  • Auto Power On
  • Wake-up on LAN
  • Wake Up Event Setup
  • Wake on LAN from S4/S5
  • Wake on PME
  • Power On By PCI/PCIE Devices
  • Power on by PCI devices
  • Power on by PCIE devices
  • Power on by PME
  • PCIPME Power On Control
  • Resume By PCI Device
  • Resume By PCI-E Device
  • PCIEによる電源ON

3.BIOS/UEFIメニューから節電モード/省エネモードの無効化設定を行う

節電モードや省エネモードになっているとネットワークアダプタに電力が共有されなくなることがあるので、以下の項目を「Enable」⇒「Disable」に変更してください。

  • Deep Sleep
  • Deep Sleep Control
  • ErP
  • ErP Ready
  • S5最大省電力 (HP)

Windowsネットワークアダプタの設定

1.ネットワークアダプタのプロパティ画面を開く

以下の手順でネットワークアダプタのプロパティ画面(詳細設定)を開いてください。
1.1 スタートメニューを右クリックする。
1.2 コンピュータの管理を選択する。
1.3 デバイスマネージャーを選択する。
1.4 ネットワークアダプタの欄からWoLパケットを受信するアダプタをダブルクリックする。
1.5 プロパティ画面の詳細設定タブを押す。

2.プロパティ画面の詳細設定タブでの設定

ネットワークアダプタのプロパティ画面(詳細設定)で以下のようなWoLに関する項目を「有効」にする。

  • Wake on LAN
  • Remote Wakeup
  • Wake Up Capabilities
  • Wake-On-Lan機能
  • Wake-on-LAN after shutdown
  • ウェークアップ機能
  • Enable PME
  • PME をオンにする
  • Wake on Magic Packet (ウェイク・オン・マジック・パケット)
  • Wake on Magic packet from power off state
  • Shutdown wake up (シャットダウン ウェークアップ)
  • シャットダウンからのウェイクアップ
  • LAN 上のウェークアップのシャットダウン

「Intel Wi-Fi 6E AX211」の例

その他の設定や確認事項

1.「高速スタートアップ」を無効にする

以下の手順で「高速スタートアップ」を無効にしてください。
1.1 左下のスタートメニューから「Windows システムツール」を選択し、そこに含まれる「コントロールパネル」を開く。
1.2 「システムとセキュリティ」を選択する。
1.3 「電源オプション」を選択する。
1.4 「電源ボタンの動作を選択する」を押す。
1.5 「現在利用可能ではない設定を変更します」を選択する。
1.6 「高速スタートアップを有効にする(推奨)」のチェックを外す。
1.7 「変更の保存」をクリックする。

2.PCを遠隔起動できる範囲について

マジックパケットはイーサネットのブロードキャストフレームとして送信されるため、同一ブロードキャストドメイン内にあるPCに対してのみ有効です。これは、ルーターを越えることができず、異なるネットワークセグメントやインターネットから直接送信することができないためです。インターネットから遠隔で起動させるためには、VPNなどを利用し同一LAN内にアクセスする必要があります。

・関連記事
https://www.asus.com/jp/support/faq/1052870/

「起動する側のPCの設定」

マジックパケットを送りPCを遠隔起動させる方法として、ツール(nWOL)を用いて送信する方法とソースコードで送信する方法の2パターンがあります。

1.ツール(nWOL)でマジックパケットを送信し起動させる方法

1つ目はnWOLを用いてマジックパケットを送信する方法について解説します。
nWOLは、UI上で遠隔起動の操作やPCの起動状態の確認ができ、とてもシンプルでわかりやすいツールです。(実際の画面はこんな感じです↓)

nWOLのダウンロードとインストール方法

1.1 nWOLホームページからダウンロードする。
※32bit版、64bit版のインストーラがあるので、対応している方を選択する。
1.2 ダウンロードしたインストーラを実行する。
※「WindowsによってPCが保護されました」というポップアップが表示される場合がありますが、「詳細」→「実行」とすることで、インストールを実行できる。

nWOLの操作手順について

1.1 「スタートメニュー」からnWOLを開く。
1.2 上記1枚目の画像の「Scan」ボタンを押す。
※LANに接続されている全ての起動中のホストが自動的に検索され、ホスト一覧に追加される。
1.3 起動したいホスト名が一覧にあるかどうかを確認する。
※ホスト名を設定していないと「Unknown」になっているので、その場合はMACアドレスとIPアドレスをみて、起動したいPCのものと一致しているか確認すること。
1.4 「OK」ボタンを押し、上記2枚目の画像の画面を開く。
1.5 起動させたいPCの項目において、状態がOffになっており「電源マーク」を押せることを確認する。

1.6 「電源マーク」を押し、遠隔起動させたいPCが起動していることを確認する。
※1.5でも触れましたが、pingの応答でPCのOn/Offを判別しているため、ツール上のOn/Off状態は実際のPCが起動してからPingの応答があるまでギャップがある。

他にもオプションとして設定できるもの(Pingの送信間隔、タスクトレイ設定など)がありますので、詳しくはnWOLマニュアルをご覧ください。

2.ソースコードでマジックパケットを送信し起動させる方法

2つ目は自作のスクリプトを作成し、マジックパケットを送信することもできます。
例として、WoL用のライブラリがありシンプルなpythonでの実装を紹介します。

pythonでの実装

1.必要なライブラリをインストールする

以下のコマンドを使って、wakeonlanとnetaddrをインストールしてください。

pip install wakeonlan
pip install netaddr

2.pythonファイルを作成する

WoL.pyなど任意の名前で以下の内容を含むpythonファイルを作成してください。
※「mac_address」と「interface_ip」にはそれぞれ起動したいデバイスのMACアドレス、送信元のパケット送信に使うインターフェースのIPアドレスを入れてください。

from wakeonlan import send_magic_packet
from netaddr import IPAddress, EUI, AddrFormatError

def wake_on_lan(mac_address: str, interface_ip: str) -> bool:
    try:
        mac = EUI(mac_address)
    except AddrFormatError as afe:
        print("MACアドレスのフォーマットが異なります: {}".format(mac_address))
        print("例外メッセージ: {}".format(afe))
        return False

    try:
        ip = IPAddress(interface_ip)
    except AddrFormatError as afe:
        print("IPアドレスのフォーマットが異なります: {}".format(interface_ip))
        print("例外メッセージ: {}".format(afe))
        return False

    send_magic_packet(str(mac), interface=str(ip))
    print("[WoL]MAC: {}/NIC: {}".format(str(mac), str(ip)))
    return True

if __name__ == "__main__":
    # ここに実際のMACアドレスとインターフェースIPアドレスを入力してください
    mac_address = 'xx:xx:xx:xx:xx:xx'
    interface_ip = 'xx.xx.xx.xx'
    
    result = wake_on_lan(mac_address, interface_ip)
    if result:
        print("マジックパケットの送信に成功しました。")
    else:
        print("マジックパケットの送信に失敗しました。")

3.pythonファイルを実行する

以下のコマンドで作成したWoL用のpythonファイルを実行してください。

python WoL.py

4.結果を確認する

  • 成功パターン
    MACアドレスとインターフェースIPアドレスが正しい形式で、マジックパケットが送信された場合は下記のように出力されます。
    同時に本体のPCも起動しているかどうかを確認してください。
[WoL]MAC:xx:xx:xx:xx:xx:xx/NIC:xx.xx.xx.xx
マジックパケットの送信に成功しました。
  • 失敗パターン
    MACアドレスやインターフェースIPアドレスの形式が不正な場合は下記のように出力されます。
#例:16進数以外の文字が含まれている
MACアドレスのフォーマットが異なります: 00:G1:2B:3C:4D:5E
例外メッセージ: Invalid Mac address
マジックパケットの送信に失敗しました。

#例:IPv4のルールである、IPアドレスの各オクテットが0から255の範囲内でない
IPアドレスのフォーマットが異なります:300.168.1.25
例外メッセージ: Octet 300 (> 255) not permitted in '300.168.1.25'
マジックパケットの送信に失敗しました。

まとめ

本記事ではWoLについての概要や注意点、利用手順などを解説してきました。設定には多少の手間がかかるかもしれませんが、一度使えるようになると、アプリと連携させて複数のPCを簡単に管理し、それぞれをボタン一つで遠隔起動できるようになるなどとても便利な機能です。みなさんの業務やプライベートなどで利用する際の参考になれば幸いです。

ヘッドウォータース

Discussion