Raspberry Pi400をVPN接続で、外出先でも操作できるようにする(Wireguard)

通常利用でのセキュリティ、外出時にスマホやiPadでラズパイを遠隔操作したい場合に、VPN(Wireguard)経由で通信したいと思います。

メンテナンスがしやすいように、できるだけGUIで設定することを目指しましたが、面倒になってしまいコマンドで済ませてしまいました。

事前準備

ラズパイ本体をVPNサーバーにすることも可能ですが、安定運用のため、VPNサーバーをクラウドで運用しています。

VPNサーバー(Wireguard):OracleにVPNサーバーを構築済みです。(Oracle Linux8.5)

※VPNサーバーの構築については後日、記事を書きたいと思います。

ラズパイの設定

クライアント側としてラズパイにwireguardをインストールします。

sudo apt install wireguard

カーネルモジュールをロード、起動、有効化します。

sudo modprobe wireguard

sudo systemctl start wg-quick@wg0

sudo systemctl enable wg-quick@wg0

秘密鍵、公開鍵の作成

wg genkey | sudo tee client.key | wg pubkey > client.pub

鍵の確認

cat client.key

cat client.pub

上記は設定時に必要なので、どこかにコピーをしておきます。

VPNサーバーの設定

GUIで、と思ったのですが、結局コマンドで追加しました。

sudo vi /etc/wireguard/wg0.conf

Interface側に先ほど作成した秘密鍵を設定、PeerはVPNサーバーの公開鍵を設定します。

[Interface]
PrivateKey = クライアントの秘密鍵
Address = 192.168.0.1/32
DNS = 1.1.1.1

[Peer]
PublicKey = サーバー側の公開鍵(サーバー側のInterfaceのPrivatekeyと同じ)
AllowedIPs = 0.0.0.0/0,::/0

VPNに接続するコマンド

wg-quick up wg0

で接続ができます。切断時は

wg-quick down wg0

を実行します。

外出先からの接続

無事VPNに接続できましたので、これを利用して外出時からでもVPN経由でラズパイの操作をするため、iPadのVNC Viewerで新規の接続設定を行います。

IPアドレスを先ほど設定した「AllowedIPs」の/32を除いた部分(上記画像では10.10.10.9)を入力し、接続するとデスクトップ画面が出てきます。

これでVPNサーバーを経由してリモートデスクトップが完成しました。

数日利用して

有線接続でもそれなりに遅いと感じていましたが、VPN接続だとさらに動作が遅く、なかなかストレスがたまる動作状況です。

GASの緊急メンテ等で使えると思いましたが、スマホ、iPadでもスプレッドシートをWeb版で開くことで、GASも使えました。

通常はSurfaceでWindowsを利用するので、外出時にパソコンを使わないといけないという状況でもない限り、リモートデスクトップの出番はしばらくなさそうです。

Follow me!