初めに
オンプレミスからOracle Cloud Infrastructure (OCI)プライベートサブネット内のComputeインスタンスに接続する方法はいくつかあります。本記事は、Microsoft リモート・デスクトップ・ゲートウェイ (RDG) を介して Windows インスタンスに接続する方法を紹介します。
メリット
✅ RDG サービスは Windows サーバの標準機能である。
✅ HTTPS (443 ポート)を経由するので、パブリック・サブネットにTCP 3389 ポートを公開しない。
✅ クライアントと踏み台サーバーの間にSSL証明書認証を利用することで、セキュアな接続が確保できる。
✅ SSHポート転送の方法 (OCI Bastionなど) と比較して、SSHセッションのタイムアウトを心配することなく、長時間の接続が可能。
デメリット
🛠️ 踏み台サーバの作成・設定には手間がかかる。
⏳ クライアント側から初期セッションを立てるまでにやや長い時間がかかり、約1分ほど。
💰 コスト面では、Linux系の踏み台サーバよりも高くなる。
1. 事前準備
関連 OCI リソース
| タイプ | 項目 | 値 | コメント |
|---|---|---|---|
| VCN | CIDR | 10.0.0.0/16 | |
| パブリック・サブネット | CIDR | 10.0.0.0/24 | 踏み台サーバ |
| プライベート・サブネット | CIDR | 10.0.1.0/24 | 接続先サーバ |
| インターネット・ゲートウェイ | ルート表に追加する | ||
| セキュリティ・リスト (パブリック・サブネット用) | Ingress | XX.XX.XX.XX/32, TCP 443 | 接続元の IP アドレスを指定する |
| XX.XX.XX.XX/32, TCP 3389 | 最初にこれを追加する必要がある。RDG 経由で接続先のインスタンスに正常に接続できたら、削除しても問題がない。 | ||
| Egress | 0.0.0.0/0, 全てのプロトコル | ||
| セキュリティ・リスト (プライベート・サブネット用) | Ingress | 10.0.0.0/24, TCP All | 踏み台からのアクセスを許可 |
| Egress | 0.0.0.0/0, 全てのプロトコル | ||
| ルート表 (パブリック・サブネット用) | ルール | ターゲット: インターネット・ゲートウェイ 宛先: 0.0.0.0/0 | |
| Compute インスタンス | 踏み台サーバ | Windows サーバ 2022 | |
| 接続先サーバ | Windows サーバ 2022 | プライベート IP: 10.0.1.167 |
2. リモート・デスクトップ・ゲートウェイをインストール (踏み台)
サーバーマネージャーからインストールすることもできますが、PowerShellを使ったほうが手軽です。
踏み台サーバに RDP ログインし、次のPowerShell コマンドを実行します。Install-WindowsFeature RDS-Gateway -IncludeAllSubFeature -IncludeManagementTools

