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 を利用させて頂いています。開発してくださった登様及び関係者の皆様に感謝申し上げます。

ja.softether.org

構築手順

事前準備 

  1. AWS アカウントの作成
  2. CloudFormation テンプレートのダウンロード
  3. 自宅のグローバル IP アドレスを確認

CloudFormationスタックの作成

CloudFormation は AWS のサービスの 1 つで、AWS リソースをテンプレートで定義し、一括で作成・更新・削除ができるサービスです。 今回は事前準備にてダウンロードした aws-vpn.yaml のテンプレートを使用します。VPN を作成するために必要なリソースが定義されています。

  1. CloudFormation コンソールへアクセス
  2. リージョンを選択
    • 画面右上のリージョン選択ボタンから 米国東部(バージニア北部) を選択
  3. 「スタックの作成」より「新しいリソースを使用(標準)」を選択
  4. 「テンプレートの指定」欄で「テンプレートファイルのアップロード」を選択し、事前準備で用意した aws-vpn.yaml をアップロード、「次へ」
  5. 「スタックの詳細を指定」にて以下を設定し、「次へ」
    • すでに埋まっているパラメータはそのままで問題ありません
    • パラメータ名 入力内容 備考
      スタック名 <任意の名前> e.g. aws-vpn
      MyHomeIp 事前準備でメモした自宅のIPアドレスを入力 このアドレスからのみVPNを使えるようになります
      SoftEtherAdminPassword <任意のパスワード> 基本的に使うことはないです。VPN の設定を変更する際に使われます。
      SoftEtherHubPassword <任意のパスワード> 基本的に使うことはないです。VPN の設定を変更する際に使われます。
      VPNUserName <任意のユーザ名> VPN接続時に使用するユーザ名
      VPNUserPassword <任意のパスワード> VPN接続時に使用するパスワード
  6. 「スタックオプションの指定」はそのまま「次へ」
  7. 「確認して作成」画面はパラメータがすべて入力されているかを確認し、「スタックの作成」をクリック
  8. スタックが完成するまで待つ
    • 以下の画面に遷移し、スタックの作成が開始されます
    • しばらく待つと設定した論理IDに設定したスタック名、ステータスに CREATE_COMPLETE と表示され、作成が完了します
  9. VPN サーバの情報を確認
    • スタックの詳細画面にある「出力」タブをクリック
    • EIPPublicIp に表示されている IP アドレスが VPN サーバの IP アドレスです
    • VPNAccessName に表示されている名前で VPN に接続できます

VPN接続

普段使っているデバイスから VPN サーバに接続してみましょう。 例として普段自分が利用している iPad から接続する例を紹介します。

iPad から接続

設定 → VPNVPN 構成を追加... で以下の情報を入力。

項目 入力内容
タイプ 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インスタンスに入って設定を変更したい

  1. CloudFormation の SecurityGroupPublicコメントアウトされている 22 番ポートを開ける設定を有効にする
  2. CloudFormation の更新
  3. pem の取得
    • CloudFormation の出力タブにある KeyPairUrl にアクセス
    • 値の欄に記載されている文字列(トグルボタンをクリックすると表示される)をコピーして、任意の場所に aws-vpn-key.pem という名前で保存
  4. キーの権限を変更
    • chmod 400 aws-vpn-key.pem
  5. SSH 接続
    • ssh -i aws-vpn-key.pem ec2-user@ec2-54-86-25-202.compute-1.amazonaws.com
  6. SoftEther/usr/local/vpnserver に配置されています

SoftEther の詳細な操作方法は 公式ドキュメント を参照してください。