実際にWOLを用いた電源投入操作を試してみよう。
■マジック・パケット送信用のソフトウェア
WOLを利用するには、マジック・パケットを送信する機能を持つソフトウェアが必要になる。今回は、2種類のフリーソフトウェアを試してみた。選択に際しては、ライセンス条項において企業における利用が制約されていないことを条件としている。また、同時に複数のMACアドレス情報を登録しておいて、個別、あるいは一斉にマジック・パケットを送信できるものを選んだ。
●MagicSend
まずex-groupが提供している「MagicSend」を紹介する。以下のWebページからインストール・パッケージのダウンロードが可能だ。Visual C++ 6.0によるソース・コードも公開されているので、自社の管理ツールに組み込むといったことも可能だろう。
MagicSendでは、[編集]−[新規登録]メニューで表示されるダイアログで、コンピュータ名とMACアドレスを入力して登録を行う。登録した内容は、プログラム本体と同じフォルダに「MagicSend.dat」という名前のファイルで保存される。
登録した内容は画面の一覧に現れるようになっており、[編集]メニューの[編集]による修正、あるいは[削除]による登録済みMACアドレスの削除が可能だ。また、[編集]メニューの[上へ][下へ]で送信順の並べ替えも可能だ。
●Wake up On Lan tool
次に関西プログラム試験場(M.Ogawa氏)が提供している「Wake up On Lan Tool」を紹介する。
Wake up On Lan toolでは、[編集]−[新規追加]メニューで表示されるダイアログで、コンピュータ名/あて先ポート番号/IPアドレス/MACアドレスを入力して登録を行う。登録した内容は、拡張子「*.ini」のテキスト・ファイルに保存されるようになっており、ファイル名や保存場所は自由に指定できる。そのため、複数の設定ファイルを用意しておいて使い分けることも可能だ。作成した設定ファイルを開くと、登録内容一覧が画面中央のリストに現れる。その状態で、[編集]−[修正]による修正、あるいは[削除]による登録データの削除が可能だ。
特徴として、マジック・パケットの送信による電源投入だけでなく、シャットダウンや再起動のリモート操作が可能になっている点が挙げられる。ただし、休止状態にする指示は行えない。
なお、どちらのソフトウェアでもコマンドライン操作が可能になっている。バッチ・ファイルと組み合わせる、あるいはタスク登録によって自動処理を行う場合には、コマンドライン操作の方が使いやすいだろう。
MagicSendの場合、「magicsend 00-01-23-45-67-89」といった具合に、MACアドレスを続けて記述すればよい。Wake up On Lan toolにはさまざまな構文があるが、例えば「wol /open=wol.ini /wake=1 pc1 pc2 pc3」といった具合に、設定ファイル名/送信回数/起動するコンピュータの名前を記述する方法がある。
今回は、筆者の自宅で使用しているコンピュータを対象としてWOLを実行した結果を紹介する。このコンピュータはIntel製マザーボード「Intel DG965SS」を使用した自作PCで、LANアダプタはオンボードのギガビット・イーサネット・アダプタ(コントローラはIntel 82556DC)を使用している。
■BIOSの設定を行う
まず、BIOSセットアップ画面の設定を行う。メーカー出荷時設定ではWOLが有効になっているが、念のために確認しておく。「DG965SS」の場合、電源投入直後にIntelのロゴマークを画面に表示したタイミングで[F2]キーを押すと、BIOSセットアップ画面を呼び出すことができる。この操作に使用するキーはマザーボードによって異なるが、[F2]キーや[F12]キー、[Del]キーのものが多い。
「DG965SS」でWOLの可否に影響するのは、[Power]以下にある[Wake on LAN from S5]の設定になる。既定値の[Power On]でWOLが動作するが、これを[Stay Off]に設定するとWOLは動作しなくなる。そこで、この項目が[Power On]になっているかどうかを確認する。必要なら設定を変更したうえで、設定変更結果を保存してBIOSセットアップ画面を終了する。
BIOSセットアップ画面で使用する設定項目は、マザーボードの製造元、あるいは機種によって異なるため、自分が利用している機種のマニュアルを確認したうえで、設定の確認と変更を行ってほしい。
■Windowsの設定を行う
次に、Windowsのデバイス・マネージャで、LANアダプタに関連する設定を行う。以下の画面例はWindows Vistaを使用したときのものだが、ほかのWindowsでも同様の手順で設定できるはずだ。
まず、WOLで使用するLANアダプタのプロパティ画面を表示させる。
次に、右端にある[電源の管理]タブに移動して、[このデバイスで、コンピュータのスタンバイ状態を解除できるようにする]のチェックが入っていることを確認する。このチェックは、当該アダプタから電源オンの指令を行えるかどうかを規定するためのものだ。そのため、このチェックがオフになっている場合には、オンに変更する必要がある。
さらに、同じダイアログの[詳細設定]タブに移動する。「DG965SS」が搭載しているIntel 82556DCベースのLANアダプタでは、設定可能な項目を示す[プロパティ]リストボックスに、[Wake on設定]という項目がある。それを選択すると右側に現れるリストボックスで、どういったイベントが発生したときに電源をオンにするかを選択できる。
既定値は、[MagicおよびDirected]となっている。実際に検証したところ、マジック・パケットによってWOLが動作するだけでなく、pingあるいはnet viewコマンドや共有フォルダへのアクセスなど、何らかの通信要求が発生したときには常に電源がオンになった。それでは意図しないときに電源が入る可能性があるため、具合が良くない。
そこで、この項目の設定を[Wake On Magic Packet]に変更しておく。こうすると、WOLを行うためにマジック・パケットを受信したときだけ電源が入るようになる。
■ツールを使った電源オンを試す
ここまでの準備ができれば、WOLによる電源投入そのものは難しい操作ではない。MagicSendでも、Wake up On Lan toolでも、一覧から目的のコンピュータを選択して、マジック・パケット送信の操作を行うだけだ。どちらのソフトウェアでも、特定のコンピュータ1台だけを選択する方法以外に、同時に複数のコンピュータ、あるいはすべてのコンピュータを選択できるので、電源の一斉投入も実現可能だ。
電源がオフになっているPCの電源を遠隔操作でオンにする手段としては、WOLがある。しかし電源をオンにするだけでなく、オフにする手段もなければ、遠隔管理の作業が終わった後もクライアントPCの電源が入ったままの状態になってしまうので、導入効果が半減してしまう。
実は、この問題はWindowsが標準装備しているShutdownコマンドによって解決できる。このコマンドは、ネットワーク経由でほかのPCに対してシャットダウン、再起動、あるいは休止状態にする指令を送れる。それぞれ、使用するコマンド操作の内容は以下のとおりだ。
shutdown /m \\<コンピュータ名> /s
shutdown /m \\<コンピュータ名> /r
shutdown /m \\<コンピュータ名> /h
Shutdownコマンドでは、実行に際してさまざまな設定が可能だが、詳細については、Windows TIPS「システムをリモートからシャットダウンする」を参照してほしい。
なお、shutdownコマンドをほかのコンピュータに対して実行する際には、対象となるPCに対して管理者権限を持っているユーザーの資格情報が必要になる。Active Directory環境であれば、ドメインに参加したクライアントPCに対しては自動的に、Domain Adminsグループのメンバーが管理者権限を持つため、この仕組みを利用するのが最も確実だろう。
前述したように、WOLで使用するマジック・パケットはレイヤ2のブロードキャスト・フレームなので、異なるセグメントに配置したPCに対して送信することができない。そのため、複数のセグメントからなるネットワークを構成している場合、セグメントごとにマジック・パケット送信用のPCを用意する必要がある。
もっとも、そのPCの電源をオンにしておけば、リモート・デスクトップを使用して遠隔操作しながらマジック・パケットの送信を指示することができるので、管理者が送信用PCの所まで行く必要があるとは限らない。マジック・パケット送信用PCだけ、電源を入れたままにしておけば済むはずだ。
また、レイヤ2のブロードキャストではなく、IPアドレスで対象を指定するタイプのマジック・パケット送信用ソフトウェアを使用する方法もあるが、前述したように対象となるPCに固定IPアドレスを割り当てておかなければならない制約がある。そのため、DHCPで自動構成することが多いクライアントPCでは、使いにくい方法かもしれない。
WOLの操作対象になるクライアントPCの台数が多くなってくると、MACアドレスを調べるために掛かる手間が問題になると考えられる。
いちいちPCのふたを開けて調べるのは現実的ではないし、ユーザーにipconfigコマンド、あるいはgetmacコマンドを実行して調査するよう依頼する方法では、確実性に欠ける。また、arpテーブルを調べる方法も考えられるが(TIPS「使用中のIPアドレスを調査する」参照)、すべてのクライアントPCを確実にカバーできるとは限らない。当該PCとのTCP/IP通信が発生しなければ、arpテーブルへの登録も行われないからだ。
そこで、個々のコンピュータのMACアドレス情報を、できるだけ手間を掛けずに収集する方法を紹介しよう。
まず、フリーソフトウェアのコマンドライン・ツール「アドレス情報収集ツール2006」を使用する方法がある。調査対象になるのは、プログラムを実行するコンピュータと同じネットワークに接続していて、かつ実行時点で稼働中のコンピュータだ。
これは、コンピュータ名/IPアドレス/MACアドレスを調べて、ファイルに出力するツールだ。ファイル名の既定値は、引数の指定によって変更できる。IPアドレスのクラス(A/B/C)や、調査対象範囲のネットワーク・アドレスも指定でき、デフォルトでプログラムと同じ場所の「rsp.txt」にCSV形式のテキスト・ファイルとして出力する(引数によってファイル名の指定も可能)。
しかし、稼働中のコンピュータでなければ情報収集の対象にならないため、調査に漏れが生じる可能性がある。それを補足する意味で、getmacコマンドとhostnameコマンドを使用する方法も紹介しよう。ただし、Windows 2000とWindows NTでgetmacコマンドを使用するには、リソース・キットが必要になる。
以下のバッチ・ファイルを実行すると、コンピュータ名と同名のファイルにコンピュータ名とMACアドレスを書き込む。そこで、バッチ・ファイルを共有フォルダに置いて、ユーザーに実行してもらえばよい。
@echo off
hostname > %ComputerName%.TXT
getmac >> %ComputerName%.TXT
@echo on
本稿では、WOLの仕組みと、WOLを使ったPCの電源オンの方法について解説した。小規模であれば、今回紹介したようなフリーソフトウェアのツールを利用するのが手軽だ。しかしクライアント数が数百台といったレベルになると、WOLを利用した電源投入の仕組みをサポートするシステム管理ツールを利用した方が、MACアドレスの収集の手間なども含め効率的だろう。
「基礎解説」
Copyright© Digital Advantage Corp. All Rights Reserved.