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などを実行して、トラフィックが反対側に到達したときにルーティングなどを明示的に制御できるようにすることです。