LoginSignup
10
18

More than 5 years have passed since last update.

ポート開放なしで家のパソコンを遠隔起動したいよ

Last updated at Posted at 2018-12-17

家のデスクトップを外から起動したいと思い立ち、その方法を探しました。
起動さえできてしまえばchromeのリモートデスクトップでどうにでもなります。
ポート開放してWakeOnLanすればいいらしいのですが、
家で使ってるルーターはアパートに元からついてるものなので、ポート開放なしでできるだけ最小費用でパソコンを遠隔起動する方法を模索しました。
最終的にラズパイをルーターにしてRealVNCで接続してWokeOnLanで起動することにしました。
この方法で外出先からパソコンだけでなくスマホからでも自宅のパソコンを起動することが可能です。

環境

Winodws 10 Pro
Raspberry Pi Zero W (OSはRaspibian)

BIOS/UEFIとOSの設定

最初にWakeOnLanという遠隔起動を有効にするためにBIOSとOS両方で設定行う必要があります。

まずはBIOSで設定をします。
BIOSそれぞれで方法が違うのですが、とりあえず自分が設定したものを書いておきます。
・内蔵LANから起動>有効
・ACPI設定>PCIEデバイス電源ON>有効
自分はこの2つを設定しました。
上のリンクに書いてあるように
・[WOL]
・[Wake On LAN ~]
・[Remote Wakeup]
・[PME Event Wake Up]
・[Power On by PCI Device(PCIによる電源ON)]
・[Power On By PCIE Device(PCIEによる電源ON)]
など様々な書き方があるようです。

次はOSの設定です。
ここでもネットワークアダプターによって様々です。
今回はWinodows10のやり方のみ書きます。
デバイスマネージャー>ネットワークアダプター>Realtek PCIe GBE Family Controller>詳細設定
から
ウェイクオンマジックパケットを有効


ちなみに自分のRealtek PCIe GBE Family Controllerのバージョンは10.31.828.2018です。
Windows10にアップデートしたらWOLが出来なくなった
上のリンクのように9.1.2015のようにドライバーが古いと使えないという報告もあるので気をつけましょう。
ドライバーのダウンロードのリンクが先程の記事とは変わっているように思えるので念の為貼っておきます。
https://www.realtek.com/ja/downloads


参考:
Wake on Lan で Windows 10 の PC を遠隔で起動する
Wake On LANでコンピュータを起動する (1/2)
Wake On LANでコンピュータを起動する (2/2)

ラズパイでVNCの設定

RealVNCのアカウントを作成することで、クラウドを介してインターネット越しのVNCにアクセスすることができます。
クラウドを介してくれるので自分でポートを開放したりする必要がないわけです。
https://www.realvnc.com/
アカウントはHome版で大丈夫です。
アカウント作成完了後、自分のキーが発行されます。
REALVNCアカウント黒塗り.png
このキーは後ほど使います。

RealVNCを使用するにはホスト側にVLCViewerクライアント側にVLCserverが必要です。
嬉しいことにラズパイのOSであるRaspbianにはVLCserverが最初から入っています。
しかしデフォルトでは無効になっているので有効にします。
参考:https://iot.keicode.com/raspberry-pi/raspi3-vnc-setup.php
ターミナルで以下を打ちます

$ sudo raspi-config

そしてInterfacing Options>VNCと選択し、VNCサーバーを有効化しますかと聞かれたらYesを選択します。
完了したら再起動しておきます。

$ sudo reboot

そして再びターミナルを開き、

$ sudo vnclicense -add KEY

このKEYの部分に先程の自分のアカウントに書いてあったキーをいれます。

つぎにラズパイを操作する側のパソコンにVLCViewerをいれます。
https://www.realvnc.com/en/connect/download/viewer/windows/
スマホでもアプリがあるのでできます。
開いてアカウントを入力するとAdressBookにraspberrypiがあるはずです。
接続できるかどうかを確認してみてください。

参考:
ポートの開放することなく、Respberry Piに外からアクセスする
https://ameblo.jp/hagechip/entry-12303416402.html


様々な記事で、というか公式でもlisensingという項目からRealVNCのライセンス認証を行っているのですが、自分のVNCserverにはlisensingは見つかりませんでした。
代わりにsudo vnclicense -add KEYをすることでうまくいきました。
もし詳しい方がいらっしゃれば教えてください。
公式には"ラズベリーパイに特有のVNC Connectは、クラウドと家庭の加入者への直接接続を提供するために事前にライセンス供与されています。"と書いてあるので、ラズパイ版は特別なのかな?


PythonでWake On Lan

ネットワーク機器にはMACアドレスと呼ばれる物理アドレスが割り当てられます。
WakeOnLanはそのMACアドレスを16回繰り返した信号であるマジックパケットを送ることでパソコンを叩き起こす技術です。思ったより強引ですね。
仕組み自体は簡単なので様々な方法があります。
ソフトを使う方法もありますが、今回はラズパイにもともと入ってるpythonを使いたいと思います。
https://github.com/bentasker/Wake-On-Lan-Python
上のgitからラズパイにダウンロードします。
ダウンロードしたWake-On-Lan-Pythonwol_config.ini.exampleの中身は以下のようになっています。

wol_config.ini.example
# Save this file as .wol_config.ini in the same directory as wol.py

[General]
broadcast=192.168.1.255

[myPC]
mac=00:2a:a0:cf:83:15

[myLaptop]
mac=00:13:0d:e4:60:61

これに起動したいパソコンのIPアドレスとMACアドレスをしらべて置き換えます。
windowsではそれぞれipconfiggetmacでわかります。
そしてwol_config.ini.exampleというディレクトリ名を.wol_config.iniに変えます。最初のドットを忘れずに。

wol_config.ini

[General]
broadcast=(IPアドレス)

[myPC]
mac=(MACアドレス)

次にPythonの仮想環境を作り、有効化します。ここでは仮想環境の名前をwolvenvとします。
ラズパイのターミナルで、

$ python -m venv wolvenv
$ source wolvenv/bin/activate 

そしてパソコンを起動してみます。

(wolvenv)$cd Wake-On-Lan-Python
(wolvenv)$python wol.py myPC

うまく起動できたでしょうか。

クリックで起動

前項のpython wol.py myPCをすることで起動できるのですが、スマホ等でターミナル打つのはだいぶ無理があると思います。
そこでシェルファイルを作成することでクリックのみで起動できるようにします。
シェルファイルによってlinuxの複数のコマンド操作を一度に行うことができます。

wol.sh
#!/bin/bash
cd /home/pi/Desktop
source wolvenv/bin/activate
cd wol-python
python wol.py myPC

このシェルファイルをデスクトップにおいて置きます。(ここではwolvenvWake-On-Lan-Pythonもデスクトップにあるとします)

そしてターミナルで

chmod 777 /home/pi/Desktop/wol.sh

これでwol.shをクリックし、Execute in Terminalをクリックして起動したら成功です!

参考
https://ameblo.jp/hagechip/entry-12326256477.html

おわりに

まさかこんなに大変だとは思いませんでした。WakeOnLanができる高機能ルーターを買うことでラズパイなしで出来るらしいです。もっと簡単なやり方があれば誰か教えてください。

10
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
18