初めに
この記事の位置付けは、次のシリーズ記事の1つです。
プライベート・サブネット内の OCI Compute に接続
プライベート・サブネットに格納されるOCI Computeインスタンス(VM)に接続するのに、いろいろな方法があります。踏み台サーバを立てず、インターネットから接続したい場合、パブリック・サブネット内のネットワーク・ロード・バランサ(NLB)を経由するのは、選択肢のひとつです。
接続先のインスタンスをパブリック NLB のバックエンドとして追加し、関連するリスナー・ポート (3389、22) を開くと、NLB を介してプライベート・サブネット内のインスタンスに接続できます。
なお、一つ NLB に複数のバックエンドセットを追加できます。例えば、Windows VM 用に 1 つ、Linux VM 用に 1 つ、各バックエンドセットは独自のリスナー・ポートを使用します。それで共通のNLBを経由し、それぞれのポートでターゲットVMに接続できます。
メリット
✅ 踏み台サーバを立てる必要がないため、コストを節約できる。
✅ 設定方法は簡単で、管理者の一時作業に向く(数分間で設定OK)。
✅ レイヤー4通信であり、可用性が高くて、レイテンシが低い。
✅ OCI Bastionと比べて、セッションタイムアウト(最大3時間)の心配がない。
✅ バックエンドをオフラインに切り替えると、接続の一時停止ができる。
✅ NLB自体は"Always Free"でカバーできるので、無料で使用できる。
NLB自体は停止できませんが、バックエンドをオフラインにすることは可能です。使用しないときにオフラインに切り替えることで、踏み台サーバーを一時停止するのと同じような効果が得られます。
目次
1. 事前準備
1-1. 関連する OCI リソースの作成
タイプ | 項目 | 値 | コメント |
---|---|---|---|
VCN | CIDR | 10.0.0.0/16 | |
パブリック・サブネット | CIDR | 10.0.0.0/24 | NLB |
プライベート・サブネット | CIDR | 10.0.1.0/24 | 接続先サーバ |
インターネット・ゲートウェイ | ルート表に追加する | ||
セキュリティ・リスト (パブリック・サブネット用) | Ingress | ソース側のIP, TCP 3389,22 | 接続元の IP アドレスを指定する |
Egress | 0.0.0.0/0, 全てのプロトコル | ||
セキュリティ・リスト (プライベート・サブネット用) | Ingress | 10.0.0.0/24, TCP All | NLBからのアクセスを許可 |
Ingress | ソース側のIP, TCP 3389,22 | "Preserve source IP"をチェックする時、バックエンド・サーバがソース側のIPを識別できるので、許可しないとアクセスできない。 | |
Egress | 0.0.0.0/0, 全てのプロトコル | ||
ルート表 (パブリック・サブネット用) | ルール | ターゲット: インターネット・ゲートウェイ 宛先: 0.0.0.0/0 |
|
Compute インスタンス | OS | Windows サーバ 2022 | プライベート IP: 10.0.1.167 |
OS | Oracle Linux 9 | プライベート IP: 10.0.1.213 |
1-2. OpenSSH のインストール
この例では、OpenSSHを使ってLinux VMに接続します。まだインストールされていない場合、PowerShellを起動して、以下のコマンドでインストールしてください(管理者ユーザで実行)。
コマンド:Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
PS C:\windows\system32> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
PS C:\windows\system32>
2. NLBの作成
Networking → Load Balancers → Create Load Balancer
タイプの選択
レイヤー4の"ネットワーク・ロード・バランサ"を選択し、進んでください。
詳細情報の追加
NLBの名前:適当な名前を入力
可視性タイプ:パブリック (デフォルト)
パブリックIPの割当て:エフェメラル IPv4 (デフォルト)
VCNとパブリック・サブネットを指定し、次へをクリックします。
リスナーの構成
リスナー名前:適当な名前を入力
トラフィックのタイプ:TCP
イングレス・トラフィック・ポート:デフォルトは、「任意のポートを使用」となっているが、この例では、Windows リモート・デスクトップ用のポート(3389)を指定する。
バックエンドの選択
バックエンド名:適当な名前を入力する。
"Preserve source IP (ソースIPの保持)":デフォルトはチェックしているので、そのままでOK。
この場合、バックエンド・サーバがクライアント側のIPを識別できるので、許可しないとアクセスできない。セキュリティ・リスト(or NSG)の Ingress ルールには、ソースIPを追加してください。
「バックエンドの追加」をクリックし、接続先のインスタンスを選択します。
ヘルス・チェック・ポリシーの部分で、TCPプロトコルを指定し、次へをクリックします。
確認および作成
情報を確認した後、作成ボタンをクリックし、作成を開始します。
作成後
ロード・バランサの状態は、"ACTIVE"になったら、ヘルス・チェックは「OK」であることを確認します。
次のステップで、NLBのパブリックIPを使いますので、メモしておいてください。
3. Windows VMに接続する
ローカル クライアントから「リモート デスクトップ接続」を起動します。NLBのパブリックIPを入力して、接続をクリックします。
「このコンピュータへの接続について今後確認しない」にチェックを入れ、「はい」をクリックして続行します。
4. Linux VMに接続する
4-1. NLBを新規作成する場合
上記のSTEP 2を従って、作成していただければと思います。作成後、STEP 4-3を実施してください。
注意点は以下の2か所だけです。
- リスナーの構成画面:ポート3389 (RDP)をポート22 (SSH)に変更する。
- バックエンドの選択画面:接続先サーバをLinuxに指定する。
4-2. 既存NLBを使用する場合
- バックエンド・セットの追加作成
Networking → Load Balancers → Load Balancer Details → Backend Sets → Create Backend Set
ヘルス・チェック・ポリシーの部分に、TCPプロトコルを指定します。
- バックエンドの追加
作成されたバックエンド・セットをクリックし、詳細画面に入ります。
「バックエンドの追加」をクリックします。
接続先サーバを選択し、追加ボタンをクリックします(ポートを 22に指定)。
追加後、次のように確認できます。
- リスナーの追加
Networking → Load Balancers → Load Balancer Details → Listeners -> Create Listener
リスナーの名前:適当な名前を入力
プロトコル:TCP
ポート:22を指定
バックエンド・セット:追加したBackendSet02
を指定
追加後、次のように確認できます。
4-3. SSHでLinux VMにログイン
PowerShell画面を起動して、次のコマンドでログインします。
コマンド:ssh -i <private_key> <NLB_Public_IP> -l <username>
例:ssh -i $home\.ssh\id_rsa XXX.XXX.168.36 -l opc
PS C:\Users\Wei> ssh -i $home\.ssh\id_rsa XXX.XXX.168.36 -l opc
The authenticity of host 'XXX.XXX.168.36 (XXX.XXX.168.36)' can't be established.
ECDSA key fingerprint is SHA256:<fingerprint>.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'XXX.XXX.168.36' (ECDSA) to the list of known hosts.
Last login: Sun Dec 4 11:01:33 2022 from 10.0.0.237
[opc@linux9 ~]$
サマリー
ここまで、一つのNLBを経由し、Window/Linuxの2つインスタンスに接続できました。設定方法は簡単で、管理者の一時作業に向きます。セキュリティ・リスト(or NSG)にソース側のIPアドレスを絞り込み、NLBのリスナー・ポートを限定するのを推奨します。
以上です。
関連記事
オラクル・クラウドの個人ブログ一覧
OCI ロードバランサとOCI NLBの比較
ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の Oracle Base DB と Autonomous DB に接続する