ルーターを越えろ!!(WOL編)

linux, サーバー関連, 日記, 雑記 2010年3月9日,

最近、、、仕事先から自宅のPCをリモートデスクトップで触ってるわけであります。
家で適当なスクリプト作ってるとそのサブルーチンが意外と仕事でも役立ったりするんだけど
わざわざ作るたんびにファイル鯖上げたりとかやってられないし、
仕事場から自宅PCをリモートで触ればいいんじゃね?的な。

使い勝手はかなりイイ感じで意外とメールチェックとかができて便利系。
リモートしてアニメみたり、テレビみたり、wikiや掲示板の改造もできますし、
テレビの録画もできちゃうのでいい感じ。

でも・・・気になるのが電気代。

だって、仕事いってる間ずっとPCつけっぱなんだぜ!!!MOTTAINAI!!
使うときだけパソコンついて、使い終わったらパソコンが落ちる。
そんな都合のよい事できないかなーと

ってわけでいろいろ調べてたらWOL(Wake on lan)って技術があるらしい。
電源を切った状態でもLANの差込口(いわゆるNIC)に、ある特殊なパケットを流し込むと
PCが起動してくれるという夢のような技術!
夢のようだけど2000年くらいにはすでにあったみたいで、Core2世代ならホボ対応してるぽい。

家電製品って待機電力って言うんだっけか?
コンセント刺してるだけで微弱だけど電気が通ってるって話はよく聞く話なんだけど
PCもそうで、電源切っててもマザボには微弱ながら電気が通ってるっぽい。
当然マザボについてるNICも電気が通ってるわけだからそこを特殊なパケットで刺激しると
ビンビン物語ってわけ。

ってわけで我が家のスペックはこんな感じ

・マザボ P5B無印
・ルータ NP-BBRL




①早速ためした

設定は結構簡単でBIOSの画面でPoewrだったかの項目の
Power On By PCI
Power On By PCIE
の両項目を”Enabled”にする。

んで起動した後はデバイスマネージャーを開いて
「ネットワークアダプタ」のNICのプロパティを開く。
詳細設定で幸運にも「Wake-On-Lan機能」なんて項目があったりしたから
「パターン適合とマジックパケット」をチェック。

ついでに電源の管理で 「このデバイスで、コンピュータのスタンバイ状態を解除できるようにする」
にチェックを入れる。

これで起動させられる側のPCの設定はOK

起動する側はネットブックを考えていたので
MagicBootをインストールしてみた。

起こしたいパソコンのMACアドレスIPアドレス。と、必要なものはこんだけ。
あと、ポートの設定を入れるだけというシンプルなプログラムだった。
ちなみにもともとUDP2304って書いてたからそのまま2304を使ってみた。

今回はグローバル越しからPCを起こしたいわけだから
UDP 2304ポートを起こしたいPCにNAT変換(ポート開放)してやらないかんから
2304ポートからの接続はメインPCへ向かうようルーターの設定をいじくり終了。

メインPCをシャットダウンしてみてEモバイルにつないだネットブックから
MagicBootを起動しマジックパケットを送信すると無事起動した!!!
なんか他のPCから自分のPCが起動した事に感動した。




②ルーターを越えろ!!

次の日はメインPCの電源をいれずにスキップで仕事にいった。
とりあえず仕事先についてから仕事先PCにMagicBootをインスコ。
早速自宅PCに向けてマジックパケットを送信するのだが・・・

一向に起動する気配なし。

何回も送信ボタンを押したがリモートデスクトップできる事はなかった。

いみふ。ちゃんと検証ではうまくいったのに仕事先から起動しない。
家に帰ってからPC起動して設定をみなおし、
今度はネットブック で仕事先PCにリモートデスクトップして
わざわざそこからマジックパケットを送信してみたりもしたんだけど
家からだとちゃんと起動するが 仕事先からはだめ。

そんな検証&orzを数日間繰り返した時に気づいた。

メインPCをシャットダウンしてから5分くらいなら マジックパケット送信したら起動するけど
それを過ぎると起動しなくなるのだ。

なんだそれ!!つかえねーー!!しね!!!1

