Introduction
仕事の案件で日本国外からのアクセスを拒否する AWS サーバの検証があった。
サーバの構築は別チームが担当したのだが、結合試験として自チームが作成したアプリがサーバにアクセスした際、日本国外からアクセスした時の挙動をテストする必要に駆られたわけで。
当然、テストのために海外出張なぞ出来るわけないので、VPN サーバを構築し、VPN 経由でアプリをサーバに接続することでテストすることにした。
その際、 VPN サーバを構築した際の手順をメモする。
How to use?
最初は OSS の StrongSwan を使って構築しようとした、何をどうやっても駄目だった。
IKEv2 で構築を目指したのが駄目だったのかもしれない。
吹っ切れて、docker で構築する手順を探していたら下記がビンゴ。
この記事は AWS を想定しているわけはないが、特に問題なし。
使っている VPN サーバは SoftEther。
1. インスタンスの立ち上げ
最小構成で十分なので
- t2.micro
- Amazon Linux 2023 AMI
- x86_64
- 8GB EBS
を選択。
リージョンは日本国外なら何でもいいので 米国 (バージニア北部) を選択。
2. セキュリティグループの設定
VPN の通信に必要なポートの開放を行う
項目 | プロトコル | 用途 |
---|---|---|
500 | UDP | IKE |
450 | UDP | IPSec |
1194 | UDP | OpenVPN |
1701 | TCP | L2TP |
5555 | TCP | SoftEther |
3. docker のインストールと起動
EC2 Instance Connect からさくっとインスタンスに接続。
1 | $ sudo yum update -y && sudo yum -y install docker && sudo systemctl start docker && sudo systemctl enable docker |
以上。
ユーザ名やパスワード、事前共有鍵 (Pre-Shared Key、PSK) は適宜変更する。
4. 接続
Windows でさくっと検証。
iPhone でも使えることは確認済み (仕事で)。
VPN 接続を追加する をクリック。
項目 | 値 |
---|---|
VPN プロバイダー | Windows (ビルトイン) |
接続名 | 任意の値 |
サーバ名またはアドレス | AWS のインスタンスの IP または取得した FQDN |
VPN の種類 | 事前共有キーを使ったL2TP/IPSec |
事前共有キー | psk の値 |
サインイン情報の種類 | ユーザ名とパスワード |
ユーザ名 (オプション) | user の値 |
パスワード (オプション) | password の値 |
設定値を入力し、保存ボタンを押下。
追加した接続設定が表示される。
接続ボタンを押下すると 接続済み になる。
5. 状況の確認
VPN を経由していればアクセス先からみえる接続元の IP が変化している筈である。
下記のように接続元が北米に切り替わったことがわかる。