Amazon LightsailでiPhoneとIPSec接続するVPNサーバをワンライナーで構築する
先日とある事情により
先日、FacebookやTwitterに繋がらない地域に旅行をしました。この際にVPN接続するサーバを構築したのでメモとして書き記します。
Amazon Lightsail
Amazon Lightsailは、AWSが提供するVPSサービスです。細かいことを考えずにサクッと利用できます。今回は、CLIからコマンドを叩いて、VPNサーバを構築したいと思います。
セットアップコマンド
さて、ワンライナーという釣りになりますが、以下のようなコマンド1発でVPNサーバを構築できます。シェアキー、ユーザ名、パスワードは各自設定してください。
$ aws lightsail create-instances \ --instance-names test \ --blueprint-id ubuntu_16_04 \ --bundle-id nano_1_0 \ --region us-east-1 \ --availability-zone us-east-1b \ --user-data "wget https://git.io/vpnsetup -O vpnsetup.sh && sudo VPN_IPSEC_PSK='mykey' VPN_USER='myname' VPN_PASSWORD='mypass' sh vpnsetup.sh" $ aws lightsail get-instance-state \ --instance-name test \ --region us-east-1 { "state": { "code": 16, "name": "running" } }
作成したインスタンスのIPアドレスを確認します。
$ aws lightsail get-instance \ --instance-name test \ --region us-east-1 \ --query 'instance.publicIpAddress' \ --output text XXX.XXX.XXX.XXX
次に、VPNセッションのためのポートを空けます。ここでは、UDPで500と4500を空けました。
$ aws lightsail open-instance-public-ports \ --instance-name test \ --region us-east-1 \ --port-info fromPort=500,toPort=500,protocol=UDP { "operation": { "status": "Succeeded", ... } } $ aws lightsail open-instance-public-ports \ --instance-name test \ --region us-east-1 \ --port-info fromPort=4500,toPort=4500,protocol=UDP { "operation": { "status": "Succeeded", ... } }
iPhoneの設定
最後にiPhone側の設定をします。設定>一般からVPNを選択します。IPアドレス、ユーザ名、パスワード、シークレット(シェアキー)を設定してください。接続中になれば成功です。
まとめ
これで、FacebookやTwitterが様々な理由によりブロックされていても簡単に繋げることができます。ただし、これは先々週のお話です。今後もVPN接続ができるかどうかは分かりません。ぜひ皆さんからのレポートをお待ちしております。