概要
クライアントVPNエンドポイントを使用すると、AWSの任意のリージョンからインターネットに出ていくことができます。そうする必要があったので試しました。
設定方法
AWS環境の前準備
以下を作っておきます
- VPC
- インターネットゲートウェイ
- インターネットゲートウェイへ
0.0.0.0/0
の経路を持ったルートテーブル - ↑のルートテーブルを紐付けたパブリックサブネット
- すべてのトラフィックを許可したSecurityGroup
オレオレ証明書の作成
サーバ証明書とクライアント証明書を、AWSクライアントVPN管理者ガイドの手順に従ってeasyrsa3で作ります。
# インストールと初期化
git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3
./easyrsa init-pki
# CA局作成
./easyrsa build-ca nopass
# サーバー証明書と鍵のペア作成
./easyrsa build-server-full server nopass
# クライアント証明書と鍵のペア作成
./easyrsa build-client-full client1.domain.tld nopass
# サーバー証明書をACMへアップロード
aws acm import-certificate --certificate fileb://pki/issued/server.crt --private-key fileb://pki/private/server.key --certificate-chain fileb://pki/ca.crt
クライアントVPNエンドポイントの作成
注意点として、クライアント IPv4 CIDRはVPCのサブネットと手元のパソコンとかぶらなければ適当で良いと思われるけど/22
にしないと怒られます。
クライアントVPNエンドポイントは「保留中-関連付け」で止まるので、「関連付け」タブから「関連付け」ボタンを押して最初に作成したサブネットを選んで関連付けます。
続いて、インターネットへのアクセス許可と、インターネットへの経路を追加します
ここまででAWS側の設定は完了です。
クライアントPCの準備
続いてクライアントPCの設定をしていきます。
クライアントVPNへの接続用クライアントのインストール
クライアントVPNへの接続用クライアントがこちらからダウンロードできます。この手順の通りダウンロードしてインストールします。
クライアント用設定ファイルのダウンロードと修正
以下の「クライアント設定のダウンロード」から設定ファイルをダウンロードします。
ファイルを開いて以下を修正します。
client
dev tun
proto udp
remote mogemogemoge.cvpn-endpoint-xxxxxxxxxxxxxxx.prod.clientvpn.us-east-1.amazonaws.com 443 # ここは頭に適当な文字列を入れます
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
cert /path/to/easy-rsa/easyrsa3/pki/issued/client1.domain.tld.crt
key /path/to/easy-rsa/easyrsa3/pki/issued/client1.domain.tld.key
<ca>
-----BEGIN CERTIFICATE-----
...
クライアントに設定ファイルを登録して接続します。
接続ボタンを押してしばらくすると「接続済み。」となりますので、このあとのインターネット接続は、VPNクライアントエンドポイントがあるリージョンを経由した接続となります。