本記事は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アドレス(作成および設定されたもの)

主な手順は次のとおりです。

  1. OpenVPN Access Serverの作成
  2. OpenVPN Access Serverの構成
  3. OpenVPN 接続の確立
  4. 接続テストの実施


では OpenVPN Access Serverの作成から下に説明していきます。

 

OpenVPN Access Serverの作成

OCIのWebコンソールの三本線メニューから[ネットワーキング] > [顧客接続性] > [サイト間VPN]と選択しページを移動します。[サイト間VPN]のページで[コンパートメント]のドロップダウン・メニューからOpenVPN Access Serverを作りたいコンパートメントを選択します。[サイト間VPN]ページにある、[マーケットプレイス・ソリューション]のリンクを開いてOpenVPN Access Server作成画面に移動します(図1)。

Site2SIte VPN on Console Menu

Site2SIte VPN page

図1 OCI Webコンソールで利用可能なサイト間VPN

 

OpenVPN Access Serverのページに移動したら、バージョンとコンパートメントを確認し同意のチェックボックスをチェックして[スタックの起動]を選択します(図2)。

Open VPN on Console MarketPlace

図2 OpenVPN Access Serverの作成

 

OpenVPN Access Serverを構成するウィザードが開くので、必要事項や説明などを入力します。下記の実施例ではサーバ名を追加しています。準備ができたら次のページに移ります(図3)。

Stack Creation of Open VPN on OCI Console

図3 OpenVPN Access Serverの作成ウィザード

 

サーバーが実行されるコンピュート・インスタンス、アプリケーション構成(MySQL管理者アカウントとパスワード)、ネットワーク構成、および追加の構成があれば入力します。図4ではOpen VPN Access Server管理者のユーザー名とパスワードを入力しています。

Admin user n Password of Open VPN on OCI console

図4 管理ユーザとパスワードの設定

 

画面を下にスクロールしてネットワーク構成に関しても変更します(図5)。Network Configurationセクションでは、既存のVCNを選択します。ダイアログが変わるので、MySQL HeatWave DBシステムを配置してあるVCNと、そのVCNのパブリック・サブネットを選択します。

Network n Subnet of Open VPN on OCI Console

図5 Network Configurationセクションの設定


必要事項の入力が終わったら、ページ下部の[次]を選択し確認画面に移ります。

review of creation of Open VPN on oci console

図6 設定の確認


確認画面で設定内容を確認したら、[作成]を選択してOpenVPN Access Serverを作成します。作成の進捗状況は[ジョブの詳細]から見ることができます(図7)。完了したら左上のアイコンが茶色→緑色に、状態が作成中→成功に変わります。
job detail of Open VPN creation

図7 OpenVPN Access Server作成の進捗状況

 

