はじめに
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
が表示されれば、接続成功