0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイでWindows機をWake On Lanして外出先からVPNリモートデスクトップ接続

Last updated at Posted at 2024-12-29

概要

VPNを開通してスタバから自宅のメインマシンにリモートデスクトップしたいな~と思い、環境構築を行ったので備忘録です。

ポンチ.jpg

ホスト側のWindows機をスリープさせておきたいので、マジックパケット送信用にDBとラズパイを経由させています。
私の家のルータではポートマッピングとマジックパケット送信ができなかったので、ルータさえ対応していればホストとクライアントのみで簡素な構成にできそうですね。

VPN設定

無料のVPNは色々選択肢があるかと思いますが、ググった感じで良さそうだったので今回はZeroTierを使用しました。何でもいいと思います。

1.サインインしてネットワーク作成
2.クライアントとホストにZeroTierをインストール
3.各端末のタスクトレイからJoin New NetworkしてネットワークIDを入力
4.管理コンソールから端末認証

上記の流れで簡単にVPN環境が作成できました。

Windows10Homeでリモートデスクトップ

標準では使えないみたいなので、RDP Wrapper Libraryを使わせて頂きます。
こちらの記事が詳しいです。

Splashtop PersonalでもVPN環境下なら同一ネットワークと認識して動くと聞いたのですが、当方試した限りでは上手くいかず。ポート解放も不安定そうな感じだったのでやめました。

Wake On LANの設定

ホスト側Windows機のBIOSとデバイスマネージャーの設定が必要です。BIOSはメーカーや機種によって内容が違うので公式HP等で調べます。
デバイスマネージャーの設定はネットワークアダプターの詳細設定からWOL関係のものを探して設定していきます。

image0.png

ルータの設定についても、メーカー/機種によって違うので公式HPを読みましょう。

ラズパイの設定

Raspberry Pi Zero WHが余っていたので常時起動用に使用します。通常のラズパイでもいいのですが、今回の用途ではシングルスレッドで電力消費の少ないZero Wシリーズがよさそうです。ちなみにWはWi-FiのWですね。Hは変態のHです。
Raspberry Pi Imagerを使用してOSを書き込みます。デスクトップは不要なので軽量なRaspberry Pi OS Lite(32-bit)を書き込んでいきます。OS書き込み時にWi-FiとSSHの設定ができるようです。以前はできなかったような気がします。
SSH接続ができず、色々こねくり回したのでRaspberry Pi Imagerで一発OKなのかは真偽不明です。単純にシングルスレッドで起動が遅かっただけかもしれません。

Gitとpipが入っていなかったのでインストールします。

bash
sudo apt update
sudo apt install git
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py

MongoDB

DBは無料のMongoDB Atlasのアカウントがあるので、そちらを使用します。何でもいいと思います。
MongoDBはクラスターだけ立ち上げたら、DBやコレクションを定義しなくてもリクエストを飛ばしたらDBから勝手に作ってくれるみたいです。勝手に作らないでほしい。

1.サインインしてプロジェクトを作成
2.プロジェクトにクラスターを作成

上記でOKです。クラスター作成時のユーザー名+パスワードを使うので必ずメモしておきます。

作ったプログラム

ラズパイ側

クローンして、pip install .でライブラリを入れて下さい。
それからフォルダ直下に.envファイルを作成します。

.env
MONGO_URI=mongodb+srv://<username>:<password>@<collection>.tjzrd.mongodb.net
DB_NAME=<dbname>
COLLECTION_NAME=wol_info
TARGET_MACHINE=hogehoge
TARGET_MAC_ADDRESS= 00:11:22:33:44:55
INTERVAL_SECONDS=10
UPDATED_BY=hugahuga
LOG_PATH=wol.log

crontabで起動時に自動実行するよう設定します。

bash
crontab -e

以下一行追加すればOKです。sleepはおまじないです。

@reboot sleep 60 && /usr/bin/python3 /home/pi/mp-send-service/main.py

クライアント側Windows機

クローンして、フォルダ直下に.envファイルを作成します。
mongoshをインストールしてパスを通します。

使い方

1.各Windows機でZeroTierを起動しJoin状態にしておきます。
2.ラズパイは電源に繋いでおきます。
3.スタバに行ってコーヒーを飲みます。
4.update_wol_info.batを叩いてWake On LAN用のフラグをONにします。
5.リモートデスクトップでホスト側に接続します。

まとめ

ルータ買い替えた方がよさそう。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?