単一ポートを介した複数ポートのトンネリング [冗長]

単一ポートを介した複数ポートのトンネリング [冗長]

SSHトンネルを介してローカルコンピュータからリモートコンピュータに複数のポートを転送したいと思います。しかし、私はこれが単一のポートで発生したいと思います。単一ポートと複数のアプリケーション間で再利用できるプロトコルまたはツールはありますか?

編集:多くのコンピュータから単一のリモートデバイスに転送される多くのポートがあり、各コンピュータのアプリケーションレベルで多重化して、そのリモートでできるだけ少ないポートを使用したいと思います。特定のプロトコルを再利用するSSHなどのソリューションを見たことがありますが、プロトコルに依存しない方法でメッセージをラップする一般的なソリューションはわかりません。

答え1

SSHを使用すると、コマンドラインで複数のポートを指定してトンネルを設定できます(例:ここ):

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

単一のローカルポートだけを使用したいと思いますか?

SSHは送信元ポート<->宛先ポートマッピングのみを実行します。 1つのソースポート<->複数の宛先ポートが必要な場合は、基本的な問題があります。たとえば、ローカルポート10001にトラフィックを送信する場合、SSHはもちろんのこと、どの宛先ポートが必要なのかをどうやって知ることができますか?

一部のプロトコルには、ペイロードの一部として送信されたデータがペイロードの宛先を指定する機能があります。 HTTPはHost:ヘッダを介してこれを行います。 SSHは、「Xは私の仕事であり、他人の仕事ではない」というUnixの哲学を採用しているため、送信するトラフィックをスニッフィング、デコード、または理解していません。したがって、役に立ちませんが、ソースまたはターゲットシステムで実行されているプロキシサーバーが役立ちます。 HTTP以外のプロトコルでは、「マルチプレックス」プロキシとして機能するサービスを探すか開発する必要があります。考える注意を払うと、SMTPおよびFTP用のユーティリティがあります。

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

関連情報