LoginSignup
2
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-04-01

はじめに

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

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

お試し環境

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

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

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

前提と準備

  • ポートフォワーディングは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 opc@168.138.XXX.XXX

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

PowerShell から上述のsshコマンドを実行します。
image-20210330143925017.png
ssh コマンドは正常に実行されポートフォワーディングが有効になりました。

動作確認

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

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

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

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

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

ssh -D 9999 リモート

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

例)

ssh -D 9999 opc@168.138.XXX.XXX

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

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

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

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

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

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

PowerShell から上述のsshコマンドを実行します。
image-20210330172959383.png
ssh コマンドは正常に実行されポートフォワーディングが有効になりました。

動作確認

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

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

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

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

参考URL

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

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

OpenSSH[実践]入門

2
1
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
1