VPNを使ってNAT越えswitchをプレイする方法

自宅外でよく使う某wifiではswitchのネットプレイができなかったのでそれを何とかできるようにする方法。

問題点

  • wifiの接続方式が合っていない
  • P2PがNATでブロックされている

wifiの接続方式

switchは暗号化方式が「WPA(TKIP)」または「WPA2(TKIP)」に対応していないようだ。

support.nintendo.co.jp


これはwindows10のモバイルホットスポットを使って、
wifi------PC(ルーター化)------switch
とすることでなんとかなる。

P2P通信ができない

これでテトリス99やソフトデータの更新などはできるようになる。 しかし、スマブラのネット対戦をしようとするとエラーが起きて全くプレイできない。 どうやらP2P通信がNATによって遮断されているようで、これが原因となっていることがわかった。


思いついた解決方法はVPNで回避する」これである。 ただ問題はVPNサーバーをどこに建てるかである。

  1. 自宅wifiルーターをVPNServerにする
  2. 自宅PCをVPNServerにする
  3. Cloud vmをVPNServerにする

1.自宅wifiルーターをVPNServerにする

どうやら個人用のwifiルーターの中にはVPNServerの機能付きのやつがあるっぽい。 io-dataのやつが手頃でおすすめ。 VPN接続には固定IPアドレスが必要だが、iobb.netを使えば変動IPアドレスでも大丈夫。


しかしこれにも難点がある。 マンションで一括のブロードバンドに加入していると使えない。 どうやらwifiルーターに何らかのグローバルIPアドレスが割り当てられていないと無理な模様。 残念ながら自宅のwifiルーターにはプライベートIPアドレスしか割り当てられておらず、 この方法は使えなかった。 折角wifiルーター買ったのに。。。
固定IPアドレスはブロードバンドの契約のオプションについてたりする。 けど月幾らかコストかかるし、セキュリティが少し不安だったりで断念。

参考にした記事

VPNサーバ機能付きWi-Fiルータはどれが良いのか 2019年春夏

2.自宅PCをVPNServerにする

色々方法はありそうだが、そこまでネット環境の構築に詳しくないので SoftEtherというものを使うことにした。

ja.softether.org

これを使用して、自宅PCにVPNServerを設置、ノートPCにVPNClientを入れて

自宅PC(VPNServer)-----自宅ルーター-----マンションNAT-----www -----wifi-----PC(VPNClient,モバイルホットスポット)-----switch

SoftEtherにあるVPNAzureを使えばServerにプライベートIPアドレスしかなくても VPN接続ができた。理由はよくわからん。 これでswitchを繋げることができる。
ややこしい。 しかしこの場合、自宅PCを常に起動させておかないといけない。 電力消費が心配。 もし省電力のVPNServer用のPCを置けるならこれでもいい。

参考にした記事

PC 間接続 VPN - SoftEther VPN プロジェクト

3.Cloud vmをVPNServerにする

最終的に落ち着いたのがこの方法である。 Cloud vmにもいくつか有料だったり無料だったり種類がある。 自分が使用したのはGoogle Cloud Platform。 上手いこと使えば無料でCloud vmを使える。 UbuntuをVPNServerとしてこれにSoftEtherを入れる。 注意しないといけないのがSecureNAT機能を有効にする必要があること。

Cloud vm(VPNServer)-----www-----wifi-----PC(VPNClient,モバイルホットスポット)-----switch

これでswitchで対戦ができるようになった。 ただ、Cloud vmからネットに繋いでいるような感じになるので、かなり変なグローバルIPアドレスになる。
あと割とラグい。 これはどうしようもないな。

参考にした記事

GCP の無料枠  |  Google Cloud Platform の無料枠  |  Google Cloud

GCP無料枠を使ってSoftEther VPN Serverを立ち上げる - Sunday morning

Ubuntu上でSoftEther VPN Server構築 - Qiita

GCPとSoftEther VPNで固定IPゲートウェイ環境を作る | 二代目俺のメモ