2009-01-03

Wake On Lanの使い方(WOLをLinuxで)

我が家ではサーバPC2台を常時稼働しているが、よく利用するのは1台(Linux)で、もう片方(WindowsPC)は特定のアプリを動かしたいときのみ利用している。
しかし、今までは2台とも常時電源を入れたままにしていたため、電気代が馬鹿にならなかった。DELLのSC430(アイドル時約80W)を利用しているので、月900円程度かかっている計算になる。(電気代の計算方法は去年の日記を参照)

というわけで、常時稼働しておく必要のないWindowsPCの電源を、遠隔地からOn/Offできるように、Wake On Lanを使ってみた。SC430が標準でACPI2.0に対応していることもあって、非常に簡単に実現できた。(当たり前なのですが、電源がONになる瞬間は結構驚きです。)


■Wake On Lanの設定
1.BIOSの設定変更
PCの電源をONにした後すぐにF10、F12などを押してBIOSからWake On Lanの設定をOnにする。

2. おまじないの追加
/etc/rc.localに以下(MagicPacketで電源がONになる設定)追加。追加しないと2回目以降のWOLに失敗する。
ethtool -s eth0 wol g

3.WindowsPCの起動(linux"fedora"を利用)
LinuxPCから以下のコマンドを入力(MACアドレスは電源をONにする対象PC)
# ether-wake xx:xx:xx:xx:xx:xx
※windowsではMagicSendが便利です。


今回はSSHで遠隔からグローバルIPでLinuxPCにログインして、それから上記コマンドを入力している。本当はLinuxPCもWOLできるようにしたかったのだが、ルータに以下の制限があるようでうまくいかなかった↓

※V110Mでは、NAPTのLAN側アドレスを未割り当てIPアドレス、またはブロードキャストアドレス宛(x.x.x.255/24)に設定している場合、WAN側からのMagicPacketをうまくLAN側に流してくれない。割り当て済みIPアドレスへのフォワードはOKなので、一度Linuxを通常起動してIPを割り当てて、その後ハイバネーションからのMagicPacketでの復帰であればうまくいきそう。ARPテーブルのリフレッシュの問題かもね。(完全な電源OFFとはいえないがまぁ電力消費もほとんどないでしょう。)


■Magic Packetの解析(WireShark)
レイヤー1、レイヤー2は通常どおり。レイヤー3より上がWOLの中身であるが、以下の図を見てのとおり非常に簡単な構成である。まず、0xffffffffffff(6bytes)、次に対象PCのMACアドレスを16個。これをUDPやらTCPやらでカプセル化すればよい。ちなみに以下の図はFedoraから送出したパケットで、見てのとおり特にカプセル化は行わないようである。(AMD標準ツールMagic Packet Utility”)がUDPを使ってからUDPがデファクトなのかな。)














・リンク
wiki:Wake-on-LAN
Wake On LANでコンピュータを起動する
解説本→外から自宅のパソコンの電源を入れて使う本―ネットワークを経由して外からサクサクパソコン操作

No comments: