EPISODE 02

モバイルワークを試行錯誤するブログ

Amazon LightsailにSoftEther VPNを設定する

1年半ほど前にAWSのEC2にSoftEther VPNを設定して、しばらく運用してきたけど、最近Amazon Lightsailの利用料が値下がりしたので、Lightsailに移行してみた。以下手順とか所感をメモしておく。

Amazon Lightsailとはなんなのか

https://lightsail.aws.amazon.com/

ざっくり言うとサーバの立ち上げとか運用が簡略化されたVPSといったところ。EC2のように細かな設定は不要(逆にいえばできない)で簡単に仮想サーバを立ち上げることができる。費用は$3.5〜と安価で、ディスク利用料やインターネット接続料も含まれるためあれこれ考えずに利用開始できるのが特徴。

利用料の概要

月額固定で時間課金はなく、$3.5/月から利用できる。サーバスペックごとの利用料金は以下の通り。


表記の通り月額固定費用が発生するので、毎月数分から数時間の利用であればEC2を使った方が安価になる可能性はある。今回は24時間365日立ち上げっぱなしのVPNなのでLightsailが向いているはず。

SoftEther VPN設定手順の概要

1. Amazon Lightsail(AWS)のアカウントを取得する

2. Lightsailのインスタンスを立ち上げる

3. 静的IPとファイアウォールの設定を行う

4. SSHで接続し、VPSでSoftEther VPNの設定を行う

5. クライアントにVPNの設定を行う

1.AWSのアカウントを取得する

これは取得してある前提。登録にクレジットカードは必要だけど、アカウントを取得するだけであれば費用は発生しないので作っておいて損はない。

2.Lightsailのインスタンスを立ち上げる

こちらはブラウザでLightsailのコンソールから設定する。

今回設定したインスタンスは以下の通りで、ブラウザからポチポチ作業すると数分で利用可能になる。

インスタンスタイプ:512 MB RAM、1 vCPU、20 GB SSD

インスタンスロケーション:東京、ゾーン A (ap-northeast-1a)

プラットフォーム:Linux/Unix

設計図の選択:OSのみAmazon Linux

3.静的IPとファイアウォールの設定を行う

これもブラウザを使った管理画面から設定する。

ネットワーキングのタブから、静的IPをアタッチするとインスタンスのグローバルIPアドレスが固定された形で付与される。今回IPアドレスは静的IPにしたけど不要であれば設定しなくても利用できる。

ファイアウォールの設定は以下の通り。

アプリケーション プロトコル ポート範囲
SSH TCP 22
Custom UDP 500
Custom UDP 4500

4.SSHで接続し、VPSでSoftEther VPNの設定を行う

インスタンスにはブラウザからSSHで接続することもできるけど、あまり使い勝手が良くない(反応が遅い、コピペが面倒臭い)ため、SSHクライアントを使って接続した。

これもブラウザからプライベートキーをダウンロードしてきてSSHクライアントに設定するだけ。SSHのポートは22番、ユーザ名はec2-userで接続できる。
MacやWIndowsのSSHクライアントの他、iPad、iPhone用のSSHクライアント「Prompt2」でも問題なく動作した。

Amazon Linux AMIのバージョンはAmazon Linux AMI release 2018.03で、ログインした後の手順は前回のエントリーのサーバ設定手順以降と同じ。SoftEther VPNのバージョンも同じ。


5.クライアントの設定

これも前回同様。試したクライアントは、以下の通り。全てのOSで特別なアプリは利用せずにOSに設定するだけで利用できる。

クライアント端末 OS
iPhone XS Max iOS 12.0
iPad Pro 10.5 iOS 12.0
MacBook Pro madOS 10.14 Mojave
HP Folio G1 Windows 10 Pro

以上、普通にLinuxコマンドが使えればLightsailアカウントの作成からクライアントのVPN設定まで1時間もあれば完了するはず。

費用について

AWSのEC2は安価なインスタンスでも立ち上げっぱなしにすると3,000円/月程度の費用が発生するけど、Lightsailは400円/月程度で使えるのは大きなメリット。

インスタンスタイプの選択をどうするかは少し悩んだけど、とりあえず一番安価なものにして様子見の方針とした。後からインスタンスタイプを変更するのは面倒っぽいが、無駄にリソース使うのも勿体ないので。

実際のところ4台のクライアントを接続してYouTubeやiCloudの写真、動画の同期を行ったところ100MB/分程度のデータ転送であれば最大でもCPUの使用率は最大で30%程度、普通にブラウザやSNS、チャット、メールを使う分には3%も消費していないので、一番安価なプランでも十分な印象。

インスタンスの利用料金の他にインターネット接続料金も発生するけど、数十クライアントが同時接続とか、一度に大量のデータを流すような使い方をしない限りインスタンス料金に含まれる転送量(1TB/月)を超過するようなことはなさそう。

当然利用するユーザ数に応じた課金もないため、家族や友人分も追加してしまえば、ひとり当たりに発生する費用は安価になるので、下手なVPNサービスを契約するよりも安価に運用できるはず。接続ログも自分で管理できるのもメリットのひとつか。

運用について

ユーザの作成やユーザ別の利用状況を確認するのに、わざわざSSHで接続して作業しなければいけないのは少し面倒な感じ。ユーザが自分でサインアップしてユーザ登録をしたり、利用状況を確認したりするような運用ができれば、使い方の幅は広がりそうなので、その辺は別途UIを作り込むなり、ある程度の工夫は必要。

サーバ管理に関しては立ち上げ後2週間くらい連続で使ってみたけど、特に大きな負荷がかかったりエラーは出ていない。ただしセキュリティパッチを当てたり想定外のトラフィックが流れた時のスケーリング設計などは通常の仮想サーバ同様にメンテナンスは必要になるかもしれない。

ユースケース

自宅のインターネット回線やキャリアのネットワークを使うときはいいけど、よくわからないWi-Fiスポットや、中国などフィルタリングされているネットワークをスルーするなど一般的なVPNのユースケースとしてももちろん利用できる。

静的IPの設定は中国国内でGFWを超えるときに利用する場合などIPアドレスが固定されない方が使い勝手が良い場合は固定せずに、SaaSやAWSのVPCに接続する際のIP制限などで利用する場合は固定する、など想定する用途で使い分けてもいい。

試してないけど別のRegionにインスタンスを立ち上げれば、その国でしか見られないサイトやサービスを使えるようになるかもしれない。当然逆も可能で日本のRegionに立ち上げておけば、海外にいるときに国外からアクセス制限のかかったサイトも閲覧可能になる。

企業などで利用するiOS端末で特定のアプリのみVPNを通し、その他のアプリは通常にインターネット接続させるようなユースケースでVPNへの接続をアプリ毎に自動化する場合、別途MDMを導入してPerApp VPNを設定する。こうすることで、SaaSアプリやAWSに構築したVPCにIP制限を設定して接続できる。