Amazon Lightsailで格安のVPNサーバーを構築してみた

最近Clubhouse流行ってますよね。 そんなClubhouseですが、最近利用者が増えて日本だと夜に接続するとサーバー落ちが頻発するようになりました。

そこでエンジニアがサーバー落ちを防ぐために何をすべきか議論をしている様子を見ていると、

VPNで海外に接続してみたらどうじゃろ」

という話が出てきました。

なるほど、みんながつないでアクセスを集中しているネットワークに接続しないようにすればいいんですね。

とはいえわざわざVPNのサービスをこのためだけに契約するのもアホらしいですし、中にはEC2で構築してみたという話も出てきました。

エンジニアならAWS使ってVPNサーバー立てたいなとは思いますが、EC2はネットワークのセットアップとか面倒くさそうです。

というわけで今回はAmazon Lightsailを使って簡単に格安でVPNサーバーを立ててみます。

Amazon Lightsailとは?

AWSが提供するVPS(Virtual Private Server)サービスです。

一番安いとなんとたった月額3.5ドルで使うことができるらしいです。

そしてEC2と違いストレージやネットワークなどをパッケージされていることが特徴です。

aws.amazon.com

構築してみた

インスタンスを立てる

まずはAWSにログインします。(アカウント登録してない方はそこからやりましょう)

aws.amazon.com

コンソール画面の検索欄で「lightsail」と打ち込んでlightsailをさがして起動します。

f:id:KMiura:20210205230551p:plain

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

f:id:KMiura:20210205230738p:plain

インスタンスロケーションをアメリカかイギリスあたりで設定しておきます。

そうなってない場合は「AWSリージョンとアベイラビリティゾーンの変更」をクリックします。

f:id:KMiura:20210205231158p:plain

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

f:id:KMiura:20210205231455p:plain

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

f:id:KMiura:20210205231849p:plain

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

「起動スクリプトの追加」をクリックします。 f:id:KMiura:20210205232241p:plain

コードを入力する欄が表示されるので、以下のスクリプトをコピペします。

インスタンスプランはおそらく3.5ドルのプランが選択されていると思います。

f:id:KMiura:20210205233532p:plain

インスタンス名は任意のもので設定します。

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

f:id:KMiura:20210205234412p:plain

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

静的IPを割り当てる

ネットワーキングタブを選択し、「静的IPの作成」をクリックします。

インスタンスにアタッチされていれば無料で使うことができます。

f:id:KMiura:20210205235154p:plain

静的IPを先程作成したインスタンスへアタッチします。

アタッチを完了し、パブリックIPアドレスが表示されたら割当は完了です。

f:id:KMiura:20210205235818p:plain

ポートを公開する

インスタンスの管理画面を開き、「ネットワーキング」タブを選択します。

下の方にスクロールしてファイヤーウォールのルールとしてUDP:514TCP:114を設定します。

f:id:KMiura:20210206001037p:plain

デフォルトのパスワードの確認

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

f:id:KMiura:20210206001454p:plain

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

f:id:KMiura:20210206001615p:plain

pritunlにログイン

https://[設定した静的パブリックIPアドレス]:114/を開き、先程コマンドで確認したユーザー名、パスワードを入れます。

開くときに警告が出ると思いますが無視してアクセスしましょう。

f:id:KMiura:20210206002148p:plain

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

f:id:KMiura:20210206002837p:plain

ユーザーの設定

Usersタブを選択して、Organizationを設定します。

f:id:KMiura:20210206003128p:plain

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

f:id:KMiura:20210206003608p:plain

サーバーの作成

Serversタブを選択して、Add Serverをクリックします。

f:id:KMiura:20210206003820p:plain

任意のサーバー名を設定します。

ポート番号は514プロトコルudpとします。

f:id:KMiura:20210206004232p:plain

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

f:id:KMiura:20210206004801p:plain

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

f:id:KMiura:20210206004849p:plain

設定ファイルをダウンロード

Usersタブを選択して、「Get temporary profile link」をクリックします。

f:id:KMiura:20210206010526p:plain

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

f:id:KMiura:20210206011117p:plain

ダウンロードしたら展開して、設定ファイルをiPhoneで参照できるようにストレージサービスにアップロードします。

Google Driveにアップロードします。

iPhoneに接続する

それではiPhoneVPNに接続します。

Googleドライブアプリを開いて先程保存したファイルの詳細を開いて、「アプリで開く」をタップします。

f:id:KMiura:20210206015917p:plain

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

f:id:KMiura:20210206020018p:plain

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

f:id:KMiura:20210206020813p:plain

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

f:id:KMiura:20210206020908p:plain

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

f:id:KMiura:20210206021341p:plain

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

f:id:KMiura:20210206021619p:plain

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

f:id:KMiura:20210206022012p:plain

検証

といいたいところですが、このブログを書きながらやっていたらそんなにサーバーが落ちず、普通に音声が聞こえてました。

せっかく、用意したんですけどねw。

でも一応ネットワークのテストをやってみた結果、速度的にはそんなに悪くなかったです。

まぁ1台しかつなげてませんからねw。

f:id:KMiura:20210206023710p:plain