OCI プライベートComputeインスタンスに接続する方法のまとめ

このシリーズの他の記事は、[オラクル・クラウドの個人ブログ一覧 ](https://qiita.com/letian/items/10152a4fec813c1b7d98)からご覧いただけます。

__初めに__
オンプレミスからプライベートサブネット内の <strong>OCI</strong>（Oracle Cloud Infrastructure）<strong>Compute</strong>インスタンスに接続する方法はいくつかあります。どの方法を選べばよいか迷っている方々に対し、各種接続方法の比較を紹介したいと思います。

:::note
一部の接続方法は、Computeインスタンスだけでなく、DBインスタンス（Autonomous DB / Base DB）にも適用できます。プライベートサブネット内のDBインスタンスに接続したい方は、[こちらの取りまとめ](https://qiita.com/letian/items/077b4cfc74eab90339cc)をご参考にしてください。
:::

__目次__
- [1. プライベート・サブネット内のインスタンスに接続する](#1-プライベートサブネット内のインスタンスに接続する)
  - [1-1. 踏み台サーバ](#1-1-踏み台サーバ)
  - [1-2. リモート・デスクトップ・ゲートウェイ](#1-2-リモートデスクトップゲートウェイ)
  - [1-3. OCI Bastionサービス](#1-3-oci-bastionサービス)
  - [1-4. ネットワーク・ロード・バランサ](#1-4-ネットワークロードバランサ)
  - [1-5. Cloud Shell](#1-5-cloud-shell)
  - [1-6. インスタンス・コンソール接続](#1-6-インスタンスコンソール接続)
  - [1-7. サイト間 VPN と FastConnect](#1-7-サイト間-vpn-と-fastconnect)
  - [1-8. OCI Secure Desktop サービス](#1-8-oci-secure-desktop-サービス)
- [2. 各種接続方法の比較](#2-各種接続方法の比較)

# 1. プライベート・サブネット内のインスタンスに接続する
## 1-1. 踏み台サーバ
踏み台サーバーを経由するのは、最も一般的な接続方法です。接続方法としては、主に以下の2つのパターンがあります。

方法-1. 二段階のログイン
方法-2. SSHポート転送
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/32df8816-91d6-1f9b-0697-d9305563ad79.png)
詳細については、次の記事をご参照ください。
[踏み台サーバを使ってOCIプライベートComputeインスタンスに接続する方法](https://qiita.com/letian/items/91fe87319d8a2b275b94)

## 1-2. リモート・デスクトップ・ゲートウェイ
踏み台サーバを経由し、Windowsインスタンスにアクセスしたい場合、リモート・デスクトップ・ゲートウェイ(<strong>RD Gateway</strong>)という選択肢もあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/9f125609-4d82-a34f-c7e1-e0c7e4dfd293.png)

メリット：
✅ RD Gatewayは、Windowsサーバの<strong>標準機能</strong>である。
✅ TCPポート 3389をパブリックに公開せず、<strong>HTTPS (443ポート)</strong>を利用。
✅ SSHポート転送（OCI Bastionなど）と比べて、<strong>セッションタイムアウト</strong>の心配が要らない。

通常の踏み台サーバーやOCI Bastionの方法と比べて、RD Gatewayの設定はやや複雑です。初めての方にはガイドが必要だと思います。次の記事では、ステップ・バイ・ステップのガイドを提供していますので、ご参考にしてください。
[リモート・デスクトップ・ゲートウェイ経由でOCI Windows VMへの接続方法](https://qiita.com/liu-wei/items/15e2e74f5a8c304002a3)

## 1-3. OCI Bastionサービス
OCI Bastionサービスの本質は<strong>SSHトンネル</strong>です。つまり、上記のSSHポート転送の方法をサービスとして提供しています。これにより、踏み台サーバを立てることなく、プライベートサブネット内のインスタンスに簡単に接続できます。このサービスは<strong>無料</strong>で利用でき、Computeインスタンスだけでなく、DBインスタンス（Oracle Base DB/Autonomous DB/MySQL）にも接続できます。

セッション存続時間は最大<strong>３時間</strong>で、ご注意ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a85919bf-f6ac-c9ed-ac84-7e3b42a524b8.png)

メリット：
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ SSHトンネルで通信するので、セキュアな接続を確保できる。
✅ 設定方法は比較的にやり易い（数分間でOK）
✅ OCI Bastion自体は無料で利用できる。

:::note
OCI Bastionを作成する際には、<strong>ターゲット</strong>のVCNとサブネットを指定する必要がありますが、<strong>Bastion自体</strong>に対し、配置場所を指定する必要はありません（誤解されることがよくあります）。
:::

接続方法の詳細について、以下の記事をご参考ください。
[OCI Bastion経由でプライベート・サブネット内のComputeインスタンスに接続](https://qiita.com/liu-wei/items/2187c9421e41c8c5d099)

## 1-4. ネットワーク・ロード・バランサ
踏み台サーバを立てずにインターネットから接続したい場合、パブリックサブネット内のネットワーク・ロード・バランサ（<strong>NLB</strong>）を経由する方法も選択肢の一つです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/45ca349f-02a6-cb2c-0fee-e2409b8838e2.png)

メリット：
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ 設定方法は簡単で、<strong>管理者</strong>の一時作業に適している（数分間で設定完了）。
✅ レイヤー4通信であり、可用性が高くて、レイテンシが低い。
✅ OCI Bastionと比べて、セッション存続時間（最大３時間）の心配がない。
✅ NLB自体は"[Always Free](https://www.oracle.com/jp/cloud/free/#always-free)"でカバーできるので、無料で利用できる。

:::note
- LB経由でも接続できます（設定方法少し異なるが考え方は同じです）。
- NLB自体は停止できませんが、バックエンドを<strong>オフライン</strong>にすることは可能です。使用しないときにオフラインに切り替えることで、踏み台サーバーを一時停止するのと同じような効果が得られます。
:::

接続方法の詳細について、次の記事をご参考ください。
[ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の OCI VMに接続する](https://qiita.com/liu-wei/items/d4144794ef1a8692580c)

## 1-5. Cloud Shell
2022年8月に、Cloud Shellの<strong>プライベート・アクセス</strong>機能がリリースされました。これにより、Cloud Shellからパブリックネットワークを経由せずにプライベートネットワークのリソースにアクセスできるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b552a8c5-0670-19ad-c87e-e904e558f0c2.png)

メリット：
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ パブリック・ネットワークを経由せずに、プライベート・アクセスで接続できる。
✅ 設定は簡単で、シリアルコンソールを使って手軽に接続したい時に便利です。（管理者の一時作業に適している）

接続方法の詳細について、以下の記事をご参考ください。
[OCI Cloud Shell からプライベート・サブネット内のインスタンスに接続する](https://qiita.com/liu-wei/items/f28aa9ab2a3e5b49b42d)

## 1-6. インスタンス・コンソール接続
コンソール接続ができると、インスタンス起動時（BOOT）のメッセージが見えます。トラブルシューティングの際にはこれが便利です。（例えば、インスタンスが「稼働中（Running）」と表示されているのに、なかなか接続できない場合などです。）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/3c891768-0f77-7149-8461-fef9c9bde5c2.png">

利用場面：
✅ 起動(BOOT)時のメッセージが見えるので、トラブルシューティングの時に役立つ。

__作成方法__
「Cloud Shell接続」と「ローカル接続」の２つタイプがあります。次は「ローカル接続」の例です。

作成画面の入口：コンピュート → インスタンス → インスタンスの詳細 → コンソール接続 → ローカル接続の作成

公開キーを自動作成するか、既存のキーをアップロードします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/74eab5c8-337a-249a-6736-0c55bd7d4fb9.png", width="550">

接続元のOS（Linux/Mac or Windows）と接続方式（シリアル or VNC）により、メニューからコマンドをコピーして、実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/881241ef-a12b-9768-745a-84a762a9c26c.png)

詳細の接続例を省略します。

## 1-7. サイト間 VPN と FastConnect
- <strong>プライベートIP</strong>で通信したい場合、<strong>サイト間(IPsec) VPN</strong>サービスを利用するのが一般的です。オンプレミスとOCIの両方で設定が必要なため、疎通作業は少し複雑になります。VPNサービス自体は無料です。

- インターネットを経由せずに専用回線で接続したい場合は、<strong>FastConnect</strong> をご利用ください。別途回線費用がかかりますが、データ転送に伴う従量課金が発生しないため、<strong>大量のデータ転送</strong>に向いています。

接続先（OCI側）のCIDRブロックは、接続元（オンプレミス側）のCIDRと重複しないようにご注意ください（サイト間VPN/FastConnect両方に適用される）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/07a3befe-367a-add0-fc0e-710fb396e636.png">

次の記事は、On-PとOCIの間、LibreswanでIPSec VPN接続を立てるシミュレーションです。
[On-PとOCI間のIPSec VPN接続のシミュレーション (Libreswanを利用)](https://qiita.com/liu-wei/items/4d6c4c9e3662f1ffbf58)

## 1-8. OCI Secure Desktop サービス
このサービスの特徴は、エンドユーザに安全なデスクトップ接続を提供できることです。特に多数のエンドユーザの同時接続という利用場面に向きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d4f7c3a2-97e6-fe2a-8d48-9e099d8c92ec.png)

__特徴__
- パブリックに公開するポートは<strong>HTTPS</strong>（443）であり、セキュアな接続が確保できる。
- ユーザーは、Webブラウザまたは専用の「Oracle Secure Global Desktop Client」を利用して接続する。
- 多数のエンドユーザーの同時接続ケースに対応している。

__制限事項__
- 対応しているOS: Oracle Linux 7 and 8, Windows 10 and 11

詳細について、「[OCI Secure Desktops の使用体験](https://qiita.com/letian/items/aa467ad1059c7fc16e43)」をご参照にしてください。

# 2. 各種接続方法の比較
関連機能の公式ドキュメントを参照したい場合、表内のリンクをクリックしてください。

|接続方法|インターネットの利用|踏み台<br>の経由|OSの制限|利用場面|デメリット|
|:--|:--:|:--|:--|:--|:--|
|踏み台経由|Yes|<strong>Yes</strong>|なし|一般的な利用方法であり、セキュアかつ長時間なセッションを求める場合。|踏み台サーバが必要|
|RD Gateway|Yes|<strong>Yes</strong>|<strong>Windows</strong>|Windows向け、パブリックに3389ポートを公開したくない場合。|⏳初期セッションを立てる時間が約1分|
|[OCI Bastion](https://docs.oracle.com/ja-jp/iaas/Content/Bastion/Concepts/bastionoverview.htm)|Yes|No|なし|踏み台サーバを立てず、手軽に接続したい場合。|⏳セッション存続時間（最大3時間）|
|[NLB](https://docs.oracle.com/ja-jp/iaas/Content/NetworkLoadBalancer/introducton.htm#Overview)|Yes|No|なし|踏み台サーバを立てず、手軽に接続したい場合。|特にない|
|[Cloud Shell](https://docs.oracle.com/ja-jp/iaas/Content/API/Concepts/cloudshellintro.htm#Cloud_Shell_Private_Access)|Yes|No|Linux|踏み台サーバを立てず、<strong>シリアル・コンソール</strong>で手軽に接続したい場合。|⏳セッションタイムアウト（20分）|
|[コンソール接続](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/serialconsole.htm)|Yes|No|なし|<strong>トラブルシューティング</strong>|⏳セッションタイムアウト|
|[サイト間VPN](https://docs.oracle.com/ja-jp/iaas/Content/Network/Tasks/overviewIPsec.htm)|Yes|No|なし|<strong>プライベートIP</strong>で通信したい場合|🛠️接続設定は、比較的に複雑|
|[FastConnect](https://docs.oracle.com/ja-jp/iaas/Content/Network/Concepts/fastconnectoverview.htm)|<strong>No</strong>|No|なし|1. インターネットを経由せず、<strong>専用線</strong>で接続したい場合。<br>2. <strong>大量のデータ転送</strong>に向く。|💰<strong>回線費用</strong>がかかる|
|[Secure Desktop](https://docs.oracle.com/ja-jp/iaas/secure-desktops/home.htm)|Yes|No|<strong>ある</strong>|多数のエンドユーザの同時接続|1.初期設定は比較的に複雑<br>2.対応している<strong>OSの種類が少ない</strong>|

利用場面に応じて、適切な接続方法を選びましょう。

以上です。

----
__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)
[プライベート・サブネット内のOracle Base DB と ADBインスタンスに接続する方法のまとめ](https://qiita.com/letian/items/077b4cfc74eab90339cc)