と、 ひとしきり怒った後で、マザボの電力が弱ってるんじゃね?という仮説を元に
2chでレスしてたら
「おま、それルーターのせいだか ら。」
という、ありがたいお言葉をいただいたのだった。



③原因追求

我が家はNP-BBRPだったかいうやっすいルータ使ってます。


やっすいのでVPNもパススルーもできないけどパケットフィルタやNAT変換(ポート開放)は簡単にできるので不満はあんまないです。
まぁ、そのやっすいルーターなんですが。ルーターはPCに電源が入ってるあいだはルータのARPテーブルというIPアドレスとNICを関連づける情報を持ってるらしい。けどPCの電源が切れるとARPテーブルを更新し、律儀に情報を捨ててしまうそうな。
その捨てるまでの時間がまさに「5分」
捨てられてしまうといくらポート開放しても目的のPCが見つからないからパケットは破棄される。

じゃぁどうするか、というと、ルーター側で対応するしかない。なんかネットワークのブロードキャストアドレス(255.255.255.0なら192.168.x.255がブロードキャスト)にパケットを送信するとLANケーブルが繋がってるPC全部にパケットを送信するというものが存在する事を発見。つまり、ポート変換で目的PCではなく、ブロードキャストアドレス(192.168.x.255)を指定すると

ルーターがローカルの全部にマジックパケット送信 → MACアドレスが合致したメインPCが起動

という流れ。なるほど!!早速ルーターにブロードキャストアドレスを設定すると「254以下の数字を入力してください」とクールなアラートが出た。おわた。
後から知ったけど【WOL対応】と謡われたルータはようはブロードキャストアドレスを指定する事の出来るルータぽい。
けど全IPにパケット送信なんて危険がいっぱいだからWOLだけを許可してるんだろね。多分。きっと。




③解決編

俺は考えた。頭が擦り切れるくらい考えた。
つまりだ。
ルータが関係しないローカル内からマジックパケット送ればいいんじゃね!?と!

ってわけで仕事場にあった、粗大ごみに出される予定入れボックスにありそうな
化石みたいなノートパソコン(メモリ64MB CPUペンスリの750MHz)を拝借。
しかもNICついてないという、うんこだったので、LANカードも購入(500円した)
あとメモリ64MBとかさすがのDebianもスワップしかねんから
パソコン工房で遊戯王カード並の気安さで積み上げられてた126MBのPC133メモリも買った。(500円)
型番でぐぐるとメモリを256MBにする!とかいう分解する手法がのっててソソられたが我慢した。
大いなるWOLの為に。

【スペック】
CF-X1パナソニック
Windows ME(笑) → Debian Lenny
メモリ64MB + 追加126MB
10/100MのLANカードを追加購入


Debian Lennyをインストール。LANカードも自動認識してくれた。
通常のSSHとかApache、あとはライブラリとかPerlくらいをインストールしたんだけど
makeが30分くらいかかってびびった。

で、自宅鯖って事でルーター配下に配置。
なんかパッケージあるんじゃね?とひらめいて検索

apt-cache search wol


そしたらばこんなパッケージが。ズバリじゃないかw

wakeonlan – Sends ‘magic packets’ to wake-on-LAN enabled ethernet adapters


ってわけでインストール

apt-get install wakeonlan


とりあえずマニュアルを・・・

man wakeonlan


で適当に呼んでると

Using a subnet broadcast address:
$ wakeonlan -i 192.168.1.255 01:02:03:04:05:06


ってわったからつまり
wakeonlan -i IPアドレス MACアドレス
で目的のPCを起動させれると。なるほど!!!
ってわけで早速試すためにメインPCをシャットダウンして5分以上まってからマジックパケット送信

起動した!!!
ってわけで解決。
仕事場から自宅ノート鯖にSSH→wakeonlanコマンドでマジックパケット送信、で
今回のことが実現できたのでした




④発展編 perl(CGI)スクリプト作って便利に!

しかしわざわざSSHで接続ってのもねぇ・・・
せっかくApacheいれたわけだしブラウザからできたらいいのにー

