web-dev-qa-db-ja.com

1つのポートを介して複数のポートをトンネリング

SSHトンネリングを使用して、ローカルマシンからリモートマシンにいくつかのポートを転送したいと思います。ただし、これを1つのポートで実行したいと思います。単一のポートと複数のアプリケーション間で多重化できるプロトコルまたはツールはありますか?

編集:多数のマシンから単一のリモートに多数のポートを転送していて、マシンごとにアプリケーションレベルでそれらを多重化して、そのリモートでできるだけ少ないポートを使用したいと考えています。特定のプロトコルを多重化できるsshlのようなソリューションはありますが、プロトコルに依存しない方法でメッセージをラップできる一般的なソリューションはわかりません。

5
szxk

SSHでは、コマンドラインで複数のポートを指定してトンネルを作成できます(例: here ):

$ ssh -L 10001:one.securedomain.com:3389 -L 10002:two.securedomain.com:3389

単一のローカルポートのみを使用したいということですか?

SSHは、送信元ポート<->宛先ポートのマッピングを作成するだけです。 1つの送信元ポート<->複数の宛先ポートが必要な場合は根本的な問題があります-例:ローカルポート10001にトラフィックを送信する場合、どの宛先ポートが必要かをどのように(SSHよりもはるかに少ない)知っているはずですか?

一部のプロトコルには、ペイロードとして送信されるデータの一部がペイロードの宛先を指定する機能があります。 HTTPは、Host:ヘッダーを使用してこれを行います。 SSHは「Xは私の仕事であり他には何もない」というUnix哲学を採用しているため、トンネリングしているトラフィックをスニッフィング、デコード、または理解しません。だからそれはあなたを助けることができませんが、ソースまたは宛先システムで実行されているプロキシサーバーはそうかもしれません。 HTTP以外のプロトコルの場合、「多重化」プロキシとして機能するサービスを検索または開発する必要があります-IthinkSMTPおよびおそらくFTPのユーティリティがありますあなたが十分に一生懸命に見えるならば。

1つの方法は、SSHトンネルを介してOpenVPNのようなものを実行することです。これにより、トラフィックが反対側に到達した後で、ルーティングなどを明示的に制御できます。

2
LawrenceC