AWS Client VPNをプロキシ経由で接続してみた

AWS Client VPNをプロキシ経由で接続してみた

Clock Icon2022.11.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、シマです。
みなさんVPNつないでいますか?(挨拶)

AWS Client VPNを利用するシーンは、様々なものが考えられると思います。
レアケースかもしれませんが、今回はプロキシ経由でAWS Client VPNを利用するシーンについて調べてみましたので、その内容について記載します。

やりたいこと

構成図は以下で、プロキシ経由でAWS Client VPN接続をすることです。

構成図01

前提

  • プロキシの構築が済んでいること
  • VPN通信がプロキシにブロックされないこと
  • AWS Client VPNの環境構築が可能であること

AWS Client VPNの環境構築はすでに記事になっているため、詳細を割愛します。
そちらを参考にして構築してください。

AWS Client VPNを使ってプライベートなEC2インスタンス(Windows Server)にRDPしてみた

いきなり結論

以下を実施することで実現できました。

  1. プロトコルはTCPにする必要がある
  2. クライアント設定ファイルにプロキシ設定を追記する
  3. クライアントのソフトはAWSが提供するソフト以外にする
  4. クライアント設定ファイルのDNS名を修正する

詳細

それぞれ必要なアクションについて詳細を以下に記載します。

1. プロトコルはTCPにする必要がある

プロキシ経由のVPN接続のためには、クライアントVPNエンドポイントの設定のトランスポートプロトコルでTCPを指定する必要があります。

プロトコル設定01

プロトコル設定02

作成済みのクライアントVPNエンドポイントに対して、トランスポートプロトコルは後から変更できないため、すでに構築済みの場合は再作成が必要です。

2. クライアント設定ファイルにプロキシ設定を追記する

AWS管理コンソールからクライアントVPNエンドポイントを開き、クライアント設定をダウンロードをクリックします。

プロキシ設定02

クライアント設定をダウンロードをクリックし、「downloaded-client-config.ovpn」をダウンロードします。
プロキシ設定02

ダウンロードしたクライアント設定ファイル(ovpn)をメモ帳等のテキストエディタで開き、http-proxyディレクティブを追加します。

プロキシ設定03

※「192.168.4.1」は実際のプロキシのIP、「1080」は実際のプロキシのポートを指定します

プロキシで認証が必要な場合は、以下を参照し設定してください。
HTTPプロキシ経由でのOpenVPNサーバーへの接続

3. クライアントのソフトはAWSが提供するソフト以外にする

クライアント設定ファイル(ovpn)をAWSが提供するVPNクライアントソフトで使用すると以下のようなエラーメッセージが表示されてしまいます。

エラー01

クライアントに導入するソフトは前述のプロキシ設定に対応している必要があります。
しかし、AWS Client VPNはプロキシ設定に未対応(※)なため、他のソフトを使用する必要があります。
AWSが提供するクライアントのサポートされたOpenVPN ディレクティブ

今回は、以下ドキュメントに記載のあるOpenVPNを使用しました。
OpenVPN クライアントを使用して接続する

インストール方法の詳細はすでに記事になっているため、詳細を割愛します。
そちらを参考にして構築してください。

色々なクライアントOSからAWS Client VPNに接続してみる(OpenVPNクライアント版)

4. クライアント設定ファイルのDNS名を修正する

このままVPN接続すると、エンドポイントの名前解決が行えずエラーになってしまいます。
そのため、クライアント設定ファイル(ovpn)の一部を以下のように修正する必要があります。
クライアントVPNエンドポイントDNS名を解決できない

修正前

remote cvpn-endpoint-xxxxxxxxxxxx.prod.clientvpn.ap-northeast-1.amazonaws.com 443

修正後

remote asdfa.cvpn-endpoint-xxxxxxxxxxxx.prod.clientvpn.ap-northeast-1.amazonaws.com 443

最後に

今回はプロキシ経由でAWS Client VPN接続をしてみました。
軽い気持ちでやってみましたが、思ったより時間がかかりました。
どこかのどなたかの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.