Wake-on-LAN

Wake-on-LAN（ウェイク・オン・ラン、略称WoLあるいはWOL）は、コンピュータネットワーク（主にLAN）に繋がっているコンピュータの電源を遠隔で投入する技術あるいはその行為を指す。

**概要**
コンピュータネットワークに特定のパケットを送信させることにより、そのパケットの内容に該当するコンピュータが自ら電源を投入させる仕組みである。自明に、ネットワークの特性を生かしたコンピュータの電源操作が可能となる。
たとえば、次のような利点が考えられる。
*遠隔地や、人間が立ち入ることが困難な場所（危険な場所、狭小な場所、高所など）にあるコンピュータの電源を投入することができる。
*コンピュータプログラムが、他のコンピュータの電源を投入させることができる（人力を介さずに電源投入できる）。
*会社の営業所で数十台から数百台までのコンピュータが置かれている場合、従来の方法ではシステム管理者などが一台ずつ電源を投入しなければならず、台数や社屋が大きいほど非効率な作業となるが、Wake On LAN を利用した電源操作では、該当コンピュータを対象にしたマジックパケットをネットワークに送信することにより、複数台のコンピュータを一斉に電源投入できる。
Wake On LAN を利用するには マザーボード、ネットワークカード、BIOS、オペレーティングシステムなどが Wake On LAN に対応している必要がある。また、制御に用いるパケット（マジックパケット）にブロードキャスト送信を利用することから、異なるサブネットへの利用には構成の考慮が必要である。また、外部からの利用にはパブリックIPアドレスやDNSドメインの取得が必要になる。
Wake On Lan には「ハードウェア Wake On Lan」と「ソフトウェア Wake On Lan」が存在し、各々異なる状況で有効である。ハードウェア Wake On Lan はコンピュータの電源が完全に切れている時に起動させる方法で、ソフトウェア Wake On Lan はコンピュータに電源が入っているがスリープや休止状態となっている時に復帰させるための方法である。従って、コンピュータがどの状態にあってもコンピュータを起動させるためには、ハードウェアとソフトウェアの両方が Wake On Lan に対応している必要がある。

**マジックパケット**
マジックパケットは、FF:FF:FF:FF:FF:FFに続けて起動したい装置のMACアドレスを16回繰り返したデータパターン(AMD Magic Packet Format) がペイロードのどこかに含まれているようなパケットである。例えば、起動したい装置のMACアドレスが EE:EE:EE:00:00:01 の場合、
FF:FF:FF:FF:FF:FF EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01
EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01
EE:EE:EE:00:00:01 EE:EE:EE:00:00:01 EE:EE:EE:00:00:01
このような102バイトの信号が含まれるパケットが送られ、ターゲット機器にそのパケットが届くと、102バイトの信号を認識して電源ステート（例えば ACPI S ステート）が切り替えられ、装置の電源が入る。
最初の6バイトのFFはブロードキャストを表すあて先 MAC アドレスではない。Ethernet フレームの先頭からこのパターンを開始すると EtherType フィールドが本来の意味ではなくなってしまう。通常はポート 7 または 9 の UDP パケット、あるいは EtherType=0x0842 の Ethernet フレームのペイロードに埋め込まれる。
ターゲット機器はネットワークアダプタに通電こそされているものの、マジックパケットを待ち受けることしかしない状態であり、通常の IP や ARP に反応することはない。そのため、IPアドレスや MACアドレスでの到達性が保障されないため、マジックパケットは Ethernet ブロードキャストフレームとして送信されなければならない。

**問題点**
Wake On LAN を利用には、いくつか問題点が存在している。

**ネットワーク構成**
マジックパケットは通常ブロードキャストとして送信される。ブロードキャスト送信では、送信する機器と受信する機器は同じブロードキャストドメインに所属しなければならないため、ルータを超えることはできない。Subnet directed broadcast送信を行う方法もあるが 、ルータは通常これを許さない設定になっていることが多い。従って、サブネットの異なる装置の電源操作に、通常 WOL は使用できない。

