Wake On LAN を試してみる
REPORT
Wake On LAN
Wake On LAN (WOL) とは、LAN を利用して遠隔から PC の電源を ON にする機能です。
実際にこれの恩恵に授かって活用している人はいるのかいないのか判らないですけど、複数の PC を所持していたとしても個人的には興味がありつつも実際に利用する機会にはなかなかなかったのでした。
他にも WOL に対応したマザーボードと LAN アダプタがないと出来ないのですけど、今となっては当たり前にサポートされているのかいないのか、昔は書いてあった WOL 対応の文字もあまり見ないような気がする状況です。もっともこれは、最近はオンボードの LAN が主流になってきて、アダプタ自体を購入する機会さえ減ったからかもしれないのですけど。
とはいえ何年か前に一度、WOL を試してみたことがあったのでした。
仕事の都合でハウジングセンターに PC を配置することになったときに、たまたま Windows 2000 Server の Terminal Service から再起動をかけると PC が起動せずに停止してしまうという問題があって、遠隔からの電源 ON を余儀なくされたころです。
でもいろいろ調べたりして実際にソフトを使って起動を試みたりしたのですけど、完全に停止しているのではなく半端にハングアップでもしているのかなんなのか、思ったように動かなくて困ってしまったのでした。
その後しばらくして、Windows 2000 Service Pack 1 だったか 2 だったかでこのバグが修正され、そのまま忘れられてしまったのでした。
そして今回、自宅の PC にて改めて WOL を試してみようという運びになりました。
今まではこのサイトを作成するのに Networld 社が販売している VMware Workstation を使用していたのですけど、このたび別の用途で使用していた PC をそれに回すようにしようと思うのでした。その PC は普段は電源を OFF にした状態なので、使用するときにメイン PC から電源を ON することが出来たら些細なことですけど便利そう。
そう思って実験開始です。
Wake On LAN の仕組み
WOL は、それに対応している PC の LAN アダプタに対して AMD が提唱する MagicPacket と呼ばれるデータを送信すると、その PC に電源が入るというもののようです。
電源が入っていない PC がパケットを受け取って起動するわけですから、それが出来る程度の待機電力が通っている必要がありますし、また受け取って電源を入れる処理を行うのですから、LAN アダプタとマザーボードの両方でそういった連携が取れるようになっている必要があります。
仕組み的には次の物があるようです。
- オンボード LAN アダプタを用いてのもの
- LAN アダプタと WOL 用の 5V スタンバイ電源とを WOL コネクタで接続したもの [5vWOL]
- LAN アダプタと PCI Rev2.2 インターフェイスの 3.3V スタンバイ電源を利用したもの [3.3vWOL]
起動していない PC の LAN アダプタを見分けるには、LAN アダプタそれぞれに割り当てられている MAC アドレス (Media Access Control Address) (Physical Address) と言うものを使用します。この MAC アドレス宛に MagicPacket を送信してあげることで、目的の PC を起動することができます。
またこの MagicPacket とは何かですけど、これは 「頭に 6 つの 0xFF を並べ、続いて MAC アドレス 6 桁の並びを 16 回繰り返したデータ」 だそうです。
これを TCP/IP のブロードキャスト宛に送信すれば、該当する PC へパケットが届いて起動するということになるようでした。プロトコルはとりあえず UDP のようですけど、送信先ポートは 2034 なのか 7 なのか少し曖昧でした。調べた限りではどうやら、あて先ポート番号は任意であるとの感じでもありました。
環境を整える
今のものは良くわからないのですけど、少なくとも昔は、WOL 対応の LAN アダプタには細いケーブルが付いてきて、それをつかってマザーボードの WOL コネクタと LAN アダプタとを繋いであげる感じでした。
そして、場合によってはマザーボードの BIOS 設定で WOL を有効 (Enable) に設定します。
ただし今回は、マザーボードとして AOpen 社の MX4BS というマザーボードを利用しています。LAN もオンボードですし WOL にも対応していそうな感じなので、少なくとも接続周りについては何もしない感じになりました。
なのでまずは BIOS 周りの設定を確認してみたのですけど、"Power Management Setup" の項目には "Wake-Up by PCI card" という項目こそあったのですけど、WOL を直接的に示すような物は存在しませんでした。この選択肢はおそらく、上で言うところの 3.3vWOL のことを言っているのでしょう。オンボード関連の記載がないのは、それが既に可能な状態になっているのかどうか判りませんけど、とりあえず BIOS 設定の方はこれで良しとしておきます。
続いて OS 側の設定を確認です。基本的に OS は WOL に関係しないと思うのですけど、LAN アダプタの設定をみると WOL に関連しそうな設定が可能になっているのでした。
ネットワークアダプタの "構成" 情報を参照すると、「詳細設定」 タブには "Wake on 設定" という項目があって、そこでいくつかの方式を選択できるようです。基本的には "Magic Packet" と "Directed Packet" の 2 通り。これをどちらかにするか、両方にするか、それとも受け付けないかを設定することが出来るようなのでした。
Magic Packet は今回行おうとしている WOL の方式であって、これは AMD 社が提唱しているものだそうです。そしてもう一つの Directed Packet というものは Microsoft 社が提唱している方式のようでした。
Magic Packet は初期のもので OS に関係なくハードウェア的に電源を入れることが目的のようです。そして Directed Packet の方は、ACPI という方式によりスタンバイ状態などのさまざまな状況を OS が管理できるようになったのを受けてか、Wake on 処理も OS によって制御できるような仕組みになっているのだそうです。
この Directed Packet 方式は一般に、"リモート ウェイクアップ" と呼ばれるようです。ACPI 周りの OS 機能に依存するためか、この方式では完全なる電源断からの起動はサポートされていないとのことです。ですのでスタンバイ状態などで停止させておく場合にはこのリモートウェイクアップを利用し、完全なる電源ダウンからの起動には Magic Packet による方式を利用するということになりそうですね。
ともあれ今回はスタンバイまでは興味がないので、特に OS 側で設定する必要はなさそうでした。
こんな感じでひと通り確認してみましたけど、今回は特には設定を調整する必要はなさそうでした。なのであとは起動時に必要となる MAC アドレスだけを調べておけば良さそうです。
Mac アドレスの調べ方は、コマンドプロンプトや DOS プロンプトを起動して、コマンドラインから "ipconfig /all" と入力してあげれば確認することが出来ます。たくさん表示されたデータのうち、"Physical Address" という欄の情報がそれに当たります。
ここではたとえば "00-0A-01-A0-10-B0" というのが取得できたものとして、以下のお話を進めていこうと思います。
起動してみる
さっそく遠隔から WOL にて PC を起動させてみようと思うのですけど、それを行うためには Magic Packet を送信するためのソフトウェアが必要となります。
Vector:ソフトウェア・ライブラリ&PCショップ さまで探してみたところ MagicBoot というフリーソフトウェアが見つかりましたので、今回はこれをインストールして利用してみることにしました。
MagicBoot ソフトの [追加] ボタンを押して、起動したい PC の情報を入力します。
"PC NAME" の部分には何でも良さそうですけどその PC の名前なりを入力して、"GROUP" には任意のグループ名を指定します。グループ起動を考えていなければ特にこだわらなくても良さそうです。
"PORT NO." は、Magic Packet の送信先ポート番号ですけど、下調べの限りではポート番号は何でも良いはずです。インターネット越しで利用するのでなければ特に変更せず 3708 でも大丈夫でしょう。
"IP ADDR" の部分には、Magic Packet を送信したい PC に届くようなブロードキャストアドレスを指定します。たとえば 192.168.0.100/255.255.255.0 などのネットワークだった場合は 192.168.0.255 を指定することとなります。
そして "MAC ADDR" の部分は起動したい PC の MAC アドレスです。今回はたとえば "00-0A-01-A0-10-B0" だったとして、それを入力することとなります。
あとは今登録したものにチェックを入れて [起動] ボタンを押せば、その PC に電源が入ってくれるはず。
ボタンを押してみると Windows XP Service Pack 2 の Windows ファイアウォール機能が働いてダイアログがポップしたためいっしゅん何事かと思ったのですけど、パケットを送信したからなのでしょう。ダイアログの情報を見る限り "受信をブロックした" ということのようなので、ブロードキャストで届いたパケットに反応したのかと思われます。
とりあえず危険でないことはおそらく間違いないので、「ブロックを解除する」 を選択しておきました。
さてこれで電源が入ってくれるはずだったのですけど、どうも上手く行かないようです。
もういちど起動ボタンを押してみるも、やはり反応しないようでした。同一ネットワーク上にある PC ですし、自身のコンピュータにてファイアーウォールが反応した辺りから、ブロードキャストアドレスの指定はきっと間違いないでしょう…。
MAC アドレスを入力し間違えたのかと思って確認してみたところ、MAC アドレスはあっていたのですけど、ブロードキャストアドレスがぜんぜん違っていることが判明しました。そういえばだいぶ前ですけど IP アドレスの設定を大幅に変えたことがあったのをすっかり忘れておりました。
しかしながら目的の PC を停止させ、ブロードキャストアドレスを書き直して [起動] ボタンを押してみましたが、それでも相変わらず起動してくれそうな様子は伺えなかったのでした。
これはマザーボードが WOL に対応していないということなのでしょうか。とりあえずもう一度、ざっと BIOS 設定を眺めてみましたけどそれらしい項目は見つかりませんでした。
それでもとりあえず "Wake-Up by PCI card" を Enabled にしてみてやってみると、なんとパケットを送信するや否や、見事 PC が起動してくれたのでした。当然ながらわざと MAC アドレスを間違えたり、ブロードキャストアドレスを間違えたりしてみれば起動しないですし、どうやら上手くいった様子でした。
Windows Server 系 OS ならば、起動してしまえばあとはリモートデスクトップでいろいろ自由が利きますから、もう少し環境を整備すれば、いろいろと融通が利くかもしれないですね。