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

気づいたら手元に複数のデバイスなど環境があったのでAWS Client VPNへの接続方法をまとめてみようと思いました。OpenVPNクライアント版です。

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

こんにちは、AWS事業本部のニシヤマです。

気づいたら手元に複数のデバイスなど環境がいくつかあったので各デバイスのAWS Client VPNへの接続方法をまとめてみようと思いました。

こちらのブログではAWS Client VPNに接続する際のクライアントアプリケーションにOpenVPNのクライアントアプリケーションを使って試したいと思います。AWS製クライアント版の手順はこちらのブログを参照してください。

ではやっていきます。

前提

  • AWS Client VPNの環境構築が済んでいること

AWS Client VPNの環境構築ができていない場合は以下ブログを参考にして構築してください。

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

Client VPNで相互認証とAD認証(AD Connector経由)を使ってアクセスしてみた

OpenVPNクライアントアプリケーション

OpenVPNのクライアントアプリケーションの接続方法に関しては以下のURLを参考にします。

https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-user/connect.html

Windows

では最初にWindowsでやってみます。今回実行した環境は以下になります。

Windows 10 Pro 21H2

こちらのOpenVPN ウェブサイトのリンクから、OSにあったインストーラーをダウンロードします。

今回はWindows 64-bit MSI installerをダウンロードしました。

ダウンロードしたインストーラーを実行します。

Install Nowをクリックします。

自動でインストールが進行するので少々待ちます。

完了すると設定ファイルが無い旨表示されますがこれからインポートするので問題ありません。

ではクライアントマシンでクライアント設定ファイル(ovpn)をダウンロードします。今回はマネジメントコンソールから直接ダウンロードしました。

接続対象のClientVPNエンドポイントを選択してクライアント設定をダウンロードをクリックします。

クライアント設定ファイル(ovpn)をダウンロードしたら適当なエディタで開いて以下、クライアント証明書、クライアント証明書キーのパスを追記します。

cert C:\\Users\\<user>\\Downloads\\client1.domain.tld.crt
key C:\\Users\\<user>\\Downloads\\client1.domain.tld.key

この際パスの区切り文字を「\」で二重にする必要があるので注意してください。

また、上記はクライアント証明書、クライアント証明書キーのファイルパスを記載していますがクライアント設定ファイル(ovpn)に以下の様に直接クライアント証明書、クライアント証明書キーの情報を埋め込むことも可能です。

<cert>
-----BEGIN CERTIFICATE-----
〜〜〜省略〜〜〜
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
〜〜〜省略〜〜〜
-----END PRIVATE KEY-----
</key>

Windows のタスクバーに追加された錠付きのPCマークを右クリック>Import>ファイルのインポートをクリックします。

ダウンロードしたクライアント設定ファイル(ovpn)を指定して開くをクリックします。

問題なくインポートできるとタスクバーの錠付きのPCマークを右クリックで接続が表示される様になるのでクリックします。

その後は認証方式により挙動が異なりますが、接続完了の表示と共にAD認証の場合は以下の様にユーザ名とパスワードを求められますので入力します。

接続が完了するとWindowsの通知で割り当てられたIPアドレスが表示されます。

Android

では今度はAndroidでやってみます。今回実行した環境は以下になります。

Android 12(Google Pixel 4a)

まずはOpenVPNのアプリをGoogle Playからダウンロードして起動します。

アプリを起動するとImport Profileが表示されます。今回はURLではなくクライアント設定ファイル(ovpn)をアップロードして接続してみます。

次にクライアント設定ファイル(ovpn)をAndroid端末へ送信します。この時に注意点ですが。

マネジメントコンソールでダウンロードしたクライアント設定ファイル(ovpn)に以下の様にremoteで始まる行があります。

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

このままですとAndroid端末からエンドポイントの名前解決が行えずエラーになります。そのため、以下の様にエンドポイントの先頭に任意の文字列を追加する必要があります。 「clientvpnendpoint」という文字列を追加して保存しました。

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

また利用するクライアント設定ファイル(ovpn)はファイルパスの指定ではなく以下の様に直接クライアント証明書、クライアント証明書キーの情報を埋め込む必要がありますので事前に編集しておいてください。

<cert>
-----BEGIN CERTIFICATE-----
〜〜〜省略〜〜〜
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
〜〜〜省略〜〜〜
-----END PRIVATE KEY-----
</key>

では上記の修正したクライアント設定ファイル(ovpn)をAndroidで取得できる様にします。今回はメールでAndroid端末に送信しました。OpenVPNアプリでクライアント設定ファイル(ovpn)を指定してOKでインポートします。

今回は接続先のエンドポイントがAD認証だったためユーザ名とパスワードを求められました。ここではユーザ名を入力して右上のADDをタップします。

プロファイルが登録されました。プロファイル左にあるスイッチをタップします。

ユーザのパスワードが求められたので入力します。

接続できました!

iOS

お次ははiOSでやってみます。今回実行した環境は以下になります。

iOS 15.5(iPad(第7世代))

まずはOpenVPNのアプリをApp Storeからダウンロードして起動します。

アプリを起動するとImport Profileが表示されます。今回はURLではなくクライアント設定ファイル(ovpn)をアップロードして接続してみます。

