ひよこになりたい

Programming Server Network Security and so on

Raspberry PiからWake On LanでWindowsを外出先から起動できるようにした

先日Raspberry Piを購入し、ひとまず設定も行って使える環境にまで持っていったので、以前から使ってみたいと思っていたWake On Lanを導入して外出先から自宅PCを起動できるようにしました。

というわけで簡単な設定ですが手順メモを。

関連記事:Raspberry Piを購入したのでインストールとセットアップメモなど

Wake On Lan

Wake On Lan (WOL)とはコンピュータの起動やシャットダウンをネットワークを通して行う事ができる技術です。これを使えば必要なときに外部から自宅PCを起動し、接続ができるようになるので、一日中PCをつけっぱなしにしなくてもPCに接続することができてとてもおサイフにやさしい。すばらしい

WOLは、マジックパケットと呼ばれるパケットをコンピュータに向けて送信します。受け取ったコンピュータは送られたパケットがマジックパケットであると判断できれば、起動を開始します。簡単ですね。

この辺りはWikipediaに詳しく書かれてますので興味のある方はそちらをどうぞ。けっこう面白いパケットを送ってます。

Wake-on-LAN - Wikipedia

ただし、WOLを利用できるかどうかはNIC、OS、BIOSマザボなどが対応している必要があるので確認が必要です。

ネットワークアダプタは、USB給電ができれば無線LAN受信機でも大丈夫ですが、あいにく私の環境ではUSB受信機は使用できなかったのでRaspberry Piを経由してイーサネットからマジックパケットを送ることにしました。

イーサネットコンバーターを使用するという手も有りましたが、このために5kほどのお金が必要になってしまうので諦め。

設定

今回は、こんなかんじの設定にしてみました

f:id:zipsan:20150924165941p:plain

Windows 7とRaspberry Pi(Raspbian)をLANケーブルで接続して、Windows 7側のIPアドレスを192.168.100.1に、Raspberry Pi側のIPアドレスを192.168.100.2に設定しました。

外部からRaspberry PiにSSHで接続し192.168.100.1に対してマジックパケットを送ることでWin7を起動します。起動後、RDPは無線で直接接続します。

Windows側の設定

Windows以外の方は各自調べてください(:3 」∠)

BIOS

Wake On LanをEnableにしておく。
BIOSの設定は各マシンで異なるので省略します。

ネットワーク設定

コントロールパネル>ネットワークと共有センター>アダプタ―の設定の変更>ローカルエリア接続→プロパティ →インターネットプロトコルバージョン4(TCP/IPv4)選択からのプロパティ

f:id:zipsan:20150924170110p:plain

addressは192.168.100.1
サブネットマスクは255.255.255.0
DNSゲートウェイ設定は不要です。

MACアドレスを調べる

cmd.exeを起動し、以下のコマンドで調べる

> ipconfig /all

さきほど設定した192.168.100.1のところの物理アドレス-----をメモしておきましょう。(あとで使います)

イーサネット アダプター ローカル エリア接続:

接続固有の DNS サフィックス . . . :
説明. . . . . . . . . . . . . . . : Intel(R)                  Gigabit Network Connection
物理アドレス. . . . . . . . . . . : **-**-**-**-**-** # これ
DHCP 有効 . . . . . . . . . . . . : いいえ
自動構成有効. . . . . . . . . . . : はい
IPv4 アドレス . . . . . . . . . . : 192.168.100.1(優先)
サブネット マスク . . . . . . . . : 255.255.255.0
デフォルト ゲートウェイ . . . . . :
NetBIOS over TCP/IP . . . . . . . :

Windowsはこれくらい

Raspberry Pi側の設定

ネットワーク設定

はじめにネットワークの設定をします。

$ sudo vim /etc/network/interfaces ←ネットワーク設定

auto lo

# Ethernet(有線)側の設定
iface lo inet loopback
iface eth0 inet static
address 192.168.100.2
netmask 255.255.255.0


# 無線側の設定
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
dns-nameservers 8.8.8.8
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


iface default inet dhcp

eth0を再起動

$ sudo ifdown eth0 && sudo ifup eth0

addressは192.168.100.2 サブネットマスクは255.255.255.0 iface lo inet loopback の部分がEthernetの設定です。addressとnetmaskだけでいいと思います。 編集し終わったらeth0を再起動しておわり。

Wake On Lanの設定

設定というかなんというか?

今回はWOLはSENGOKU氏のwol.cを使用します。 wol.c:http://www.gcd.org/sengoku/docs/wol.c

ダウンロードしてコンパイル

$ cd
$ mkdir wol
$ cd wol
$ wget http://www.gcd.org/sengoku/docs/wol.c
$ gcc wol.c -o wol

とりあえず実行してみる

$ ./wol
Wake On Lan
Copyright(C)2000 by Hiroaki Sengoku <sengoku@gcd.org>
Usage: wol <IP> <MAC>

ターゲットのIPとMACアドレスが必要です。 さっきWindowsの方で設定したIPアドレスとメモしたMACアドレスをここに入れて実行すると

$ ./wol 192.168.100.1 **-**-**-**-**-**
$

何も表示されなければ送れてます(おそらく)
気になる方はtcpdumpで確認してみてください

Windowsの方の電源を落としてコマンドを叩くと起動するはずです。ぜひやってみてね。
起動しない場合は、機器がWOLに対応してるか、ネットワーク設定があっているか確認してみるといいかもです。
また、毎回毎回IPアドレスMACアドレスを入力するのはだるいのでシェルスクリプトを書いておくといいかもです。

$ vim sh_wol.sh
------- Vim -------
#!/bin/sh
./wol 192.168.100.1 **-**-**-**-**-**
------- Vim -------
$ chmod 700 sh_wol.sh
$./sh_wol.sh
$

かんたんかんたん

今はsshでRaspberry Piに接続してシェルスクリプトを走らせて起動してますが将来的にはWebから起動できるようにしたいなぁと目論んでます

いつになるやら