LoginSignup
22
24

More than 3 years have passed since last update.

【初心者】AWS クライアントVPN を使ってみる

Posted at

目的

  • クライアントVPN接続の調査の案件があり、やり方を載せたサイトは既にいくつかあったが、自分で一通り実機で触って気になるところを確認する。

AWS クライアントVPN とは (自分の理解)

  • 自分のPCにVPNクライアントソフトを入れて、インターネット経由で安全にAWS VPCへ接続できる。さらにそのVPCを経由したインターネット接続やオンプレミス接続ができる。

やったこと

  • VPN接続を認証するためのADを用意する(ADサーバの構築、AD Connectorによる利用設定)。
  • クライアントVPNエンドポイントの作成とVPC(Subnet)への紐づけを行う。
  • クライアントPCへVPNソフトウェアのインストールと設定を行う。
  • PCからVPNソフトウェアを用いてVPNアクセスし、AD上のユーザID/パスワードを用いて認証し、VPC内に接続する。さらにDirectConnectの先のオンプレサーバへアクセスする。(クライアントVPNの機能としてはクライアント証明書による認証も可能だが今回は未検証)

構成図

構成図.png

手順

事前準備

  • 構成図の通り、以下の既存環境をベースとして利用。
    • VPC (10.4.0.0/16)
    • Subnet (10.4.0.0/24: サーバ配置用、10.4.10.0/24: Client VPN接続用)
    • Direct Connect に接続されたVGWがアタッチされている (各SubnetからDirect Connect 経由でオンプレサーバへアクセス可能)

ADサーバの構築とAD Connectorによる利用設定

vpn02a.png

  • AD Connector の設定
    • 作成したADサーバをVPN接続時の認証に使うには、AD Connector と接続させる必要がある。以下の手順で接続を行う。
      • Directory Service - ディレクトリのセットアップ
      • AD Connectorを選択
      • スモールを選択
      • VPC及びサブネットを選択(サブネットは2つ必要)
      • 接続先のADサーバの情報(ドメイン名、IPアドレス、前手順で作成した接続用のサービスアカウントのID/Passwd)を入力
      • 設定後、ステータスが「Active」になることを確認

vpn03a.png

vpn04a.png

クライアントVPNエンドポイントの作成

  • ACMでの証明書作成

  • クライアントVPNエンドポイントの作成

    • VPC - クライアントVPNエンドポイント - クライアントVPNエンドポイントの作成
      • クライアントIPv4 CIDR: 172.16.0.0/22 (VPCのCIDRとは別のアドレスレンジが必要)
      • サーバー証明書ARN: ACMで作成したサーバ証明書
      • 認証オプション: ユーザーベースの認証(今回はクライアント証明書ではなく、ADに登録されたID/Passwdを使用)
      • ディレクトリID: 作成したAD Connector のID
      • ClowdWatch Logs ロググループ/ログストリーム: あらかじめ作成しておいたロググループ/ログストリームを指定
      • VPC ID:接続させたいVPC
      • セキュリティグループID: デフォルトのセキュリティグループ
    • 上記を設定すると、エンドポイントが作成されるが、状態が「保留中」となる。

vpn06a.png
vpn07a.png

  • エンドポイントの設定
    • 「関連付け」タブの「関連付け」ボタンにて、作成したエンドポイントを紐づけるVPC/Subnetを設定する。今回は 10.4.10.0/24のサブネットを設定。この設定後、エンドポイントの状態が「保留中」から「使用可能」に変化する。
    • 「認証」タブの「受信の承認」ボタンにて、VPNアクセス時に接続先として許可したいアドレスレンジを指定する。今回は、10.4.0.0/16 (VPCのCIDR)及び10.1.0.0/16(DirectConnectの先のオンプレミスNW)の2つを指定する。
    • 「ルートテーブル」タブの「ルートの作成」ボタンから、VPC以外のCIDRへのルートテーブルを追加する。今回は10.1.0.0/16(Direct Connect経由のオンプレミスNW)を追加する。

vpn08a.png
vpn09a.png
vpn10a.png

PCにクライアントソフトをインストール

  • 作成したクライアントVPNエンドポイントを選択し、「クライアント設定のダウンロード」ボタンを実行すると、「downloaded-client-config.ovpn」という設定ファイルがダウンロードできる。
  • AWS公式のVPNクライアントソフトをAWS公式サイトのダウンロードページからダウンロードしインストールする。(Windows版/Mac版があるが、今回はWindows版を使用)
  • ソフトウェアを起動し、ダウンロードした設定ファイル(downloaded-client-config.ovpn)をプロファイルとして設定する。

vpn11a.png

動作確認

  • VPNクライアントによる接続
    • プロファイル設定済のAWS VPNクライアントにて、「接続」を実行し、ID/Password(今回はADに登録したID)で接続する。状態が「接続済み」になればOK。
    • 最初正常に接続できなかったため、トラブルシューティングを実施し、最終的に設定ファイルを修正した。詳細はトラブルシューティングの項を参照。
    • VPC内のサーバ(10.4.0.78)、及びオンプレサーバ(10.1.0.1)までpingやhttpアクセスができることを確認。
    • 接続の状況についてはマネージメントコンソールの画面(「接続」タブ)でも確認できる。(誰が接続中なのか等)

vpn12a.png

  • ソースIPアドレスの確認
    • VPN接続したクライアントPCからVPC内のEC2インスタンス(nginx)にアクセスした際のアクセスログを確認する。PCにアサインされる172.16.0.0/22のアドレスではなく、クライアントVPNエンドポイントのIP(10.4.10.96)がソースIPアドレスとなっている。
10.4.10.96 - - [02/May/2020:16:38:12 +0000] "GET / HTTP/1.1" 200 3520 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" "-"      
10.4.10.96 - - [02/May/2020:16:38:12 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://10.4.0.78/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" "-"
  • CloudWatch (メトリクス)の確認
    • 作成したクライアントVPNエンドポイントについて、ActiveConnectionCount(アクティブな接続数)等のメトリクス情報を取得できる。

vpn15a.png

  • CloudWatch Logsの確認
    • 接続、切断に関するログ(時刻、ログインID、PCのIPアドレス等)を保存できる。

vpn16a.png

トラブルシューティング

  • ダウンロードした設定ファイル(downloaded-client-config.ovpn)をAWS VPNクライアントで指定して接続を試みたが、接続が確立できずエラーになったため、以下の手順での対応を実施。
  • AWS VPNクライアント(v1.1.1)ではエラーログが出ず原因が分からなかったため、別途OpenVPNクライアントをインストールし、同じ設定ファイルを利用して接続をテスト。OpenVPNのダウンロードは公式サイトのダウンロードページから
  • OpenVPNクライアントは接続時に進捗やエラーが表示される。接続要求時に以下のエラーが発生。
Sun May 03 00:39:23 2020 VERIFY ERROR: depth=3, error=unable to get issuer certificate: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2       
Sun May 03 00:39:23 2020 OpenSSL: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

所感

  • 特別にVPN終端装置を用意しなくても手軽にVPN接続が可能になるのは便利。
22
24
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
22
24