次にクライアント設定ファイル(ovpn)をi端末へ送信します。この時にAndroid同様にremoteで始まる行の修正が必要になります。

マネジメントコンソールでダウンロードしたクライアント設定ファイル(ovpn)に以下の様にremoteで始まる行があります。

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

このままですとiOS端末からエンドポイントの名前解決が行えずエラーになります。そのため、以下の様にエンドポイントの先頭に任意の文字列を追加する必要があります。 「clientvpnendpoint」という文字列を追加して保存しました。また、iOSは「.」(ワイルドカード)でも接続可能です。(追記)2022年7月20日公開のバージョン「3.3.0」で「.」(ワイルドカード)が利用できなくなったようです。

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

また利用するクライアント設定ファイル(ovpn)はファイルパスの指定ではなく以下の様に直接クライアント証明書、クライアント証明書キーの情報を埋め込む必要がありますので事前に編集しておいてください。

<cert>
-----BEGIN CERTIFICATE-----
〜〜〜省略〜〜〜
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
〜〜〜省略〜〜〜
-----END PRIVATE KEY-----
</key>

では上記の修正したクライアント設定ファイル(ovpn)をiOSで取得できる様にします。今回はメールでios端末に送信しました。メールソフトで添付ファイルを表示して、右上の共有からOpenVPNアプリを指定しています。

ADDボタンで追加します。

今回は接続先のエンドポイントがAD認証だったためユーザ名とパスワードを求められました。ここではユーザ名を入力して右上のADDをタップします。

VPN構成の追加の許可を求められるので、許可をタップします。

プロファイルが登録されました。プロファイル左にあるスイッチをタップします。

ユーザのパスワードが求められたので入力します。

接続できました!

macOS

ではお次はMacでやってみます。環境は以下です。

macOS Monterey 12.3.1

まず、上のダウンロードURLからクライアントアプリケーションをダウンロードします。

こちらのOpenVPN ウェブサイトのリンクから、OSにあったインストーラーをダウンロードします。

ダウンロードしたdmgを展開します。

ダブルクリックします。

続けるをクリック。

使用許諾契約を確認し同意するをクリック。

ディスクの使用量を確認し問題なければインストールをクリック。

インストールの確認が表示されたらパスワードかTouch IDでパスします。

少しするとインストールが完了しました。

クライアントアプリケーションを起動するとAndroid、iOS同様の画面が表示されました。

マネジメントコンソールで接続対象のClientVPNエンドポイントを選択してクライアント設定をダウンロードをクリックします。

この時に注意点ですが。

マネジメントコンソールでダウンロードしたクライアント設定ファイル(ovpn)に以下の様にremoteで始まる行があります。

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

このままですとmacOSからエンドポイントの名前解決が行えずエラーになります。そのため、以下の様にエンドポイントの先頭に任意の文字列を追加する必要があります。 「clientvpnendpoint」という文字列を追加して保存しました。 ちなみにこちらはAWSのドキュメントに記載されているもう一つのアプリケーションTunnelblickでは不要です。

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

クライアント設定ファイル(ovpn)をダウンロードしたら適当なエディタで開いてファイルパスの指定ではなく以下の様に直接クライアント証明書、クライアント証明書キーの情報を埋め込む必要があります。

<cert>
-----BEGIN CERTIFICATE-----
〜〜〜省略〜〜〜
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
〜〜〜省略〜〜〜
-----END PRIVATE KEY-----
</key>

このクライアント設定ファイル(ovpn)をOpenVPNに追加します。

ユーザ名を入力し、CONNECTをクリックします。

パスワードを求められますので入力してOKをクリックします。

パスワードを入力すると自動的に接続が行われ、問題なく接続できました!

Linux

最後にLinux(Ubuntu)でやってみます。今回実行した環境は以下になります。

Ubuntu 20.04.4 LTS

OpenVPNのインストールに関してはこちらを参照してください。

ターミナルからapt-getでOpenVPNをインストールします。

sudo apt-get install openvpn

ではクライアントマシンでクライアント設定ファイル(ovpn)をダウンロードします。今回もマネジメントコンソールから直接ダウンロードしました。

接続対象のClientVPNエンドポイントを選択してクライアント設定をダウンロードをクリックします。

あとは以下のコマンドでクライアント設定ファイル(ovpn)を指定してOpenVPNを起動します。 エンドポイントがAD認証の場合、以下の様にユーザ名、パスワードの入力が求められるので入力し、情報があっていれば接続完了です。一番簡単でした。相互認証の場合は証明書が一致していればそのまま接続されます。

downloaded-client-config.ovpn' 
Sun Jun 26 09:06:36 2022 OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 22 2022
Sun Jun 26 09:06:36 2022 library versions: OpenSSL 1.1.1f  31 Mar 2020, LZO 2.10
Enter Auth Username: cm-test
Enter Auth Password: ***********

まとめ

いかがでしたでしょうか。前回のブログ同様にリモートワークが普及したタイミングでAWS Client VPNの利用が増えたと思いますが、スマートフォンやタブレットでも接続したい場合やOpenVPNを利用している場合に参考にした記事と現在利用しているマシンのOSが異なる場合などもあるかと思ったのでOpenVPNでの接続方法をまとめました!

以上、この記事がどなたかの参考になれば幸いです。

参考URL