ページ下部のログ画面に、作成したOpenVPN Access Serverの管理ページのURL(例: https://129.XXX.XXX.XXX/admin)があります(図8)。後ほどインターネット・ブラウザからアクセスするので、コピーして控えておきます。このURLがアクセス可能になるまで時間がかかる場合があります。

confirm admin url of open vpn on oci console

図8 OpenVPN Access Serverの管理ページのURLの確認

 

OpenVPN Access ServerのリソースをWebコンソールから確認するには、メニューから[コンピュート] > [インスタンス]に移動します(図9)。後ほど使用するプライベートIPアドレスはこのページで確認して下さい。これでOpenVPN Access Serverの作成は完了です。

resource list of site2site vpns on oci console

図9 OpenVPN Access ServerプライベートIPアドレス

 

OpenVPN Access Serverの構成

インターネット・ブラウザを使って、OCIで作成した際に確認したOpenVPN Access Serverの管理ページ(例: https://129.XXX.XXX.XXX/admin)にアクセスします。ログイン画面では先ほど設定した管理者のユーザー名とパスワードを入力します。

login of open vpn admin

図10  OpenVPN Access Serverの管理者ログイン

 


最初のログインにはライセンスに同意する必要があります(図11)。

agreement of open vpn license in the very beginning login

図11   OpenVPN Access Serverのライセンスに同意

 

OpenVPN接続の作成

OpenVPNの接続に必要な手順は、VPNの構成、VPNにアクセスするユーザの作成と権限の付与、オンプレミス・ネットワークから手元のPCに接続確立の三つに分けられます。最初にVPNの構成から始めます。

VPNの構成

OpenVPN Access Serverの管理ページにログインしたら、左のメニューの[CONFIGURATION]から[VPN Setting]を選択します(図12)。

very beginning admin page of open vpn

図12   OpenVPN Access Serverの管理ページ

 

[VPN IP Network]セクションで動的IPアドレスを172.27.233.0、ネットマスクを24に設定します。同様に静的IPアドレスを172.27.232.0、ネットマスクを24で設定します。これらはVCNクライアントの動的および静的IPアドレス範囲を定義します。別の値がデフォルトで入っている場合は書き換えて下さい(図13)。

setting of vpn ip netwprk of open vpn

図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のリストの値を確認して下さい。

 

vpn routing setting of open vpn

図14  VPNルーティングの設定

 

ここまで入力したらページ下部の[Save Setting]を選択します。バナーで実行中のサーバの更新が要求されたら[Update Running Server]を選択して、更新します(図15)。ここまででOpenVPN Access Serverのアクセス・ユーザを作成し構成する準備ができました。

update the setting of open vpn admin

図15  実行中のサーバの更新

 

VPNユーザと権限の作成

左のメニューから[USER MANAGEMENT] > [User Permissions]を開き、新しいユーザを作成します(図16)。

Setting of access users of open nvpn

図16  アクセス・ユーザの管理


ユーザ一覧の一番下にある空のボックスに新しいユーザを入力します(実施例ではmysql_vpn)。入力したら[More Settings]の鉛筆アイコンを選択しユーザの詳細設定を行います(図17)。

creation of new users of open vpn

図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]を選択

User permission setting of open vpn

図18  ユーザの詳細設定

 

ページ下部の[Save Setting]をクリックし、表示されたプロンプトで[Update Running Server]を選択したら、OpenVPN Access Serverからログアウトして構いません。このあとVPN接続を作成する手順に入ります。

 

Logout from admin user

図19 OpenVPN Access Serverからログアウト

 


オンプレミス環境のPCでVPN接続の作成

先ほど新しく作ったユーザでOpenVPN Access Serverにログインします(図12)。URLはOCIで作成した際に確認したURLから末尾の/adminを除いたものです(例:  https://129.XXX.XXX.XXX)。 

Access User Login

図20 OpenVPN Access Serverアクセス・ユーザ・ログイン


ログインしたらクライアント構成ファイルと、オンプレミス環境のPCに合ったPCに合ったOpenVPNクライアントをダウンロードすることができます。[Yourself (user-locked profile)]をクリックして構成ファイルをダウンロードし、PCに保存します(図21)。
Access User Login from App

図21  OpenVPN Access Serverクライアント設定


下記では例としてmacOS用のOpenVPNクライアントをインストールし接続しています(図22)。ここでは、構成ファイルを適した場所にコピーしOpenVPNクライアントがアクセスできるようにすることがポイントです。各プラットフォーム毎にOpenVPNクライアントを設定する手順が異なる場合があります。

Installation of open vpn client app

図22  macOS用OpenVPNクライアントのインストール

 

OpenVPNクライアントをインストールしたら、アプリケーションで[File]タブに移動し[Browse]をクリックします(図23)。ダウンロードしたプロファイルがあるはずなので選択するとアップロードされます。

imported profile

図23 OpenVPNのプロファイル追加


プロファイルがアップロードされたら内容を確認し、[Connect]ボタンを押下してプロファイルのインポートと接続を完了させます(図24)。

Imported profile review

図24 OpenVPNクライアントのプロファイル


推奨ではありませんが、パスワードの保存も可能です。OpenVPNクライアントはプロファイルをインポートしたらメイン・ウインドウにそのプロファイルを表示します。ボタンを右にスライドしてプロファイルを有効にすると(図25)、VPN接続を確立できます。プロファイルを無効にする際は、ボタンを左にスライドさせます。

open vpn client statistics

図25  OpenVPNクライアントのプロファイルを有効化

メイン・ウインドウではVCN接続の状況や統計情報が表示されるので、様々操作して確かめてください。これで接続が確立したので、次の手順からはOCIの仮想ネットワーク(VCN)でセキュリティ・リストとルート表を設定します。

 

VCNのセキュリティ・リストとルート表の構成

OCIのWebコンソールに戻り、VCNセキュリティ・リストのルーティング・テーブルを更新し、VCN内のMySQL HeatWave DBシステムと接続できるようにします。Webコンソールの三本線メニューから[ネットワーキング] > [仮想クラウド・ネットワーク]のページを開き、 OpenVPN Access Serverを作成する際に使用したVCNを選択し[仮想クラウド・ネットワークの詳細]ページを開きます(図26)。以降の手順では左側のメニューの[セキュリティ・リスト]を設定し、後ほど[ルート表]を設定します。

vcn detail page top

図26  仮想クラウド・ネットワークの詳細


セキュリティ・リストの作成

セキュリティ・リストでは、まず[プライベート・サブネット-(VCN名)のセキュリティ・リスト]となっているリンクをクリックすると(図27)、[イングレス・ルールの追加]ボタンが表示されるので選択します(図28)。

Security List of private subnet

図27 プライベート・サブネットのVCNセキュリティ・リスト  

 

Adding rule button

図28 イングレス・ルールの追加

 

ダイアログ・ボックスで、ソースCIDRとして172.27.232.0/24、宛先ポート範囲として3306、33060を入力します(図29)。こうすることでOpenVPNクライアントはポート3306, 33060を経由してOCIのVCNプライベート・サブネットに接続することができます。ダイアログ・ボックスで[イングレス・ルールの追加]をクリックすると変更が反映されます。

adding ingress rule dialog box

図29 プライベート・サブネットのイングレス・ルールの追加

 

次にMySQLポートのプライベート・VCN・リソースを経由した接続を許可します。同様の手順で10.0.0.0/16とポート3306、33060を追加します。全て追加すると、イングレス・ルールのリストは下図のようになります(図30)。

VCN Security List after adding

図30 プライベート・サブネット・ルールの一覧


[仮想クラウド・ネットワークの詳細]に戻り、左のメニューから[セキュリティ・リスト]を開き[Default Security List for(VCN名)]をクリックします(図31)。

vcn default securitylist

図31  VCNセキュリティ・リストのデフォルト・セキュリティ


同様にイングレス・ルールの追加を行い、ソースCIDRとしてVCN CIDR 10.0.0.0/16を、宛先ポート範囲としてポート3306、33060を入力します(図32)。

adding ingress rule in default secu list

図32 Default Security Listのイングレス・ルール追加

次に、MySQLポート上のオンプレミス・リソースを通した接続を許可します。 CIDR 172.27.232.0/24とポート3306、33060を使用してイングレス・ルールを追加するとリストは次のようになります(図33)。セキュリティ・リストの変更は以上です。次にルート表の作成を行います。

Rules in default sec list

図33 Default Security Listのイングレス・ルール


ルート表の作成

OCIのWebコンソールで[コンピュート]>[インスタンス]に移動し、OpenVPN Access ServerのプライベートIPアドレスを確認します(図34)。

Private IP of open vpn access server

図34 OpenVPN Access ServerのプライベートIPアドレス

 

[仮想クラウド・ネットワークの詳細]ページに戻り、左のメニューから[ルート表]を選択しプライベート・サブネットのルーティング・テーブルを変更します(図35)。

route table of vpn

図35  VCNルート表


[ルート・ルールの追加]をクリックしてダイアログ・ボックスを開きます(図36)。
adding route rule button

図36  VCNルーティング・テーブルのルート・ルールの追加

 

ターゲット・タイプでプライベートIPを選択し、宛先CIDRブロックとして172.27.232.0/24、ターゲット選択としてOpenVPN Access ServerのプライベートIPアドレスを入力します。下のように図34で確認したプライベートIPアドレスを入力します(図37)。ダイアログ・ボックスの[ルート・ルールの追加]をクリックすれば反映されます。

adding route rule in private subnet

図37  プライベート・サブネットをルート・ルールに追加


追加が反映されたら、ルート・ルールの一覧は下のようになります(図38)。ここまでの作業でローカルLANのMySQLリソースをMySQL HeatWave DBシステムに接続する準備ができました。

route rule list in route table after adding routes

図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)。

subnet in pub instance

図39  VCNパラメータでパブリック・サブネットを指定

 

SSHキー・ペアを自動生成する場合は、公開キーの保存を忘れずに行ってください。既存の公開キーを使用するには、[公開キー・ファイル(.pub)のアップロード]にチェックを入れ使用するキーのファイルをアップロードしてください(図40)。

saving ssh key of pub instance

図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の接続テスト用ユーザーを削除して構いません。