Wake-on-LAN

Wake-on-LANは、コンピュータネットワークに繋がっているコンピュータの電源を遠隔で投入する技術あるいはその行為を指す。

1. 概要
-----

コンピュータネットワークに特定のパケットを送信させることにより、そのパケットの内容に該当するコンピュータが自ら電源を投入させる仕組みである。自明に、ネットワークの特性を生かしたコンピュータの電源操作が可能となる。

たとえば、次のような利点が考えられる。

遠隔地や、人間が立ち入ることが困難な場所にあるコンピュータの電源を投入することができる。
コンピュータプログラムが、他のコンピュータの電源を投入させることができる。
会社の営業所で数十台から数百台までのコンピュータが置かれている場合、従来の方法ではシステム管理者などが一台ずつ電源を投入しなければならず、台数や社屋が大きいほど非効率な作業となるが、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 に対応している必要がある。

2. マジックパケット
-----------

マジックパケットは、FF:FF:FF:FF:FF:FFに続けて起動したい装置のMACアドレスを16回繰り返したデータパターン がペイロードのどこかに含まれているようなパケットである。例えば、起動したい装置の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バイトの信号を認識して電源ステートが切り替えられ、装置の電源が入る。

最初の6バイトのFFはブロードキャストを表すあて先 MAC アドレスではない。Ethernet フレームの先頭からこのパターンを開始すると EtherType フィールドが本来の意味ではなくなってしまう。通常はポート 7 または 9 の UDP パケット、あるいは EtherType=0x0842 の Ethernet フレームのペイロードに埋め込まれる。

ターゲット機器はネットワークアダプタに通電こそされているものの、マジックパケットを待ち受けることしかしない状態であり、通常の IP や ARP に反応することはない。そのため、IPアドレスや MACアドレスでの到達性が保障されないため、マジックパケットは Ethernet ブロードキャストフレームとして送信されなければならない。

3. 問題点
------

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

3.1. ネットワーク構成
-------------

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

3.2. コンピュータ側の問題
---------------

Wake-on-LAN の利用には、コンピュータ本体がシャットダウンしていても、ネットワークカードに対して電源を供給し続ける必要がある。また、ネットワークカードがマジックパケットを認識した際の動作を、BIOS で設定しなければならない場合がある。これらの設定が不可能な場合、WOL による電源操作は利用できない。

とくに、ワイヤレスLANは接続の際にOS上での設定が必要なものが大半である為、PCの電源を切ったときにマジックパケットを受信できず、WOLによる電源操作が不可能なものが多い。この場合、ワイヤレスイーサネットコンバータ等を利用し、PCの電源状態に関わらずマジックパケットを受信させる必要がある。近年ではWake on Wireless LAN  という仕組みも登場し、対応機器ではワイヤレスLANによる電源操作が可能な場合もある。

4. 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でシェルスクリプトとリモートシェル、wolコマンドを組み合わせることで実現することができる。AppleのmacOS Serverには前述のUNIXにおけるメンテナンスを行う機能が搭載されている。

5. 脚注
-----

6. 関連項目
-------

LAN
ATX電源
マザーボード
Wake-on-Modem
Wake-on-Ring
Advanced Configuration and Power Interface
PME 

7. 外部リンク
--------

[1]