余ったPCをVPNサーバにしてAndroidでPCゲームをしてみる

#はじめに
AndroidでPCゲームがしたい！！
そんな夢を叶えてくれるのが[SteamLink](https://store.steampowered.com/steamlink/about/?l=japanese)．

しかしSteamLinkは同一ネットワーク内，所謂ローカルIPの末尾以外が同じ相手でしか使用できません．
そこで外部ネットワーク（自宅以外のWiFiなど）から接続するために**VPN（Virtual Private Network）**を使います．

家に昔使っていたデスクトップPCが余っていたので今回はUbuntu18.04をインストールしてサーバとしました．

本記事は下記の記事を参考に躓いた点を追記していきます．

- [自分だけのVPNサーバを作る！Ubuntu 18.04 に SoftEther VPN Serverをインストール](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)
- [ubuntu18 に softether vpn をインストールして android から繋いでみる](https://wwld.jp/2019/03/17/softether.html)


#使用環境
|    |       サーバ用PC | ゲーム実行用PC | Android |
|:---:|:----------------:|:----------:|:-------:|
| OS  | Ubuntu18.04LTS | Windows10 | Android 9 |
| CPU | i7-4770 | Ryzen 3900X | Snapdragon845 |
| RAM | 24GB| 32GB | 6GB |

+　これらを繋ぐルータ（LAN）

#使用ソフト・アプリケーション
- サーバ
    - [SoftEther VPN](https://ja.softether.org/)
- ゲーム実行用PC
    - Steam
- Android
    - SteamLink 

#導入方法
VPNサーバの導入は[自分だけのVPNサーバを作る！Ubuntu 18.04 に SoftEther VPN Serverをインストール](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)を元に追記したいと思います。


##makeの追記
[参考記事](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)のとおりコピペしてしまうとvpnserverというファイルができてしまい，困惑するかもしれません．一度上の階層に移動し，解凍したフォルダを直接移動するという点が注意です．

```
$ cd vpnserver/
$ make
 ライセンスを読んで、同意するなら `1` と `Enter` を数回入力
$ cd ..
　--追記　解凍したフォルダごと移動することに注意
$ sudo mv vpnserver /usr/local
$ cd /usr/local/vpnserver/
$ sudo chmod 600 *
$ sudo chmod 700 vpncmd
$ sudo chmod 700 vpnserver
```

##Port開放の追記
[参考記事](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)内ではファイアウォールの設定とPort開放が混同されていると感じましたので，ここでは分けて説明します．

- Port
    - LAN内のプロトコル（ルール）を制御する門のようなもの．ネットワークに作用する．
    - 本記事においてはルータの設定に関係する．
- ファイアウォール
    - コンピュータを守るための門のようなもの．自身（コンピュータ）に作用する．
    - 本記事においてはVPNサーバに関係する．

[参考記事](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)に記載されているufw(Uncomplicated FireWall)コマンドはファイアウォールの設定です．
VPNを実現するためには，ファイアウォールの設定とルータのポート開放も必要になります．ルータのポート開放については各ルータによって異なるため，ご自身で調べていただけると幸いです．ポート開放をするにあたってVPNサーバのローカルIPを固定する必要があることにご注意ください．

##開放するPort番号
- TCP
    - 5555 :  デフォルトのリスナーポート
    - 443 :  デフォルトのリスナーポート
    - 992 :  デフォルトのリスナーポート
- UDP
    - 1194 :  OpenVPNを使う場合
    - 500 :  L2TP/IPsecを使う場合
    - 4500 :  L2TP/IPsecを使う場合

以降は[参考記事](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)のとおり導入してください．

##Deamonの登録
Linuxでは常駐プロセスのことをデーモン(deamon)といいます．

```
$ sudo /usr/local/vpnserver/vpnserver stop
$ sudo vi /etc/systemd/system/vpnserver.service
```

viエディタが起動するのでaキーで入力モードにし，以下を入力します．

```
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
[Install]
WantedBy=multi-user.target
```
ESCを押した後:wqで保存します．

```
$ sudo systemctl daemon-reload
$ sudo systemctl enable vpnserver.service
$ sudo systemctl start vpnserver.service

```

#AndroidからVPNサーバへ繋ぐ
1. 設定からVPNの設定を探す．
2. VPNの設定を追加し名前を適当につける．
3. タイプを`L2TP/IPSec PSK`にする．
4. サーバアドレスはグローバルIPを入力
5. IPsec事前共有キーはVPNサーバで設定した共通キーを入力
6. 登録したユーザ名とパスワードをそれぞれ入力
7. 接続

繋がらないときはPort開放やVPNサーバのファイアウォール設定，入力間違いなどを確認してみてください．
繋がった場合，通常どおりSteamLinkを起動すると同一LAN内のゲーム実行用PCが認識されるはずです．

#まとめ
SoftEther VPNを使ってUbuntu18.04でVPNサーバを建てました．
VPNサーバを利用するためにはPort開放とファイアウォール設定の二つが必要です．
Port開放を行う前にVPNサーバのローカルIPを固定する必要があります．
接続にはグローバルIPを使います．

これでAndroidでいつでもPCゲームができるようになりました！
もちろんPCゲーム以外の用途でも利用可能です．
最後にもう一度参考にした記事を記載します．

***参考記事***

- [自分だけのVPNサーバを作る！Ubuntu 18.04 に SoftEther VPN Serverをインストール](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)
- [ubuntu18 に softether vpn をインストールして android から繋いでみる](https://wwld.jp/2019/03/17/softether.html)