はじめに
以前、Oracle Cloud(OCI)で踏み台サーバーやNATゲートウェイの設定や動作を確認しましたが、今回はその環境をベースにポートフォワーディングで、プライベート・サブネットのwebサーバーへの接続を試みます。
[OCI] 踏み台サーバーからSSHでプライベート・サブネットのインスタンスへの接続と、NATゲートウェイを試してみる
お試し環境
ポートフォワーディングはOpenSSHの機能で、SSHセッションの中で他のTCPセッションをトンネリングして通過させることができます。ポートフォワーディングすることで、暗号化されてない通信をSSHを通して安全に通信できたり、プライベート・サブネットにあるWebサーバーやデータベースに接続することが可能です。
下図はポートフォワーディングにより踏み台サーバーを経由してプライベート・サブネットのwebサーバーに接続するための構成です。
ポートフォワーディングは多段の構成で使うので各構成要素を、ローカル、リモート、ターゲットと定義しました。それぞれが何に該当するかを頭の中で整理できていると、設定の際に混乱が生じにくいかと思います。
前提と準備
-
ポートフォワーディングは3種類ありますが、本稿では1, 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) |
-
ターゲットについて
- nginx インストール/設定/起動 確認済み
- プライベート・サブネットのセキュリティ・リストで イングレス・ルール/エグレス・ルールは設定済み
-
リモートについて
- /etc/ssh/sshd_config 以下の設定済み
- AllowTcpForwarding yes
- /etc/ssh/sshd_config 以下の設定済み
-
疎通テスト
-
リモートからターゲットへのSSH接続(認証)は確認済み
-
リモートからターゲットへの接続は確認済み
- リモートから curl http://192.168.100.3:80 発行で、ターゲットのindex.html を表示済み。
-
ローカル・ポートフォワーディング
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コマンドを実行します。
ssh コマンドは正常に実行されポートフォワーディングが有効になりました。
動作確認
続いて、ローカルのwebブラウザで localhost:8081 ポートでリクエストを発行します。
ターゲットのwebサーバーの初期ページが表示されローカル・ポートフォワーディングの正常動作が確認できました。
ダイナミック・ポートフォワーディング
ダイナミック・ポートフォワーディングは、リモートの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ホストの設定(黄色の部分)をします。
ダイナミック・ポートフォワーディングの有効化
PowerShell から上述のsshコマンドを実行します。
ssh コマンドは正常に実行されポートフォワーディングが有効になりました。
動作確認
ローカル・ポートフォワーディング(リモート・ポートフォワーディングも含め)と異なり、ターゲットはFirefoxで指定します。 Firefox の URL にターゲットのIPアドレスとポートを指定します。
ターゲットのwebサーバーの初期ページが表示されダイナミック・ポートフォワーディングの正常動作が確認できました。
参考) トラブルシューティング
うまく動作しない場合には、前述の 前提と準備 に記載の設定項目や、疎通テストが成功するかをチェックしてみてください。