って事で適当なCGIプログラムを組んでみた。
内容は自宅にある4台を選択して電源を起動させるスクリプト。
ついでに起動したかをPINGで確認する機能つき。

これ作ってるとき、ひにゃのがうちにきてたので

そなー「これうごかねー。」
ひにゃ「どっか記述まちがえてんちゃうん?」
そなー「いや、、そんな初歩的な・・・」
ひにゃ「あれwwここのifの「}」がなくね?wwww
そなー「wwwwwwww」

というハートフルな会話の元に作りました。
※ちなみに鯖立てたとかえらそうに書いたけど俺は横で見てただけでひにゃのに
DebianインストールからApache、proftpd、qmailなどなどやらせた。

home_pc_admin.zip
動作イメージ

92~95行目 と 138行目を適当に自分のPCのMACアドレスとかIPに書き換えてあげて下さい。
ちなみに実際にマジックパケットを送ってるのは
131行目の

system(“wakeonlan -i 192.168.0.255 $FORM{macaddr}”);


の部分なので、wakeonlanをDebianにインストールとか別のソフト使ってるやらの場合は
ここを適当に変えてください。
あと当然だけどBASIC認証やアクセス制限はやっときましょう。
夜中寝てたらかってにPC起動とか嫌すぎるし!




⑤おまけ

そなー「これで外からでも自宅PCの電源いれれるな!!」
ひにゃ「おつかれさんー。でも・・・」
そなー「え、何?」
ひにゃ「PCつけっぱが勿体ないっていう理由でやったのに」
ひにゃ「ノートサーバーが増えただけなんですが。

そなー「!」

だれかワットチェッカー貸してください。
このノート鯖の消費電力計りたいです。

10 Responses to “ルーターを越えろ!!(WOL編)”

  1. kohu Says:

    父親とまったく同じことしてるww

  2. そなー Says:

    うーん。血は争えないなぁw

  3. xfedora Says:

    具然、このサイトを見つけました。世界は狭いなと感じました。こちらも同じことを考えています。
    e-mansionの固定IPを契約しましたが、ここもある時間経過するとWOLが効きません。
    しかも自宅のルーターではないのでどうしようもないことで困っています。
    以前はPCの電源を落としても、Lanカードのランプがずっと光っているものもありましたがそのようなPCだと問題ないかもしれませんが、最近は省エネ思考で売られているマザーがそうなっていない気がします。

  4. sonar Says:

    ルーターのarpテーブルさえ保持できればいいのでルータの設定でそういった項目があればいいんですけどね。
    今は部屋に24時間稼動のファイルサーバーを置いてるのでどうとでもなるようになりました。

  5. 通りすがりの者 Says:

    フレッツ光ネクストでついてくるホームゲートウエイというルーターにはこの機能があるそうです。

  6. ugg ケアキット 使い方 Says:

    こんにちは!この投稿は、ができませんでした任意のより良い書き込むことが! 読むルームメイトこの記事は私の のことを思い出す!このことについて|彼はいつもチャット話し続けた。彼にポストの記事私はこれを転送します。 かなり確信彼は良い読み取りを持つことになります。 ありがとうござい共有のために!

  7. 自宅のPCを簡単にWOL起動する 編 | 風の羅針盤 Says:

    […] Nを張るのも面倒なので、ブラウザからできないものかと。そこでこれを見つけました。 […]

  8. Authentic Mens Says:

    Hi there, i read your blog from time to time and i own a similar one and i was just wondering if you get a lot of spam comments? If so how do you protect against it, any plugin or anything you can advise? I get so much lately it’s driving me insane so any assistance is very much appreciated.

  9. 【ReadyNAS】自宅のPCを簡単にWOL起動する 編 | 風の羅針盤 | Destination of winds. Says:

    […] Nを張るのも面倒なので、ブラウザからできないものかと。そこでこれを見つけました。 […]

  10. そなーブログ » Blog Archive » PCカードのNICが落ちる【PCC-TXD】 Says:

    […] ルーターを越えろ!!(WOL編) に 【ReadyNAS】自宅のPCを簡単にWOL起動する 編 | 風の羅針盤 | Destination of winds. より […]

コメントどうぞ