🖥️

VPN を使って実家から PCVR で遊びたい!

2023/12/09に公開

概要

この記事は、Iwaken Lab.のカレンダー | Advent Calendar 2023 - Qiita の 9日目の記事です。
前回はmyaonさんGeospatialRecListをImmersalで使ってみるでした。

帰省中の実家や仕事の出張先からでもPCVRで遊びたいですよね...?

実現する方法として2つはありそうです。

1つは、SoftEther VPNを使って自宅PCにつなげる方法です。ポート開放できるようなネットワーク環境が必要です。本記事ではこちらの方法について紹介します。

2つ目は、クラウド環境に VR 用の PC を用意してそこに接続する方法です。こちらは VR 用の PC を持っていなかったり、ポート開放できるようなネットワーク環境がなかったりしても VR 体験ができます。こちらの方法については GCPにクラウドゲーミングPCを用意してQuest2 + VirtualDesktopでVRゲームを遊ぶ を参考にしてください。(直近では 2023/12/2に動作することを確認しました)

また、2種類の比較については、VPNとクラウドの比較をご参照ください。

ここら辺の内容をまとめたスライドもあるのでご興味があれば見ていただけると幸いです。

免責事項

本記事に記載された内容は情報の提供のみを目的としています。これらの情報をもとに行った結果については著者はいかなる責任も負いません。

対象

  • 実家に帰省中または出張中にでもPCVRで遊びたい人

必要なもの

  • ポート開放ができる自宅ネットワーク環境
  • 下り 70Mbps 程度の Quest が接続するネットワーク環境
  • VRができるPC
  • Quest
    • Quest2, Quest3 の動作確認はできました
  • VirtualDesktop
    • Steam Link で代用可能かは未検証です

手順

手順の概要は以下の通りです。

  1. ソフトウェアのダウンロードとインストール
    • SoftEther VPNのダウンロード
      • VPN Server です
    • SideQuest
      • OpenVPN Connect apk を Quest にダウンロードするために使います
    • OpenVPN Connect apkのダウンロード
      • VPN Client です
      • PC でダウンロードし、SideQuest 経由で Quesst へのインストール
  2. アプリケーション設定
    • SoftEther VPN Server
    • SideQuest
  3. VPN サーバー公開のルーター設定
  4. Quest での OpenVPN の設定

ソフトウェアのダウンロードとインストール

以下のソフトウェアをPCにダウンロードします

  • SoftEther VPN
    • コンポーネントはSoftEther VPN Server Manger for Windows
    • 表示される一番の上のファイルでOK
    • インストールするソフトウェアはSoftEther VPN Server
  • SideQuest
    • Quest に apk インストールしたり、ファイルを転送したりするのに使います。
  • OpenVPN Connect
    • apk ファイルがダウンロードできます。SideQuest 経由で Quest にインストールします。

アプリケーション設定

SoftEther VPN Server の起動

リモートアクセス VPNのステップ3までを参考に設定をすすめます。

まず接続ユーザーを作成します。
下図のように「接続」->「仮想 HUB の管理」->「ユーザーの管理」->「新規作成」から、ユーザー名とパスワードを設定します。
このユーザー名とパスワード名は接続時に必要になるので覚えておきます。

次に仮想 HUB と物理的な LAN カードとの間でローカルブリッジを作成します。
LAN カードが複数ある場合はインターネットに繋がってるものを選んでください。

(必要な人は)ダイナミック DNS 設定を行います。
ここで設定したダイナミック DNS 名は VPN サーバーの接続先として指定します。ダイナミック DNS を設定しない場合は、自宅に割り当てられてグローバルIPアドレスを指定することができます。

OpneVPN の設定を行います。
ポート番号は適当な番号で設定し、OpenVPN クライアント用サンプル設定ファイルをダウンロードします。

OpenVPNファイルを編集します。
ダウロードしたファイルのうち、 *_openvpn_remote_access_l3.opvn を開き、下図のようにプロトコルを tcp で指定し、 VPN サーバーのダイナミック DNS または 自宅のグローバル IP, ポート番号を指定します。

最後に、仮想 HUB の状態をオンライン状態になっているかを確認します。

SideQuest

Quset の開発者モードを ON にして、提供元不明の apk を SideQuest 経由でインストールできるようしたり、OpenVPN用のファイルをQuestに送信できるようにしたりします。

