本記事はUsing MySQL HeatWave with OpenVPN Access Serverの翻訳版です。
MySQL HeatWave DBシステムに接続するには、既にWebマニュアルや文書でご紹介しているとおり、様々な方法があります。目的に合わせた方法を選んでいただければいずれの方法でも構いません。本記事でご紹介するのは、ローカルLANの環境にあるPCからMySQL HeatWave DB システムに対し、永続的で安全な接続を確立する必要がある場合に仮想プライベート・ネットワーク(VPN)を用いる方法です。こういった接続にはサイト間VPN、FastConnect、OpenVPN Access Serverなどを使用できます。
下に示す実施例ではOpenVPN Access Serverを使用してローカルLANからOCIプライベート・サブネットへの接続を作成します。具体的には、OpenVPN Access Serverをセットアップし、MySQLプロトコル・ポート(3306 および 33060)を経由するアクセスを許可する構成にします。OpenVPN Access Serverの設定は比較的簡単にでき、専用のサブネットを必要としないケースではコストを抑えることが期待できます。OpenVPN接続の作成から順に説明していきます。
作成手順の概略
OpenVPN接続の作成はいくつかの段階に分けて説明します。ここではOpenVPN Access Serverインスタンスの作成、OCIのネットワークに接続するようにサーバーを構成、ローカル・ネットワークからMySQL HeatWave DB システムへのOpenVPN接続の確立を行います。
構成するには下記の情報が必要です。
- MySQL HeatWave DBシステムがあるOCI VCNのパブリック・サブネットと、プライベート・サブネット
- OpenVPN Access ServerのプライベートIPアドレス(作成および設定されたもの)
主な手順は次のとおりです。
- OpenVPN Access Serverの作成
- OpenVPN Access Serverの構成
- OpenVPN 接続の確立
- 接続テストの実施
では OpenVPN Access Serverの作成から下に説明していきます。
OpenVPN Access Serverの作成
OCIのWebコンソールの三本線メニューから[ネットワーキング] > [顧客接続性] > [サイト間VPN]と選択しページを移動します。[サイト間VPN]のページで[コンパートメント]のドロップダウン・メニューからOpenVPN Access Serverを作りたいコンパートメントを選択します。[サイト間VPN]ページにある、[マーケットプレイス・ソリューション]のリンクを開いてOpenVPN Access Server作成画面に移動します(図1)。
図1 OCI Webコンソールで利用可能なサイト間VPN
OpenVPN Access Serverのページに移動したら、バージョンとコンパートメントを確認し同意のチェックボックスをチェックして[スタックの起動]を選択します(図2)。
図2 OpenVPN Access Serverの作成
OpenVPN Access Serverを構成するウィザードが開くので、必要事項や説明などを入力します。下記の実施例ではサーバ名を追加しています。準備ができたら次のページに移ります(図3)。
図3 OpenVPN Access Serverの作成ウィザード
サーバーが実行されるコンピュート・インスタンス、アプリケーション構成(MySQL管理者アカウントとパスワード)、ネットワーク構成、および追加の構成があれば入力します。図4ではOpen VPN Access Server管理者のユーザー名とパスワードを入力しています。
図4 管理ユーザとパスワードの設定
画面を下にスクロールしてネットワーク構成に関しても変更します(図5)。Network Configurationセクションでは、既存のVCNを選択します。ダイアログが変わるので、MySQL HeatWave DBシステムを配置してあるVCNと、そのVCNのパブリック・サブネットを選択します。
図5 Network Configurationセクションの設定
必要事項の入力が終わったら、ページ下部の[次]を選択し確認画面に移ります。
図6 設定の確認
確認画面で設定内容を確認したら、[作成]を選択してOpenVPN Access Serverを作成します。作成の進捗状況は[ジョブの詳細]から見ることができます(図7)。完了したら左上のアイコンが茶色→緑色に、状態が作成中→成功に変わります。
図7 OpenVPN Access Server作成の進捗状況
ページ下部のログ画面に、作成したOpenVPN Access Serverの管理ページのURL(例: https://129.XXX.XXX.XXX/admin)があります(図8)。後ほどインターネット・ブラウザからアクセスするので、コピーして控えておきます。このURLがアクセス可能になるまで時間がかかる場合があります。
図8 OpenVPN Access Serverの管理ページのURLの確認
OpenVPN Access ServerのリソースをWebコンソールから確認するには、メニューから[コンピュート] > [インスタンス]に移動します(図9)。後ほど使用するプライベートIPアドレスはこのページで確認して下さい。これでOpenVPN Access Serverの作成は完了です。
図9 OpenVPN Access ServerプライベートIPアドレス
OpenVPN Access Serverの構成
インターネット・ブラウザを使って、OCIで作成した際に確認したOpenVPN Access Serverの管理ページ(例: https://129.XXX.XXX.XXX/admin)にアクセスします。ログイン画面では先ほど設定した管理者のユーザー名とパスワードを入力します。
図10 OpenVPN Access Serverの管理者ログイン
最初のログインにはライセンスに同意する必要があります(図11)。
図11 OpenVPN Access Serverのライセンスに同意
OpenVPN接続の作成
OpenVPNの接続に必要な手順は、VPNの構成、VPNにアクセスするユーザの作成と権限の付与、オンプレミス・ネットワークから手元のPCに接続確立の三つに分けられます。最初にVPNの構成から始めます。
VPNの構成
OpenVPN Access Serverの管理ページにログインしたら、左のメニューの[CONFIGURATION]から[VPN Setting]を選択します(図12)。
図12 OpenVPN Access Serverの管理ページ
[VPN IP Network]セクションで動的IPアドレスを172.27.233.0、ネットマスクを24に設定します。同様に静的IPアドレスを172.27.232.0、ネットマスクを24で設定します。これらはVCNクライアントの動的および静的IPアドレス範囲を定義します。別の値がデフォルトで入っている場合は書き換えて下さい(図13)。
図13 VPN IPネットワークで動的IPアドレスの設定
[Routing]セクションで、VCN CIDRを10.0.0.0/24と10.0.1.0/24の二つ設定し[Yes, using the routing]を選択します(図14)。これらはOCI VCNのパブリックおよびプライベート・サブネットのIPアドレス範囲になります。
注: プライベート・サブネットのIPアドレス範囲が不明な場合はOCIコンソール・メニュー>[ネットワーク]>[ネットワーク]>[仮想クラウド・ネットワーク]に移動し、VCNのリストの値を確認して下さい。
図14 VPNルーティングの設定
ここまで入力したらページ下部の[Save Setting]を選択します。バナーで実行中のサーバの更新が要求されたら[Update Running Server]を選択して、更新します(図15)。ここまででOpenVPN Access Serverのアクセス・ユーザを作成し構成する準備ができました。
図15 実行中のサーバの更新
VPNユーザと権限の作成
左のメニューから[USER MANAGEMENT] > [User Permissions]を開き、新しいユーザを作成します(図16)。
図16 アクセス・ユーザの管理
ユーザ一覧の一番下にある空のボックスに新しいユーザを入力します(実施例ではmysql_vpn)。入力したら[More Settings]の鉛筆アイコンを選択しユーザの詳細設定を行います(図17)。
図17 新しいユーザの作成
ページが遷移したら下記の変更を行い、他の入力欄はデフォルト値のままにしておきます(図18)。
- ユーザのパスワードを入力
- [Use Statistics]を選択し、172.27.232.5などの静的IPアドレスを入力
- [Use Routing]を選択し、OCI VCNのパブリックおよびプライベート・サブネットで使用するプライベートIPマスク10.0.0.0/16と10.0.1.0/16を入力
- [All server-side private subnets]を選択
図18 ユーザの詳細設定
ページ下部の[Save Setting]をクリックし、表示されたプロンプトで[Update Running Server]を選択したら、OpenVPN Access Serverからログアウトして構いません。このあとVPN接続を作成する手順に入ります。
図19 OpenVPN Access Serverからログアウト
オンプレミス環境のPCでVPN接続の作成
先ほど新しく作ったユーザでOpenVPN Access Serverにログインします(図12)。URLはOCIで作成した際に確認したURLから末尾の/adminを除いたものです(例: https://129.XXX.XXX.XXX)。
図20 OpenVPN Access Serverアクセス・ユーザ・ログイン
ログインしたらクライアント構成ファイルと、オンプレミス環境のPCに合ったPCに合ったOpenVPNクライアントをダウンロードすることができます。[Yourself (user-locked profile)]をクリックして構成ファイルをダウンロードし、PCに保存します(図21)。
図21 OpenVPN Access Serverクライアント設定
下記では例としてmacOS用のOpenVPNクライアントをインストールし接続しています(図22)。ここでは、構成ファイルを適した場所にコピーしOpenVPNクライアントがアクセスできるようにすることがポイントです。各プラットフォーム毎にOpenVPNクライアントを設定する手順が異なる場合があります。
図22 macOS用OpenVPNクライアントのインストール
OpenVPNクライアントをインストールしたら、アプリケーションで[File]タブに移動し[Browse]をクリックします(図23)。ダウンロードしたプロファイルがあるはずなので選択するとアップロードされます。
図23 OpenVPNのプロファイル追加
プロファイルがアップロードされたら内容を確認し、[Connect]ボタンを押下してプロファイルのインポートと接続を完了させます(図24)。
図24 OpenVPNクライアントのプロファイル
推奨ではありませんが、パスワードの保存も可能です。OpenVPNクライアントはプロファイルをインポートしたらメイン・ウインドウにそのプロファイルを表示します。ボタンを右にスライドしてプロファイルを有効にすると(図25)、VPN接続を確立できます。プロファイルを無効にする際は、ボタンを左にスライドさせます。
図25 OpenVPNクライアントのプロファイルを有効化
メイン・ウインドウではVCN接続の状況や統計情報が表示されるので、様々操作して確かめてください。これで接続が確立したので、次の手順からはOCIの仮想ネットワーク(VCN)でセキュリティ・リストとルート表を設定します。
VCNのセキュリティ・リストとルート表の構成
OCIのWebコンソールに戻り、VCNセキュリティ・リストのルーティング・テーブルを更新し、VCN内のMySQL HeatWave DBシステムと接続できるようにします。Webコンソールの三本線メニューから[ネットワーキング] > [仮想クラウド・ネットワーク]のページを開き、 OpenVPN Access Serverを作成する際に使用したVCNを選択し[仮想クラウド・ネットワークの詳細]ページを開きます(図26)。以降の手順では左側のメニューの[セキュリティ・リスト]を設定し、後ほど[ルート表]を設定します。
図26 仮想クラウド・ネットワークの詳細
セキュリティ・リストの作成
セキュリティ・リストでは、まず[プライベート・サブネット-(VCN名)のセキュリティ・リスト]となっているリンクをクリックすると(図27)、[イングレス・ルールの追加]ボタンが表示されるので選択します(図28)。
図27 プライベート・サブネットのVCNセキュリティ・リスト
図28 イングレス・ルールの追加
ダイアログ・ボックスで、ソースCIDRとして172.27.232.0/24、宛先ポート範囲として3306、33060を入力します(図29)。こうすることでOpenVPNクライアントはポート3306, 33060を経由してOCIのVCNプライベート・サブネットに接続することができます。ダイアログ・ボックスで[イングレス・ルールの追加]をクリックすると変更が反映されます。
図29 プライベート・サブネットのイングレス・ルールの追加
次にMySQLポートのプライベート・VCN・リソースを経由した接続を許可します。同様の手順で10.0.0.0/16とポート3306、33060を追加します。全て追加すると、イングレス・ルールのリストは下図のようになります(図30)。
図30 プライベート・サブネット・ルールの一覧
[仮想クラウド・ネットワークの詳細]に戻り、左のメニューから[セキュリティ・リスト]を開き[Default Security List for(VCN名)]をクリックします(図31)。
図31 VCNセキュリティ・リストのデフォルト・セキュリティ
同様にイングレス・ルールの追加を行い、ソースCIDRとしてVCN CIDR 10.0.0.0/16を、宛先ポート範囲としてポート3306、33060を入力します(図32)。
図32 Default Security Listのイングレス・ルール追加
次に、MySQLポート上のオンプレミス・リソースを通した接続を許可します。 CIDR 172.27.232.0/24とポート3306、33060を使用してイングレス・ルールを追加するとリストは次のようになります(図33)。セキュリティ・リストの変更は以上です。次にルート表の作成を行います。
図33 Default Security Listのイングレス・ルール
ルート表の作成
OCIのWebコンソールで[コンピュート]>[インスタンス]に移動し、OpenVPN Access ServerのプライベートIPアドレスを確認します(図34)。
図34 OpenVPN Access ServerのプライベートIPアドレス
[仮想クラウド・ネットワークの詳細]ページに戻り、左のメニューから[ルート表]を選択しプライベート・サブネットのルーティング・テーブルを変更します(図35)。
図35 VCNルート表
[ルート・ルールの追加]をクリックしてダイアログ・ボックスを開きます(図36)。
図36 VCNルーティング・テーブルのルート・ルールの追加
ターゲット・タイプでプライベートIPを選択し、宛先CIDRブロックとして172.27.232.0/24、ターゲット選択としてOpenVPN Access ServerのプライベートIPアドレスを入力します。下のように図34で確認したプライベートIPアドレスを入力します(図37)。ダイアログ・ボックスの[ルート・ルールの追加]をクリックすれば反映されます。
図37 プライベート・サブネットをルート・ルールに追加
追加が反映されたら、ルート・ルールの一覧は下のようになります(図38)。ここまでの作業でローカルLANのMySQLリソースをMySQL HeatWave DBシステムに接続する準備ができました。
図38 VCNルート表のルール一覧
接続テスト
オンプレミス環境のPCからOCI上のMySQL HeatWave DB システムへの接続と、プライベート・サブネット上のコンピュート・インスタンスを介したオンプレミスのMySQL サーバーへの接続を行います。これにより、構築したOpenVPNが正しく機能していることを確認できます。まずはローカルLANから接続します。
ローカルLANから接続テスト
VPNを有効にし、OpenVPN Access Server経由で接続されているPCでターミナルを開き、MySQL Shellを使用してMySQL HeatWave DB システムの管理者アカウントとパスワードで接続します。下記は成功した接続セッションを示しています。
% mysqlsh --sql -u root -p -h 10.0.1.207 --port=33060 Please provide the password for 'root@10.0.1.207:33060': Save password for 'root@10.0.1.207:33060'? [Y]es/[N]o/Ne[v]er (default No): y MySQL Shell 8.2.1 Copyright (c) 2016, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type '\help' or '\?' for help; '\quit' to exit. Creating a session to 'root@10.0.1.207:33060' Fetching global names for auto-completion... Press ^C to stop. Your MySQL connection id is 347 (X protocol) Server version: 8.0.36-u2-cloud MySQL Enterprise - Cloud No default schema selected; type \use <schema> to set one.
プライベートVPNからオンプレミス環境のMySQL Serverへの接続テスト
この接続テストは二つのコンピュート・インスタンスを作成する必要があります。二つのコンピュート・インスタンスのうち、一つはプライベート・サブネットに接続テストするためにパブリック・サブネット内に必要です。もう一つはオンプレミスのMySQL Serverに接続テストするために、プライベート・サブネット内に必要です。 VCNのイングレス・ルールで設定したとおり、ポート3306および33060を経由したプライベート・サブネットへのアクセスが許可されます。テストで使用したコンピュート・インスタンスは接続が確認できれば削除して構いません。
パブリック・サブネットにコンピュート・インスタンスを作成
パブリック・サブネットに新しいコンピュート・インスタンスを作成します。サブネットのセクションで[パブリック・サブネット-(VCN名)]を忘れずに選択してください(図39)。
図39 VCNパラメータでパブリック・サブネットを指定
SSHキー・ペアを自動生成する場合は、公開キーの保存を忘れずに行ってください。既存の公開キーを使用するには、[公開キー・ファイル(.pub)のアップロード]にチェックを入れ使用するキーのファイルをアップロードしてください(図40)。
図40 SSHキーの保存
SSHキー・ペアの自動生成を選択した場合には、公開SSHキーのダウンロードも忘れずに行ってください。 ssh-key-年月日-pri.keyのような名前で保存されるので、PC上でアクセス許可を設定し適切なフォルダに配置する必要があります。下記の例では、保存したSSHキーを ~/.ssh に保存しアクセス権限を400に変更しています。
$ mv ~/Downloads/ssh-key-2024-4-10.key ~/.ssh/ssh-key-2024-4-10.key $ sudo chmod 0400 ~/.ssh/ssh-key-2024-4-10.key
次に、プライベート・コンピュート・インスタンスのSSHキーをパブリック・コンピュート・インスタンスにコピーします。パブリック・コンピュー・インスタンスが起動したら、コンピュート・インスタンスの[インスタンスの詳細]ページでプライベートIPアドレスを確認し、下の例のようにプライベート・コンピュート・インスタンスのSSHキーをアップロードします。
% scp -i ssh-key-2024-4-10.key ssh-key-2024-4-10.key opc@129.213.106.130:/tmp
下記のようにsshコマンドを用いてコンピュート・インスタンスにログインします。
% ssh -i ssh-key-2024-4-10.key opc@129.213.106.130
プライベート・サブネット上のコンピュート・インスタンスが起動したら、同様にプライベート・コンピュート・インスタンスにログインします。
$ ssh -i ssh-key-2024-4-10.key opc@10.0.1.31
プライベート・コンピュート・インスタンスにログインしたら、下記のコマンドでMySQL Shellをインストールします。
$ sudo yum -y install mysql-shell
オンプレミス環境のローカルPCでもMySQL Serverを起動します。接続テスト専用のユーザを使用する場合には、下の例のようにローカル環境のMySQL Serverに新しいユーザーを作成しテストが完了したらそのユーザーを削除します。下の例ではローカル環境のMySQL Serverに接続するMySQL Shellを開き、指定したパスワードで mysql_testというユーザーを作成し、DBシステムへのアクセスを許可しています。
CREATE USER mysql_test@'%' IDENTIFIED BY '********' REQUIRE SSL; GRANT ALL ON test.* TO mysql_test@'%';
プライベート・サブネットのコンピュート・インスタンスからローカル環境のMySQL Serverに接続
[opc@mysql-instance-private ~]$ mysqlsh --sql mysql_test@172.27.232.5:33060 Please provide the password for 'mysql_test@172.27.232.5:33060': ********** Save password for 'mysql_test@172.27.232.5:33060'? [Y]es/[N]o/Ne[v]er (default No): n MySQL Shell 8.3.0 Copyright (c) 2016, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type '\help' or '\?' for help; '\quit' to exit. Creating a session to 'mysql_test@172.27.232.5:33060' Fetching global names for auto-completion... Press ^C to stop. Your MySQL connection id is 11 (X protocol) Server version: 8.3.0 MySQL Community Server - GPL No default schema selected; type \use <schema> to set one. MySQL 172.27.232.5:33060+ ssl SQL > SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.0271 sec)
接続テストは以上です。OCIのプライベート・サブネットからOpenVPN Access Serverを経由して、ローカル環境のMySQL ServerにMySQL プロトコルでアクセスできることを確認できました。
もしOpenVPN接続が期待したとおりに機能しない場合は構築手順に戻り、適切なCIDR、ポート番号、プライベートIPアドレスが設定されていること、およびOCIのすべてのリソースがアクティブで実行されていることを確認してください。
接続が確認できたらコンピュート・インスタンスと、ローカル環境のMySQL Serverの接続テスト用ユーザーを削除して構いません。
