0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロキシを経由してClientVPNエンドポイントに接続ができないときのチェックポイント

Last updated at Posted at 2025-04-09

はじめに

閲覧ありがとうございます、NTTデータ先端技術の@S-takahashi1129です。
ClientVPNエンドポイントにプロキシサーバ経由で接続しようとした際、自分が詰まってしまった部分について、書き留めておきます。

なお、環境によっては必ずしも今回記載した設定が必要とは限りませんのでご了承ください。

クライアントソフトとしてAWS VPN Clientの利用はしない

クライアント側がClientVPNエンドポイントにアクセスする際の選択肢はいくつかありますが、AWS公式が提供しているAWS VPN Clientはプロキシを経由する際は避けるのが無難です。プロキシ用の設定をした際に設定ファイルがエラーで弾かれる場合があります。

公式ドキュメントでも案内されている、OpenVPNのクライアントアプリを利用することをオススメします。

easy-rsaによる証明書発行はFQDNを指定する

AWSの公式ドキュメントや、ネット上のClientVPNの利用方法を解説している記事の通りに手順を進めると、認証局を作成したあとにサーバー証明書及びクライアント証明書を作成するのが一般的かと思います。

CA(認証局)の作成
$ ./easyrsa build-ca nopass
サーバー証明書とクライアント証明書の作成
./easyrsa build-server-full server nopass

./easyrsa build-client-full client1.domain.tld nopass

しかし、このように証明書を作成しACMに登録した場合、ClientVPNエンドポイント作成の際にACMから証明書を選択するドロップダウンに、作成した証明書が表示されないこと場合があります。

その際は、証明書を発行する際に、FQDNを指定することで解決する可能性があります。

FQDNを指定したサーバー証明書とクライアント証明書の作成
./easyrsa build-server-full vpn.example.com nopass

./easyrsa build-client-full client.example.com nopass

ClientVPNエンドポイントのプロトコルをTCPにする

プロキシを利用する際は、ClientVPNエンドポイントを作成する際のトランスポートプロトコルの設定で、TCPを設定する必要があります。
こちらの設定はエンドポイント作成後の変更ができないため、ご注意ください。
トランスポートプロトコル.PNG

設定ファイルにプロキシの設定を追記する

ClientVPNのコンソール画面からダウンロードしたクライアント設定ファイルは、プロキシ経由でVPN接続する場合追記を行う必要があります。

ダウンロードした設定ファイルの冒頭に、次のようにプロキシの設定を追加します。

追記するプロキシ設定
http-proxy <Proxy-ip> <port> stdin basic
追記後
client
dev tun
proto TCP
http-proxy 123.123.123.123 555 stdin basic 
remote cvpn-endpoint-0011abcabcabcabc1.prod.clientvpn.eu-west-2.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3

設定ファイルでDNS名を変更し、名前解決のエラーを解決する

ClientVPNのコンソール画面からダウンロードしたクライアント設定ファイルは、デフォルトのまま使うと名前解決が成功しない場合があります。

DNS名を指定する行を以下のように修正します。

DNS指定(修正前)
remote cvpn-endpoint-0011abcabcabcabc1.prod.clientvpn.eu-west-2.amazonaws.com 443

DNS名の前に"asdfa."(ランダムな文字列)という文字列を追加します。

DNS指定(修正後)
remote asdfa.cvpn-endpoint-0011abcabcabcabc1.prod.clientvpn.eu-west-2.amazonaws.com 443

こちらは利用しているクライアントソフトによって対応要否が分かれます。
DNS名の解決ができない要因としては、ClientVPN設定ファイルには、DNS キャッシュを防止するためにクライアントがDNS名の前にランダム文字列を追加するよう強制するプロパティが存在しますが、一部のクライアントではこれが適用されず、必要なランダム文字列がDNS名の前に追加されないことで、結果的にDNS名の解決がエラーとなってしまうようです。
そこで、手動でランダムな文字列を追加することで名前解決可能にする必要があります。

公式ドキュメントの記載が参考になります。

AWS公式ドキュメント(トラブルシューティング AWS Client VPN: クライアント VPN エンドポイント DNS 名を解決できません)

おわりに

DNS名解決の部分は公式ドキュメントでもなかなか気づきにくい部分に記載がありますので特によく詰まるポイントになるかと思います。

以上、閲覧ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?