3. 承認ポリシーの作成 (踏み台)
サーバー・マネージャー → ツール → Remote Desktop Services → "リモート デスクトップ ゲートウェイ マネージャー"
RD ゲートウェイ マネージャー → ポリシー (右クリック) → 新しい承認ポリシーの作成
デフォルトの「RD CAP と RD RAP を作成する (推奨)」を選択し, 「次へ」をクリックします。
RD CAP の名前を入力し、「次へ」をクリックします。
「グループの追加」ボタンをクリックして、RD CAP に関連付けられるグループを追加します。
グループ名を入力し、「名前の確認」をクリックします。 有効なグループ名を確認した後、OK をクリックして画面を閉じます。
「次へ」をクリックして続行します。
デフォルトのままで、「次へ」をクリックして続行します。
タイムアウトを設定したくない場合、デフォルトのままで、「次へ」をクリックして続行します。
「次へ」をクリックします。
RD RAP の名前を入力し、「次へ」をクリックします。
同じグループを使用してもよいので、そのままで「次へ」をクリックします。
「ユーザーによる任意のネットワーク リソース (コンピューター) への接続を許可する」を選択し、「次へ」をクリックします。
「ポート 3389 への接続のみを許可する」はデフォルトでチェックされています。 「次へ」をクリックして続行します。
「完了」をクリックします。
ポリシーの作成を確認し、「閉じる」をクリックします。
4. SSL証明書の作成 (踏み台)
RD ゲートウェイ マネージャー → サーバー名をクリック → "証明書のプロパティを表示または変更"
このテストには自己署名証明書を使用します。「証明書の作成とインポート」をクリックして続行します。
デフォルトの証明書の名前は、サーバー名と同じです。 踏み台サーバーのパブリック IP またはパブリック DNS 名に変更します (このテストにはパブリック IP を使用)。
デフォルトのサーバー名を使用する場合、接続セッションを立てる時、問題-3が発生する可能性がありますので、ご注意ください。
作成後、次のようなメッセージが表示されます。
「適用」をクリックします。
証明書が踏み台サーバーにインストールされていることを確認し、OK をクリックして終了します。
5. SSL証明書のエクスポート (踏み台)
検索ボックスにcertlm.mscと入力し、管理コンソールを起動します。
個人 → 証明書 → 証明書を選択 → すべてのタスク → エクスポート
「次へ」をクリックします。
デフォルトのままで、「次へ」をクリックします。
デフォルトのままで、「次へ」をクリックします。
ファイル名を入力し、「次へ」をクリックして続行します。
「完了」 をクリックすると、次のような成功メッセージが表示されます。OK をクリックして終了します。
踏み台サーバーからローカル クライアントに証明書をコピーします。
6. SSL証明書のインポート (クライアント)
ローカル クライアントに保存されている証明書ファイルWin2022-RDG.cerをダブルクリックしたら、以下の画面が表示されます。「証明書のインストール」ボタンをクリックします。
「現在のユーザー」は、デフォルトでチェックされています。「次へ」をクリックして続行します。
「証明書をすべての次のストアに配置する」を選択し、「参照」ボタンをクリックします。
「信頼されたルート証明機関」を選択し、OK をクリックします。それ以外のストアを選択した場合、接続セッションを立てる時、問題-4が発生する可能性がありますので、ご注意ください。
「次へ」をクリックして続行します。
「完了」をクリックします。
次のような警告メッセージが表示されたら、「はい」 をクリックして続行します。
「OK」をクリックしてウィザードを終了します。
7. 接続テスト (クライアント/踏み台)
RD ゲートウェイ サービスを起動 (踏み台)
次のように、サービスを起動します。起動後の状態は「停止」から「実行中」に変わったことを確認します。
サーバー・マネージャー → リモート デスクトップ サービス → サーバー → サービス
ユーザをグループに追加 (踏み台)
RD CAP/RAP に関連付けられているグループにログイン・ユーザーを追加することを忘れないでください。このテストでは、デフォルトの opc ユーザーでログインします。
接続を開始 (クライアント)
ローカル クライアントから「リモート デスクトップ接続」を起動します。 「詳細設定」タブに切り替え、「設定」ボタンをクリックします。
「次の RD ゲートウェイ サーバー設定を使用する」を選択し、踏み台のパブリック IP またはパブリック DNS 名を入力します。 「ローカル アドレスには RD ゲートウェイ サーバーを使用しない」のチェックを外し、OK をクリックします。
「全般」タブに切り替え、接続先のWindowsサーバーのプライベートIPとユーザー名を入力し、「接続」ボタンをクリックします。
踏み台サーバーのユーザー名とパスワードを入力します。
ユーザー名の例:localhost\opc
次のように、リモート セッションの作成が始まります。しばらくお待ちください。このテストは、接続完了まで1分ほどかかりました。
「このコンピュータへの接続について今後確認しない」にチェックを入れ、「はい」をクリックして続行します。
接続先サーバーのユーザー名とパスワードを入力します。
接続先の Windows サーバーにログインできました。
セキュリティ・リスト(パブリック サブネット用)
最後に、TCP 3389 ポートのルールを削除し、443 ポートのみを保留します。
踏み台サーバーを接続先にしたい場合
「詳細設定」タブを上記と同様に設定し、「全般」タブで、コンピューター名にlocalhostを入力します。
トラブル・シューティング
うまくいかない時に、次をご参考ください。
問題-1 「リモート リソースを使用できません」

考えられる理由 1:RD ゲートウェイ サービスが開始されていません。("RD ゲートウェイ サービスを起動"をご参照)
考えられる理由 2:セキュリティ・リストに、接続元(クライアント)からの入力(Ingress)ルールが追加されていません。
問題-2 「リモート コンピューターに接続できません」

考えられる理由:ログイン ユーザーは、RD CAP/RAP に関連付けられているグループに追加されていません。("ユーザをグループに追加"をご参照)
問題-3 「サーバーアドレスと証明書のサブネット名が一致しません」

考えられる理由:証明書のサブジェクト名は、踏み台サーバーのパブリック IP または、パブリック DNS 名ではありません。(Step 4をご参照)
問題-4 「RD ゲートウェイの ID を確認できません」

考えられる理由:証明書は、「信頼されたルート証明機関」に配置されていません。(Step 6をご参照)
以上