LoginSignup
2
0

ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の OCI VMに接続する

Last updated at Posted at 2022-12-06

初めに
冒頭ですが、この記事の位置付けは、次のシリーズ記事の1つです。
プライベート・サブネット内の OCI Compute に接続

プライベート・サブネットに格納されるOCI Computeインスタンス(VM)に接続するのに、いろいろな方法があります。踏み台サーバを立てず、インターネットから接続したい場合、パブリック・サブネット内のネットワーク・ロード・バランサ(NLB)を経由するのは、選択肢のひとつです。
image.png

接続先のインスタンスをパブリック NLB のバックエンドとして追加し、関連するリスナー・ポート (3389、22) を開くと、NLB を介してプライベート・サブネット内のインスタンスに接続できます。

なお、一つ NLB に複数のバックエンドセットを追加できます。例えば、Windows VM 用に 1 つ、Linux VM 用に 1 つ、各バックエンドセットは独自のリスナー・ポートを使用します。それで共通のNLBを経由し、それぞれのポートでターゲットVMに接続できます。

メリット
✅ 踏み台サーバは不要(コストを節約)。
✅ 設定方法は簡単で、管理者の一時作業に向く(数分間で設定OK)。
✅ レイヤー4通信であり、可用性が高くて、レイテンシが低い。
✅ OCI Bastionと比べて、セッションタイムアウト(最大3時間)の心配がない。
✅ バックエンドをオフラインに切り替えると、接続の一時停止ができる。
✅ NLB自体は"Always Free"でカバーできるので、無料で使える。

目次

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 (デフォルト)
image.png

VCNとパブリック・サブネットを指定し、次へをクリックします。
image.png

リスナーの構成
リスナー名前:適当な名前を入力
トラフィックのタイプ:TCP
イングレス・トラフィック・ポート:デフォルトは、「任意のポートを使用」となっているが、この例では、Windows リモート・デスクトップ用のポート(3389)を指定する。
image.png

バックエンドの選択
バックエンド名:適当な名前を入力する。
"Preserve source IP (ソースIPの保持)":デフォルトはチェックしているので、そのままでOK。
この場合、バックエンド・サーバがクライアント側のIPを識別できるので、許可しないとアクセスできない。セキュリティ・リスト(or NSG)の Ingress ルールには、ソースIPを追加してください。
image.png

「バックエンドの追加」をクリックし、接続先のインスタンスを選択します。
image.png

ヘルス・チェック・ポリシーの部分で、TCPプロトコルを指定し、次へをクリックします。
image.png

確認および作成
情報を確認した後、作成ボタンをクリックし、作成を開始します。
image.png

作成後
ロード・バランサの状態は、"ACTIVE"になったら、ヘルス・チェックは「OK」であることを確認します。

次のステップで、NLBのパブリックIPを使いますので、メモしておいてください。image.png

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を使用する場合

  1. バックエンド・セットの追加作成
    Networking → Load Balancers → Load Balancer Details → Backend Sets → Create Backend Set
    image.png
    ヘルス・チェック・ポリシーの部分に、TCPプロトコルを指定します。
  2. バックエンドの追加
    作成されたバックエンド・セットをクリックし、詳細画面に入ります。
    image.png
    「バックエンドの追加」をクリックします。
    image.png
    接続先サーバを選択し、追加ボタンをクリックします(ポートを 22に指定)。
    image.png
    追加後、次のように確認できます。
    image.png
  3. リスナーの追加
    Networking → Load Balancers → Load Balancer Details → Listeners -> Create Listener
    image.png
    リスナーの名前:適当な名前を入力
    プロトコル:TCP
    ポート:22を指定
    バックエンド・セット:追加したBackendSet02を指定

    追加後、次のように確認できます。
    image.png

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のリスナー・ポートを限定するのを推奨します。

以上です。


関連記事
オラクル・クラウドの個人シリーズ・ブログ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0