あるローカルポートから別のポートにトンネルを作成する簡単な方法は何ですか?

あるローカルポートから別のポートにトンネルを作成する簡単な方法は何ですか?

192.168.1.x:8000 ではなく 127.0.0.1:8000 からのみアクセスできる開発サーバーがあります。クイックハッキングでは、ローカルネットワークから192.168.1.x:8001に接続でき、クライアントと127.0 flow.0.1の間でトンネリングできるように、別のポート(8001など)でリッスンするように設定する方法はありますか? :8000?

答え1

socatサーバーから:

socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000

デフォルトでは、socatTCPポート8001はコンピュータのすべてのIPv4またはIPv6アドレス(サポートされている場合)でリッスンされます。 IPv4/6に置き換えたり、tcp-listen制限tcp4-listentcp6-listenたり,bind=that-address

プロキシする接続ソケットの代わりにランダムなアドレスを使用する場合、またはlocalhostアドレス解決をIPv4またはIPv6アドレスに制限する場合に使用tcpできますtcp4tcp6

ポート8000​​をリッスンするサーバーは、接続が元のクライアントではなくプロキシ(サーバーの場合)localhostから出ているように見えます。localhost使用する必要がありますDNAT法(ただし、スーパーユーザー権限が必要です。)サーバーは、クライアントが誰であるかを知ることができます。

答え2

SSHを使用するのが最も簡単なソリューションです。

ssh -g -L 8001:ローカルホスト:8000 -f -N[Eメール保護]

これにより、ワークステーションのローカルポート8001がRemote-server.comポート8000​​のローカルホストアドレスに転送されます。これは
-g、ネットワーク内の他のクライアントが自分のワークステーションのポート8001に接続できるようにすることを意味します。それ以外の場合は、ワークステーションのローカルクライアントのみが転送されたポートに接続できます。
-Nつまり、私がすることはシェルを起動するのではなく、ポートを転送するだけです。
-fSSH接続とログインの成功後にバックグラウンドに分岐することを示します。
ポート8001は、SSHがシャットダウンまたはシャットダウンされるまで多くの接続で開かれています。 Windowsを使用している場合、優れたSSHクライアントPuTTYも同じことができます。ローカルポートとして8001を使用し、ターゲットにlocalhost:8000を使用し、設定からローカルポート転送を追加します。 PuTTYに正常に接続した後に追加できます。

答え3

レガシーを使用するのがnc最も簡単なソリューションです。

nc -l -p 8001 -c "nc 127.0.0.1 8000"

このバージョンはUbuntuのパッケージでnc利用可能です。netcat-traditional(あなたはupdate-alternativesそれをそう呼ぶか、そう呼ぶべきですnc.traditional。)

SSHと比較すると、暗号化はありません。単一ホストの外部で使用する場合は、この点に注意してください。

答え4

引用するデビッド・スピレット~の回答ServerFaultで見つからないリンクを利用可能なリポジトリに置き換えます。

rinetdはこれを行う必要があり、対応するWindowsバイナリは次のように使用できます。https://github.com/samhocevar/rinetd(Linuxで同じものを探している人にとっては、rinetdはほぼすべてのディストリビューションの標準リポジトリにあるので、「apt-get install rinetd」または「yum install rinetd」または同様のコマンドを使用してインストールできます)

構成ファイル形式を取る単純なバイナリファイルです。

bindaddress bindport connectaddress connectport

たとえば、

192.168.1.1 8001 127.0.0.1 8000

または

0.0.0.0 8001 127.0.0.1 8000

着信ポートをすべてのインターフェイスにバインドする場合。

関連情報