Quest の開発者モード ON にし OpenVPN Connect の apk を SideQuest 経由でインストールしてください。
SideQuestを使ってⅯetaQuestにapkファイルをインストールしよう! | VRプロフェッショナルアカデミー/No1.VR/AR専門プロフェッショナルスクールが参考になります。

その後、Side Quest で編集した *_openvpn_remote_access_l3.opvn を Quest の Download フォルダなどに転送します。

VPNサーバー公開のルーター設定

お使いのルーターによって設定が変わります。ルータ名+ポート開放、静的IPマスカレード、フィルターとかのワードでググってみて設定してください。

一例として YAMAHA ルーターでの設定方法を記載します

必要な情報は以下になります。

  • VPN サーバーが起動している IP アドレス(デフォルト設定のままならPCのプライベートIPアドレスのはず)
    • ここでは仮に 192.168.0.3 とします。
  • VPN サーバーのポート番号
    • ここでは仮に 5555 とします
  • OpenVPN の接続先ポート番号
    • Quest が接続するときに指定するポート番号です
    • ここでは仮に tcp ポートの 11940 とします

「NATディスクリプターの設定」->「静的IPマスカレードの設定」から下図のように設定します。識別番号は他の番号とかぶらなければOKです。

「セキュリティ」 -> 「IPフィルター」-> 「静的フィルター」から下図のように設定します。

Quest での OpenVPN Connect の設定

ルーターでのポート開放の前にいったん
アプリライブラリ -> 右上から提供元不明のアプリを選択 -> 「OpenVPN Connect」を起動 -> 右下の+ボタンを選択 -> 「Upload File」から Download フォルダにあるはずの*_openvpn_remote_access_l3.opvnを import -> ユーザー名とパスワードを入力し VPN に接続します。

VirtualDesktop で PC に接続

OpenVPN Connect アプリを起動したまま VirtualDesktop アプリを起動し、PC に接続できれば成功です。

パフォーマンス

愛知県の実家と東京の自宅間で Latency 70 ms くらい。Bitrate が 78Mbps

下り9.23MB/s = 73.84 Mbps,上り300kbpsくらいの帯域があればできそう

VPNとクラウドの比較

パフォーマンス面では違いははぼなく、(ネットワーク環境を適切に選択すれば)動きが激しくない VR ゲームが遊べる

物理環境的な面では、VPN はサーバーを公開できるようなネットワーク契約・ルーターや PCVR 環境が必要であるが、クラウドVR は Quest さえあればOK

金銭的な面では、VPN の場合は無料、クラウドVRは無料枠を使い切ると 1 時間 200-3oo円位の課金がある

ソフトウェア環境構築面では、VPNの方が楽

セキュリティ面では、自宅のPCにつなげない分クラウドVRの方が安心かなという感じ。クラウドVR + VPN 接続が理想的。

余談

VPN の認証方式をユーザー認証ではなく証明書をつかった認証にしたかったが、サポートしていないという旨のメッセージが表示されてしまった。
どうやら、 SoftEther VPN の安定板ビルド( Webからダウンロードできるビルド)では RSA 証明書認証が制限されいてるようだ。
現在の制限事項 - SoftEther VPN プロジェクト

GitHub から最新のソースコードを拾ってきてビルドすれば証明書認証が使えることは確認できたのでその概要だけ記載します。

クライアント認証に証明書認証を使う場合の手順の概要

  • ソースコードをclone
  • src/Cedar/Server.cbool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c)の返り値をfalseにする
  • ビルド
  • VPN Server を起動し、SoftEther VPN Server Manager で Server に接続し管理者パスワードなど設定
  • SoftEther VPN Server Managerでユーザーを新規作成し、認証方法を固有証明書認証にする
  • 証明書作成ツールを使い、証明書と秘密鍵を作成
  • .opvnファイルの中身を以下のように書き換える
    • auth-user-passをコメントアウト
    • <cert></cert>に証明書をコピペ
    • <key></key>に秘密鍵をコピペ
  • .opvnをQuesでimportし、OpenVPN Connectで読み込ませる

アドカレ的な

次回はlain(@lain_xr)さん / Xの記事です!楽しみです!

GitHubで編集を提案

Discussion