最近Clubhouse流行ってますよね。 そんなClubhouseですが、最近利用者が増えて日本だと夜に接続するとサーバー落ちが頻発するようになりました。
そこでエンジニアがサーバー落ちを防ぐために何をすべきか議論をしている様子を見ていると、
「VPNで海外に接続してみたらどうじゃろ」
という話が出てきました。
なるほど、みんながつないでアクセスを集中しているネットワークに接続しないようにすればいいんですね。
とはいえわざわざVPNのサービスをこのためだけに契約するのもアホらしいですし、中にはEC2で構築してみたという話も出てきました。
エンジニアならAWS使ってVPNサーバー立てたいなとは思いますが、EC2はネットワークのセットアップとか面倒くさそうです。
というわけで今回はAmazon Lightsailを使って簡単に格安でVPNサーバーを立ててみます。
Amazon Lightsailとは?
AWSが提供するVPS(Virtual Private Server)サービスです。
一番安いとなんとたった月額3.5ドルで使うことができるらしいです。
そしてEC2と違いストレージやネットワークなどをパッケージされていることが特徴です。
構築してみた
インスタンスを立てる
まずはAWSにログインします。(アカウント登録してない方はそこからやりましょう)
コンソール画面の検索欄で「lightsail」と打ち込んでlightsailをさがして起動します。

「インスタンスの作成」をクリックします。

インスタンスロケーションをアメリカかイギリスあたりで設定しておきます。
そうなってない場合は「AWSリージョンとアベイラビリティゾーンの変更」をクリックします。

リージョンの選択画面を開いたらリージョンを選択します。 今回はオレゴンを選択します。

インスタンスイメージの選択します。 プラットフォームは「Linux / Unix」、設計図は「OSのみ→Debian9系」を選択します。

インスタンスの初回起動時にVPN実行するスクリプトを設定します。
「起動スクリプトの追加」をクリックします。

コードを入力する欄が表示されるので、以下のスクリプトをコピペします。
インスタンスプランはおそらく3.5ドルのプランが選択されていると思います。

インスタンス名は任意のもので設定します。
その後、「インスタンスの作成」をクリックします。

用意したインスタンスがしばらくして「実行中」と表示されれば無事にインスタンスが立ち上がりました。

静的IPを割り当てる
ネットワーキングタブを選択し、「静的IPの作成」をクリックします。
インスタンスにアタッチされていれば無料で使うことができます。

静的IPを先程作成したインスタンスへアタッチします。
アタッチを完了し、パブリックIPアドレスが表示されたら割当は完了です。

ポートを公開する
インスタンスの管理画面を開き、「ネットワーキング」タブを選択します。
下の方にスクロールしてファイヤーウォールのルールとしてUDP:514とTCP:114を設定します。

デフォルトのパスワードの確認
Lightsailのトップページに戻り、インスタンスのターミナルアイコンをクリックしてブラウザのターミナルを立ち上げます。

sudo /vpn/pritunl default-passwordでVPN管理画面のパスワードを確認します。

pritunlにログイン
https://[設定した静的パブリックIPアドレス]:114/を開き、先程コマンドで確認したユーザー名、パスワードを入れます。
開くときに警告が出ると思いますが無視してアクセスしましょう。

ログインしたらパスワードを変更します。

ユーザーの設定
Usersタブを選択して、Organizationを設定します。

任意のユーザー名、PINを設定します。

サーバーの作成
Serversタブを選択して、Add Serverをクリックします。

任意のサーバー名を設定します。
ポート番号は514、プロトコルはudpとします。

先ほど作成したOrganizationとアタッチしてサーバーを起動させます。

コンソールにログが表示されたらサーバーは起動できています。

設定ファイルをダウンロード
Usersタブを選択して、「Get temporary profile link」をクリックします。

ZIPファイルのダウンロードリンクにあるダウンロードアイコンをクリックします。

ダウンロードしたら展開して、設定ファイルをiPhoneで参照できるようにストレージサービスにアップロードします。
Google Driveにアップロードします。
iPhoneに接続する
Googleドライブアプリを開いて先程保存したファイルの詳細を開いて、「アプリで開く」をタップします。

メニューからOpenVPNを選択します。

OpenVPNが開いたらインポートしたファイルが表示されるので「Add」を選択します。

Usersで設定したユーザー名を入力し、ADDをタップしてVPNの設定を許可します。

Profileを有効にしたらpritunlの初回ログインで設定したパスワードを入力します。

ユーザー設定のときに設定したPINを入力します。

無事に接続できました。 いい感じですね👍

検証
といいたいところですが、このブログを書きながらやっていたらそんなにサーバーが落ちず、普通に音声が聞こえてました。
せっかく、用意したんですけどねw。
でも一応ネットワークのテストをやってみた結果、速度的にはそんなに悪くなかったです。
まぁ1台しかつなげてませんからねw。
