Wake On Lanで遠隔PCの起動

Wake On Lanはネットワークを通してPCを起動する素敵な方法である。
利用方法としては、出先から自宅のPCを起動したり、LAN内のPCをコマンド一発で全て立ち上げたりできる。

Wake On Lanを利用するためには、Wake On Lanに対応したハードウェアを使用してなければならないが、2000年以降のPCであれば基本的に対応している模様。
OS側でもWake On LANに対応したOSを使用する必要があるっぽいが、Windows, Mac, Linux系を使っているなら問題ない。

ここではubuntu 13.04でのWake On Lanの設定方法をメモしておく。

起動したいPCの設定(Ubuntu)

まず、NICの対応を確認するためにethtoolを使ってNICの設定を調べる。ethtoolがインストールされてない場合は

sudo apt-get install ethtool

でインストール可能である。インストール後は下記のコマンド

sudo ethtool eth0

を実行するとeth0の設定がつらつらと表示されるので、その中の下の方に

Wake On:g

と表示されていれば利用可能である。上記のようになっていない場合は、

sudo ethtool eth0 -s wol g

とし、もう一度sudo ethtool eth0で確認して、Wake On:gと表示されていればOK。ただし、これでは再起動すると設定がもとに戻るので、下記サイトを参考に起動時に自動的に設定するようなスクリプトを書くと良い。
知ってると便利!遠隔操作でMacやUbuntuを起動させるWakeOnLanの使い方 | Macとかの雑記帳

BIOSの設定を調べる

次にハードウェア側で、Wake On Lanの設定をする。PC起動後DelキーなどでBIOSの設定画面を開く。
ここからの設定はBIOSによって項目名が変わるので、詳細は割愛するが、下記サイトにあるように
大項目としては
[Power Management Setup]、[Advance]->[APM Configuration]、[Power]
大項目の中の具体的な項目名としては
[WOL]、[Wake On Lan ~]、[Remote Wakeup]、[PME Event Wakeup]
などがある模様。
Windows TIPS:Wake On LANでコンピュータを起動する - @IT
これは備忘録 WAKE ON LAN (WOL)

起動の方法

PCの起動の仕方は、起動したいPCとは別のPCでwakeonlanコマンドを使う(最近はpowerwakeなるものもある)。
ubuntuなら

sudo apt-get install wakeonlan

mac portsなら

sudo port install wakeonlan

でインストールされる。起動したいPCが以下のようになっているとすると

  • global IP:123.123.123.123
  • Local router IP:192.168.1.1
  • Local ubuntu IP:192.168.1.2
  • Open Port:9
  • MAC Adress:11:22:33:44:55:66

LAN内から起動する場合はwakeonlanコマンドを使って

wakeonlan 11:22:33:44:55:66

とすれば良い。portとIPを指定する場合は

wakeonlan -i 192.168.1.2 -p 9 11:22:33:44:55:66

ポートはデフォルトでUDPの9番が使われるので、上記のオプションは余計である。
起動したPCをシャットダウンする時は、sshなどで接続して以下を実行する。

sudo shutdown -h now

ルータの設定

LAN内から起動する場合は上記のようにMACアドレスを指定すれば良いが、WANから接続して遠隔地のPCを起動させる場合は多少面倒である。ルータによって以下のケースが考えられる

  1. ルータがブロードキャストアドレスへの転送を許可している場合
  2. ルータがブロードキャストアドレスへの転送を許可していないが、WOL(WakeOnLan)に対応している場合
    1. VPN(PPTPサーバ)に対応
    2. VPN(PPTPサーバ)に非対応
  3. ルータがブロードキャストアドレスへの転送を許可していない場合で、WOLに非対応

3の場合はおそらく諦めるかルータを変更するなど物理的な対処が必要になる。
1の場合は割と簡単で、ルータのポートフォワーディングでルータへのUDP:9へのアクセスを起動したいPCのブロードキャストアドレスへ転送してやればよい。上記の設定だと
Internet側のUDP:9のアクセス->192.168.1.255のUDP:9に転送
という設定をルータに書けばよい。下記のサイトがおそらく参考になる。
WANからのWake on LANの実験記録 - タナカイチロウの日記

2の場合

2-1のケースでVPNに対応している場合は多少設定が面倒だが、ある程度安全にWOLが利用できる。
ここらへんはルータの機種によって、やり方が違うのでBuffaloのG300系にしぼって話をする。
Buffaloの場合は以下のページの
エアステーション設定ガイド(初版) - 35012387 ver.01 -

  • [外出先から接続するための準備をする]、
  • [外出先で使用するパソコンの設定をする]

を手順通りにやれば良い。
ただし、[外出先から接続するための準備をする]の手順1-6はプロバイダから提供されるIPがころころ変わってしまう場合にすべき設定であって必ず必要というわけではない。つまりは、外部から接続する際ルータのIPアドレスが必要になるが、これがころころ変わっているといちいち外出前に調べないといけないので、その手間を不要にする設定であるということ。
VPN接続の頻度が少なく、IPがころころ変わらないのであれば、ルータのglobalなIPアドレスを調べて使えば良いので特に設定しなくて良い。この場合[外出先で使用するパソコンの設定をする]で指定するサーバアドレスはルータのglobalなIPアドレスである。
VPN接続がうまくできれば、ブラウザで家に居る時と同じようにルータにアクセスできる。上記の設定だとブラウザのアドレスバーに

http://192.168.1.1/

でOK.
後はルータのWOL画面を開けば良い。buffaloのG300系ならばルータトップページの下部にある[ネットワークサービス一覧を表示]で可能.

2-2のケースでは、安全面からよろしくないので使用すべきではないが、一応やり方を書く。
こちらもルータによってやり方が変わるので、G300系にしぼって話をする。
ルータの設定画面を開き、[管理設定]->[アクセス]を開くと、[インターネット側リモートアクセス設定を許可する]という項目があるのでこれにチェックを入れる。
こうすることで、外部からルータのglobalなIPアドレスにアクセスすれば管理画面が開ける。上記の例だとブラウザのアドレスバーに

http://123.123.123.123

といれればルータの管理画面にアクセスできる。このときユーザ名とパスが求められるがこの情報は平文で送信されるので、盗聴しようと思えば簡単にできる。VPNの場合は暗号化した接続を確立してからアクセスするので、問題はない。この点が大きな違いとなっており、こちらの方法をやる場合は自己責任で使用すること。

VPN接続の注意

docomoの携帯のspモードでは、VPN(PPTP)接続は基本的にはできない。テザリングで携帯の通信を使っている場合は強制的にspモードになるので、テザリングでのVPN接続は諦める必要がある。
ただし、IPsecVPNをやる場合は問題ない模様。詳しくは下記が参考になるはず。
価格.com - 『スマホ【GALAXY:ギャラクシ】によるPPTP接続について』 バッファロー AirStation NFINITI WHR-G301N のクチコミ掲示板

疑問

ルータでマジックパケットをブロードキャストアドレスに転送しないといけない理由が良く理解できてない。
起動したいPCが沈黙しているためMACアドレス特定する手段がなく、ブロードキャストするしかないということだろうか。
だとしたらMACアドレスを指定してwakeonlanしている意味が良くわからない。
ネットワーク関係は無学なので勉強せねばと痛感。