これは、SSHの機能を利用してローカルにSOCKSプロキシを作成し、暗号化されたトンネル内で通信を中継する手法で、「ダイナミックポートフォワード」の事を指します。
ローカルポートフォワードとよく似ていますが、こちらは、特定のリモートホスト・ポートへの接続を固定的に中継するのに適しています。
一方の「ダイナミックポートフォワード」は、SOCKSプロキシとして柔軟に任意の通信先へアクセスできるため、複数のサービスやWebブラウジングなど幅広い用途に利用されます。
図1のように「端末(Windows)」が「踏台サーバ」にダイナミックポートフォワードをして、SOCKSプロキシに対応しているアプリケーション(chromeブラウザなど)で「複数のサーバ」に接続できます。
この仕組みにより、「複数のサーバ」は外部(許可無)から直接アクセスされるリスクを軽減し、かつ許可された外部(許可有)の「端末」だけがアクセス可能となります。
図1(ダイナミックポートフォワード)

この機能は、「踏台サーバ(SSHサーバ)」にダイナミックポートフォワードすることで、「踏台サーバ(SSHサーバ)」からのみ接続できる「複数のサーバ」の様々なサービス「HTTPS(443/tcp)、RDP(3389/tcp)、DB(1521/tcp)など」に対してアプリ通信が可能となります。
端末(Windows)のエフェメラルポートを利用したダイナミックポートフォワード(SOCKSプロキシ)
目的
「踏台サーバ」側でSSHダイナミックポートフォワード(SOCKプロキシ)を実行、「端末(Windows)」が「踏台サーバ」を経由して「複数のサーバ」へアプリ通信をする場合に利用します。
接続イメージ図

構成概要
- 端末(Windows):「踏台サーバ」へSSH接続をします。ループバックアドレス(localhost)のエフェメラルポートを「踏台サーバ」のSOCKSプロキシにして「複数のサーバ」にアプリ通信をします。
- 踏台サーバ:このサーバにSSH接続してきた「端末(Windows)」を「複数のサーバ」にアプリ通信させるサーバです。
- 複数のサーバ:「複数のサーバ」でさまざなサービスが稼働しています。「端末(Windows)」が「複数のサーバ」で稼働しているアプリ通信を利用したい目的のサーバです。
条件
- 「端末(Windows)」にSSHコマンドを実行できる環境を用意する必要があります。
<例>
BashエミュレータをインストールするとWindows端末でSSHコマンドを実行することできます。
Git Bashエミュレータ
URL:https://gitforwindows.org/ - 「端末(Windows)」のエフェメラルポート「1080/tcp」を使用します。
- 「端末(Windows)」から「踏み台サーバ」の「22/tcp」ポート(SSH)にアクセスできる必要があります。
SSHポートフォワードのコマンド
※「端末(Windows)」でBashエミュレータを起動して実行します。
ssh -D localhost:1080 user@10.10.20.10
ー>実行後、「踏台サーバ」の「10.10.20.10」にSSH接続するログインID(user)のパスワードを入力する。
コマンド説明
- -Dはダイナミックポートフォワードを指定します。-Dオプションを使用することで、「端末(Windows)」の指定したローカルポート(1080/tcp)を、「複数のサーバ」でオープンしている各ポート(443/tcp、3389/tcp、1521/tcp)に接続します。
- localhostは「端末(Windows)」自身を指しローカルループバック(127.0.0.1)のIPアドレスです。ローカルループバックを指定する場合は省略可能です。
- :1080は「端末(Windows)」側でLISTENするポート番号です。
- user@10.10.20.10は「踏台サーバ」に対するログイン情報です。「user」はSSH接続利用時のログインIDです。

「端末(Windows)」が「複数のサーバ」のWebに接続する方法
■Webブラウザ(Chrome)を利用する場合※Windows11
1.「スタート」メニュー => 「コントロールパネル」 => 「インターネットオプション」 を選択し「インターネットプロパティ」で以下のように設定します。
〈設定1〉

〈設定2〉

〈設定3〉

2.ダイナミックポートフォワード(SOCK)を利用することでWeb(10.10.20.40)サーバにアクセスできなかった「端末(Windows)」がChromeブラウザでアクセス可能となります。
〈Webアクセス結果〉

※今回の〈設定1〉〜〈設定3〉の間、「端末(Windows)」のWebブラウザ(Chrome)は、「踏み台サーバ」経由でアクセス可能なWebサイト(443/tcp)であれば、IPアドレス「10.10.20.40」以外にもアクセスできるようになります。
【注意事項】
〈設定1〉〜〈設定3〉を設定することで、普段「端末(Windows)」からアクセスできていたWebサイトへアクセス出来なくなる場合があります。
その場合は、〈設定1〉〜〈設定3〉の設定を元に戻してWebサイトへアクセスしてください。
各サーバ間の通信状況のまとめ
- 「端末(Windows)」から「踏台サーバ」へはSSH接続が可能です。
- 「端末(Windows)」から「複数のサーバ」へのアプリ通信(HTTPS、RDP、DBなど)はできません。
- 「踏台サーバ」と「複数のサーバ」間では、各種アプリ通信(HTTPS、RDP、DBなど)が可能です。
上記の条件の下、「端末(Windows)」から「踏台サーバ」を経由することで、「複数のサーバ」への各種アプリ通信(HTTP、RDP、DBなど)を利用することが可能です。
コメント