はじめに
WOLというのは、遠隔からマジックパケットを送って、パソコンの電源をONにする機能のことです。別にWindowsでなくてもできるし、どのOSにも対応しています。これは、パソコンのハード機能なので。
どのような仕組みになっているかというと、詳しい説明は省きますが、電源(特に通電)とパケットの仕組みになっています。具体的には、電源で言うと、S1,S3,S5という構造で、各々が通電されているならば、WOLを有効に動作させることができます。
ちなみに、S1,S3まではコンピュータのスリープやスタンバイ時の状態が対応します。S5はシャットダウンの状態が対応するわけですね。これをACPIステート
と言います。
ここで、知っておかなければならないのは、S5であるパソコンの電源を切っている時でも、通常は電力を微力ながら消費しているってことです。通電されている。そして、WOLはこの特徴を使って、パソコンの電源をONにする。
しかし、この通電を、例えば、BIOSメニューの設定などから変更し、切ることもできます。
WOLで嵌りそうなポイント
###BIOSメニューで以下の項目などによって、WOLを有効にしているか?
-
WOL、Wake On LAN、Remote Wakeup などを [Enable]
-
PCI Boot Device, PCIE Device などを [Enable]
###BIOSメニューで節電モードをOFFにできているか?
- Deep Sleep [Disabled]
###WindowsのLANアダプタの設定ができているか?
デバイスマネージャーから設定します。LANアダプタのデバイスを選択すればわかります。電源管理
, 詳細設定
にて。
あと、LANアダプタのMACアドレスを確認しておいてください。マジックパケットを送るのに必要です。
確認方法は、ipconfig /all
です。
マジックパケットのルーター超え
WANからWOLを使って、コンピュータの電源をいれることは可能なのかというと、可能です。
これは、直接送りつけてということを意味し、WANからLAN内のコンピュータを遠隔操作して、マジックパケットを送るということではありません。
マジックパケットの仕組みは単純で、値自体も簡単です。具体的には以下の様な感じになります。
IPヘッダに続いて、0xffffffffffff(6bytes)と、WOL対象コンピュータのネットワーク・アダプタのMAC アドレス(6bytes)が16回連続する102bytesのデータを持つUDPデータグラムとなっている
↓↓↓↓↓↓↓ あなたの記事の内容
したがって、0xffffffffffffを6個、MAC Addressを16個書いたデータをUDPで送ったらいいよいらしい。起動してないマシンは、当然ながらローカルIPをもらってないので、ブロードキャストアドレスに送ればいいらしい。もちろん、ルータの設定で特定のポートへのアクセスを特定のマシンにつなげるっていう設定をしてもよいと思う。
───────
したがって、0xffffffffffffを6個、Mac Addressを16個書いたデータをUDPで送ったらいいよいらしい。起動してないマシンは、当然ながらローカルIPをもらってないので、ブロードキャストアドレスに送ればいいらしい。もちろん、ルータの設定で特定のポートへのアクセスを特定のマシンにつなげるっていう設定をしてもよいと思う。
↑↑↑↑↑↑↑ 編集リクエストの内容
##Linuxで使う場合
$ sudo pacman -S ethtool
# wake up lanは、bならoff,gならonです
$ ethtool net0 | grep Wake-on
Wake-on: b
$ sudo ethtool -s net0 wol g
# 永続的に設定する
$ sudo vim /etc/udev/rules.d/50-wol.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="net*", RUN+="/usr/bin/ethtool -s %k wol g"
$ sudo pacman -S wol
$ wol <MACADDRESS>
##追記
どういうわけかルータでポート変換した上で、WANからマジックパケットを送り(この時点では電源は入らない)、次に、WANからSSH接続を試みると、WOLが有効に動作し、コンピュータの電源がONになる動作を確認しました。
他のコンピュータでも確認できるかどうかわかりませんが一応報告です。