はじめに
AWS上のEC2にOpenVPNサーバーを構築してみました。
事前準備すること
- OpenVPNクライアントをインストールしておくこと。
Link: https://openvpn.net/
※本手順はMAC端末にOpenVPNクライアントをインストールしておきました。 - EC2 OS:
Amazon Linux 2 - セキュリティグループに使うポートはデフォルトの
UDP1194を使わず、代わりにUDP23333とTCP443を使う-
TCP443: VPN接続用ポート -
UDP23333: VPN接続用ポート -
UDP1194: 使わない -
TCP443: 管理者ログイン用ポート(IP制限する)
-
ステップ1: EC2用のIAM Roleを作成する
-
IAM→ロール→ロールを作成をクリックする
-
AWSのサービスをクリックして、ユースケースにEC2を選択する
-
AmazonSSMFullAccessを選択した上、次へをクリックする
-
ロール名に名前を入力の上、作成する
- ロールが作成されたことを確認することができた
ステップ2: VPCを作成する
- 作成するリソース:
VPCなど - 名前タグの自動生成:
vpn-vpc-01 - IPv4 CIDRブロック:
10.0.0.0/16 - IPv6 CIDRブロック:
IPv6 CIDRブロックなし - テナンシー:
デフォルト
- AZの数:
2 - Public Subnetの数:
2 - Private Subnetの数:
2 - NAT Gateway:
なし - VPC Endpoint:
なし
ステップ3: セキュリティグループを作成する
基本的な詳細
- セキュリティグループ名:
ec2-sg - 説明:
ec2-sg - VPC: 上記ステップ2で作られたVPCを選択する
- インバウンドルール
| タイプ | プロトコル | ポート範囲 | ソース | 説明‐オプション |
|---|---|---|---|---|
| HTTPS | TCP | 443 | Anywhere: 0.0.0.0/0 | なし |
| カスタムUDP | UDP | 23333 | Anywhere: 0.0.0.0/0 | なし |
| カスタムTCP | TCP | 943 | カスタム: 管理者のIP | なし |
- アウトバウンドルール
| タイプ | プロトコル | ポート範囲 | ソース | 説明‐オプション |
|---|---|---|---|---|
| すべてのトラフィック | すべて | すべて | カスタム: 0.0.0.0/0 | なし |
ステップ4: EC2を作成する
-
EC2→インスタンスを起動をクリックする
- 名前とタグ:
vpn-server - アプリケーションおよびOSイメージ:
Amazon Linux 2
- ネットワーク設定
- VPC: 上記ステップ2で作られたVPCを選択する
- Subnet: 任意のPublic Subnetを選択する
- パブリックIPの自動割り当て:
有効化にする - セキュリティグループ:
既存のセキュリティグループを選択するをチェック→上記ステップ3で作られたVPCを選択する
- キーペア(ログイン): デフォルト値の
キーペアなしで続行を選択する
※ EC2のSSMFullAccessのセッションマネージャー機能を用いてログインするため、キー認証ではキーペアなしで続行を選択する
- 高度なネットワーク設定
※ 下記の図のようにデフォルト値のままにする
- ストレージを設定
※ 下記の図のようにデフォルト値のままにする - 高度な詳細
- IAMインスタンスプロフィール: 上記ステップ1で作られたIAMロールを選択する
※ 他の設定は下記の図のようにデフォルト値のままにする
- IAMインスタンスプロフィール: 上記ステップ1で作られたIAMロールを選択する
- EC2インスタンスが作成されたことを確認することができた
-
セッションマネージャーを使ってインスタンスに接続する
ステップ5: EC2上にOpenVPNをインストールする
-
Rootユーザに切り替える
-
openvpn-asをダウンロードする。下記のコマンドを実行する
yum -y install https://as-repository.openvpn.net/as-repo-amzn2.rpm
-
openvpn-asをインストールする。下記のコマンドを実行する
yum -y install openvpn-as
- 下記のような実行結果が出力されたことを確認する
++++++++++++++++++++++++++++++++++++++++++++++
Access Server 2.12.1 has been successfully installed in /usr/local/openvpn_as
Configuration log file has been written to /usr/local/openvpn_as/init.log
Access Server Web UIs are available here:
Admin UI: https://10.0.14.122:943/admin
Client UI: https://10.0.14.122:943/
To login please use the "openvpn" account with "xxxxxx" password.
(password can be changed on Admin UI)
+++++++++++++++++++++++++++++++++++++++++++++++
- 接続確認をするため、EC2のPubic IPを用いて、上記ログ内のPrivate IPに置換する。例:
- As-Is: https://10.0.14.122:943/admin
- To-Be: https://3.233.237.237/admin
※Public IPに置換する
※Public IPの確認方法は下記の図のようにインスタンスのコンソール画面を確認してください。
- 上記のリンクをアクセスし、ユーザー名とPWを入力の上、サインインしてください
-
Configuration→Network Settingを開き、下記のように設定を変更する- Hostname or IP Address: EC2のパブリックIPを入力する
- Number of UDP daemons: 1
- UDP Port number: 23333
※その他の設定は変更なし
-
User Management→User Permissionsを開き、下記のようにユーザーを追加する
※Allow Auto-loginにチェックを入れる
ステップ6: OpenVPNのクライアント側の接続を確認する
-
UsernameとPasswordに自分が設定したものを入力する -
Import autologin profileにチェックを入れる -
Importを押下する
- 下記の図のように
CONNECTEDが表示されれば、接続成功
































