[OCI] SSHポートフォワーディングしてみた


はじめに

以前、Oracle Cloud(OCI)で踏み台サーバーやNATゲートウェイの設定や動作を確認しましたが、今回はその環境をベースにポートフォワーディングで、プライベート・サブネットのwebサーバーへの接続を試みます。

[OCI] 踏み台サーバーからSSHでプライベート・サブネットのインスタンスへの接続と、NATゲートウェイを試してみる

お試し環境

ポートフォワーディングはOpenSSHの機能で、SSHセッションの中で他のTCPセッションをトンネリングして通過させることができます。ポートフォワーディングすることで、暗号化されてない通信をSSHを通して安全に通信できたり、プライベート・サブネットにあるWebサーバーやデータベースに接続することが可能です。

下図はポートフォワーディングにより踏み台サーバーを経由してプライベート・サブネットのwebサーバーに接続するための構成です。


ポートフォワーディングは多段の構成で使うので各構成要素を、ローカル、リモート、ターゲットと定義しました。それぞれが何に該当するかを頭の中で整理できていると、設定の際に混乱が生じにくいかと思います。

前提と準備

  • ポートフォワーディングは3種類ありますが、本稿では1, 3を取り上げます。
  1. ローカル・ポートフォワーディング
  2. リモート・ポートフォワーディング
  3. ダイナミック・ポートフォワーディング
  • 呼称
    • 上記 ポートフォワーディングの設定時に、以下の呼称を使います。
呼称 図中の表記 備考
ローカル My Laptop wndows10
PowerShell, ブラウザ(Firefox)を使用
リモート 踏み台サーバー(bastion01)
パブリックIP: 168.138.xxx.xxx
Oracle Linux 7
パブリック・サブネットの仮想サーバー
ターゲット webサーバー(private-web01)
プライベートIP: 192.168.100.3
Oracle Linux 7
プライベート・サブネットの仮想サーバー
nginx セットアップ済み(ポート80)

ローカル・ポートフォワーディング

SSHクライアントからリモートへSSH 22ポートを使いトンネリングを行います。ターゲットとなるwebサーバーへのリクエストはリモートのsshd を介してターゲットへ転送されます。

ローカル・ポートフォワーディングは次の書式でおこないます。ローカルのポートは 8081 を使ってみます。

ssh -L 8081:ターゲット:80 リモート

※ 8081の前にローカルのIPアドレスを記述しますが、省略した場合には localhost が指定されたとみなされます。

例)

ssh -L 8081:192.168.100.3:80 [email protected]

ローカル・ポートフォワーディング有効化

PowerShell から上述のsshコマンドを実行します。

ssh コマンドは正常に実行されポートフォワーディングが有効になりました。

動作確認

続いて、ローカルのwebブラウザで localhost:8081 ポートでリクエストを発行します。

ターゲットのwebサーバーの初期ページが表示されローカル・ポートフォワーディングの正常動作が確認できました。

ダイナミック・ポートフォワーディング

ダイナミック・ポートフォワーディングは、リモートのsshdがSOCKSプロキシとして振舞います。SOCKSプロキシに対応しているアプリケーションを使いターゲットのIPアドレスやポートを指定して実行します。

ダイナミックフォワーディングは次の書式でおこないます。ローカルのポートは 9999 を使ってみます。

ssh -D 9999 リモート

※ 9999の前にローカルのIPアドレスを記述しますが、省略した場合には localhost が指定されたとみなされます。

例)

ssh -D 9999 [email protected]

アプリケーション(Firefox)の設定

Socks 対応のアプリケーションとしてFirefox(webブラウザ) を使用します。

※ その他のアプリケーションの対応については巻末の参考URLをご覧ください。

Firefox の [オプション]-[ネットワーク設定]-[接続設定] からインターネット接続画面を表示

手動でプロキシーを設定する を選択し SOCKSホストの設定(黄色の部分)をします。

ダイナミック・ポートフォワーディングの有効化

PowerShell から上述のsshコマンドを実行します。

ssh コマンドは正常に実行されポートフォワーディングが有効になりました。

動作確認

ローカル・ポートフォワーディング(リモート・ポートフォワーディングも含め)と異なり、ターゲットはFirefoxで指定します。 Firefox の URL にターゲットのIPアドレスとポートを指定します。

ターゲットのwebサーバーの初期ページが表示されダイナミック・ポートフォワーディングの正常動作が確認できました。

参考) トラブルシューティング

うまく動作しない場合には、前述の 前提と準備 に記載の設定項目や、疎通テストが成功するかをチェックしてみてください。

参考URL

sshポートフォワーディング

ダイナミックポートフォワーディング

OpenSSH[実践]入門