**コンピュータ側の問題**
Wake-on-LAN の利用には、コンピュータ本体がシャットダウンしていても、ネットワークカードに対して電源を供給し続ける必要がある。また、ネットワークカードがマジックパケットを認識した際の動作を、BIOS で設定しなければならない場合がある。これらの設定が不可能な場合、WOL による電源操作は利用できない（これらは電源操作を受ける側の設定であり、マジックパケットを送信する側には不要）。
とくに、ワイヤレスLANは接続の際にOS上での設定が必要なものが大半である為、PCの電源を切ったときにマジックパケットを受信できず、WOLによる電源操作が不可能なものが多い。この場合、ワイヤレスイーサネットコンバータ（ブリッジ）等を利用し、PCの電源状態に関わらずマジックパケットを受信させる必要がある。近年ではWake on Wireless LAN (WoWLAN) という仕組みも登場し、対応機器ではワイヤレスLANによる電源操作が可能な場合もある。

**Wake On LANの利用**
マジックパケットを送信し、目標のPCを起動させ、Secure Shellを使ってそのPCに保存したファイルをネットワーク越しに取り出したり、VNCやWindowsのリモートデスクトップなどを利用してGUIそのものを遠隔操作することが出来る。
システム管理者にとってはメンテナンスなど、時間やコストの削減となるため重宝される。複数のPCを同時に使う必要のある研究室などで、一人で複数台のPCを操作する場合、KVMスイッチで三台の本体に対して一組のモニタ、キーボード、マウスで操作する方法が採られることがあるが、環境によってはWOLで電源を操作し、VNCで様々な操作をすることで作業効率をあげる手段になりうる。
ブロードキャストドメイン単位に管理コンピュータを設置し、そこから起動対象となるコンピュータを一斉起動し、装置のメンテナンスを自動的に実行するソリューションがある。その一例として、Microsoft Systems Management Serverがある。管理コンピューターにエージェントをインストールしておき、Systems Management Serverからメンテナンススクリプトを起動すると、エージェントは管理対象のコンピュータを順次起動し、Microsoft Updateやシステム設定の変更等を実施し、最後にシャットダウンを行う。System Management Serverは管理対象に企業や学校といった大規模設備を想定しているシステムであるが、同様のことはUNIXでシェルスクリプトとリモートシェル（SSH等）、wolコマンドを組み合わせることで実現することができる。

**Mac**
最新のMacは、コンピュータがスリープ状態の場合にWoL機能をサポートしているが、後述のLights Out Management機能を搭載した機種を除いて電源オフ状態から起動させることはできない。
Mac OS X Snow Leopard以降では、Wake on demandと呼ばれるWoLをサポートしている。MacBookシリーズでは、この機能は「オプション」ポップアップウインドウの「macOS システム設定」「バッテリー」パネルの電源アダプタ項目、もしくは「エネルギー」パネルで、「ネットワークアクセスによるスリープ解除」項目で許可するか設定できる。デスクトップ機では、この機能はシステム設定の「省エネ」もしくは「エネルギー」パネルで制御できる。pmset womp（wake on magic packet）コマンドを使用することも可能である。
Apple Remote Desktopでは、Wake-on-LANパケットの送信ができる。Apple AirMacベースステーションと Apple TVではBonjour Sleep Proxyと呼ばれる機能で、LAN上の他のマシンがホストの共有リソースにアクセスすると、WoLパケットをホストに送信できる。
Xserveと10Gb Ethernetを搭載したAppleシリコンのMacにはLights Out Management機能、macOS/macOS Serverにはそれを扱う機能が搭載されている。

**脚注**

**関連項目**
LAN
*ATX電源
*マザーボード
*Wake-on-Modem
*Wake-on-Ring
*Advanced Configuration and Power Interface(ACPI)
*PME (Power Management Events)

**外部リンク**
  Wake On LANでコンピュータを起動する － ＠IT