AWSでVPNサーバを構築してPTCGLをプレイする
みなさん VPN が必要になったことはありませんか。最近はリモートワークも増え、セキュリティなどの関係で導入する企業が増えているのではないでしょうか。
セキュリティとは無関係にとにかく VPN が必要な場合もあります。例えば、海外のオンラインゲームをプレイするときなど... ゲームによっては日本国内からのアクセスを制限していることがあり、VPN を利用して海外からのアクセスに見せかけてあげる必要があります。
自分がはまっているゲーム PTCGL もその 1 つ。Pokémon Trading Card Game Live を略して PTCGL、オンラインでポケモンカードができるゲームです。 ポケモンといえば発祥は日本のはずですが、なぜかこのゲームは日本からアクセスできません。プレイするためには VPN が必要です。不思議です...
https://tcg.pokemon.com/en-us/tcgl/
様々な VPN サービスはあれど、快適にお安く使えるものはなかなかありません。 そこでクラウドサービスの AWS を使って任意の国に自分専用の VPN サーバを建ててみます。
概要
本ブログでは AWS 上に SoftEther を利用した VPN サーバの構築手順を紹介します。 画面上で必要なパラメータを入力し、AWS に適用することで手軽に VPN サーバを建てることができます。
VPN へ誰でも接続できる状態になってしまうことを避けるため、アクセス元を特定の IP、今回であれば自宅などのネットワークからのアクセスのみに絞っています。
費用
この VPN サーバを構築すると AWS の利用料金がかかります。 1 日あたりの費用は 0.3 USD ほどで、月に 10 USD ほどかかる計算です。 ただし AWS で構築した VPN はいつでも手軽に削除できるので、使わないときは削除してしまえば費用はかかりません。

SoftEther VPN
本 VPN は筑波大学の研究プロジェクトとして運営されているオープンソース VPN ソフトウェアの SoftEther VPN を利用させて頂いています。開発してくださった登様及び関係者の皆様に感謝申し上げます。
構築手順
事前準備
- AWS アカウントの作成
- CloudFormation テンプレートのダウンロード
- 以下のテンプレートをダウンロードまたはコピーして
aws-vpn.yamlとして保存- リンク: https://gist.github.com/itiB/aws-vpn.yaml
コード内容: aws-vpn.yaml
- 以下のテンプレートをダウンロードまたはコピーして
- 自宅のグローバル IP アドレスを確認
- PTCGL をプレイする端末で https://www.cman.jp/network/support/go_access.cgi などにアクセスし、確認してください
- 表示された IP アドレスをメモしておいてください
CloudFormationスタックの作成
CloudFormation は AWS のサービスの 1 つで、AWS リソースをテンプレートで定義し、一括で作成・更新・削除ができるサービスです。
今回は事前準備にてダウンロードした aws-vpn.yaml のテンプレートを使用します。VPN を作成するために必要なリソースが定義されています。
- CloudFormation コンソールへアクセス
- リージョンを選択
- 画面右上のリージョン選択ボタンから
米国東部(バージニア北部)を選択
- 画面右上のリージョン選択ボタンから
- 「スタックの作成」より「新しいリソースを使用(標準)」を選択

- 「テンプレートの指定」欄で「テンプレートファイルのアップロード」を選択し、事前準備で用意した
aws-vpn.yamlをアップロード、「次へ」
- 「スタックの詳細を指定」にて以下を設定し、「次へ」
- すでに埋まっているパラメータはそのままで問題ありません
パラメータ名 入力内容 備考 スタック名 <任意の名前> e.g. aws-vpnMyHomeIp 事前準備でメモした自宅のIPアドレスを入力 このアドレスからのみVPNを使えるようになります SoftEtherAdminPassword <任意のパスワード> 基本的に使うことはないです。VPN の設定を変更する際に使われます。 SoftEtherHubPassword <任意のパスワード> 基本的に使うことはないです。VPN の設定を変更する際に使われます。 VPNUserName <任意のユーザ名> VPN接続時に使用するユーザ名 VPNUserPassword <任意のパスワード> VPN接続時に使用するパスワード 
- 「スタックオプションの指定」はそのまま「次へ」
- 「確認して作成」画面はパラメータがすべて入力されているかを確認し、「スタックの作成」をクリック

- スタックが完成するまで待つ
- 以下の画面に遷移し、スタックの作成が開始されます
- しばらく待つと設定した論理IDに設定したスタック名、ステータスに
CREATE_COMPLETEと表示され、作成が完了します
- VPN サーバの情報を確認
VPN接続
普段使っているデバイスから VPN サーバに接続してみましょう。 例として普段自分が利用している iPad から接続する例を紹介します。
iPad から接続
設定 → VPN → VPN 構成を追加... で以下の情報を入力。
| 項目 | 入力内容 |
|---|---|
| タイプ | L2TP |
| 説明 | <任意の名前> |
| サーバ | CloudFormation の出力タブにある EIPPublicIp の値 |
| アカウント | CloudFormation の出力タブにある VPNAccessName の値 |
| RSA SecureID | オフ |
| パスワード | VPNUserPassword に入れた値 |
| シークレット | aws-vpn-psk ※CloudFormationのパラメータで VPNPreSharedKey の値を書き換えた場合はその値 |
| すべての信号を送信 | オン |
| プロキシ | オフ |

完了ボタンを押したのちに接続ボタンを押し、PTCGL を起動してプレイできることを確認しましょう。
環境の削除手順
VPN サーバを使わなくなった場合は作成した CloudFormation スタックを削除してください。 aws-vpn のスタックを削除することで VPN サーバが削除され、費用の発生を抑えることができます。

まとめ
無事に接続できたでしょうか。今回は家のグローバル IP アドレスからのみ接続できるように設定しましたが、この IP アドレスは不定期に変わる可能性があります。 もしつながらなくなった際には IP アドレスを調べなおして CloudFormation のスタックを削除、作り直してください。
もし何かわからない、つながらない等あればお気軽にご連絡ください。 よい PTCGL ライフを👍
Tips
EC2インスタンスに入って設定を変更したい
- CloudFormation の
SecurityGroupPublicでコメントアウトされている 22 番ポートを開ける設定を有効にする - CloudFormation の更新
- pem の取得
- CloudFormation の出力タブにある
KeyPairUrlにアクセス - 値の欄に記載されている文字列(トグルボタンをクリックすると表示される)をコピーして、任意の場所に
aws-vpn-key.pemという名前で保存
- CloudFormation の出力タブにある
- キーの権限を変更
chmod 400 aws-vpn-key.pem
- SSH 接続
ssh -i aws-vpn-key.pem ec2-user@ec2-54-86-25-202.compute-1.amazonaws.com
- SoftEther は
/usr/local/vpnserverに配置されています
