0

私の問題は、送信 IP によって端末を識別するプロトコルです。そのプロトコルを実装するある種のプロキシを使用して、このサーバーへの複数の端末の接続を管理したいと考えています。

したがって、IP 1.2.3.4 によってサーバーによって識別される端末 A と、IP 5.6.7.8 を使用してサーバーによって識別される端末 B があります。これで、プロキシはターミナル A と B を持つローカル ネットワークに配置されます。

端末 A がサーバーに到達する必要がある場合、プロキシにクエリを実行し、プロキシは IP 1.2.3.4 を使用して端末 A に代わって要求をサーバーに送信する必要があります。端末 B がサーバーに到達する必要がある場合、プロキシにクエリを実行し、プロキシは、IP 5.6.7.8 を使用して端末 A に代わって要求をサーバーに送信する必要があります。

Javaでその問題を解決することさえ可能ですか、それともこれを達成するためにルーターでネットワークブードゥーを行う必要がありますか?

編集:物事を明確にするために。ネットワーク プロキシとは何か、ルーターの機能は知っています。また、必要に応じて高度なネットワーク ブードゥーを使用して、ネットワーク レベルで問題を解決する方法も知っています。私が知りたいのは、Java を使用して問題を解決できないという私の推測が正しいかどうかです。要するに、Java を使用して、特定の IP が割り当てられた特定のネットワーク インターフェイスを使用してトラフィックを送信できるか、それともトラフィックをルーティングするためにオペレーティング システムの動作に依存する必要があるか (この場合、高度なネットワークブードゥーが必要になります)?

Edit2: ネットワーク トラフィックのルーティングを Java で実行できる場合は、調べる場所を簡単に示してください。私自身のグーグルは、有用な結果を返しませんでした。

4

1 に答える 1

1

1) Java を使用した tcp tunelling の実装が既にいくつかあります。以下にいくつかの例を示します。

2) これらの既存の実装を使用しても、java.net.Socket を使用してプロキシに到着するパケットを転送することにより、独自の処理を行うことができます。

3) java.lang.Runtime.exec() とsocat linux コマンドを使用した特定の実装がより良いオプションになると思います。socat は Netcat と同じですが、セキュリティと chroot をサポートしており、ファイル、パイプ、デバイス、TCP ソケット、Unix ソケット、SOCKS4 のクライアント、プロキシ CONNECT、SSL などを介してさまざまなプロトコルで動作します。すべてのポート 80 接続をリダイレクトするにはIP 202.54.1.5 へ:

$ socat TCP-LISTEN:80,fork TCP:202.54.1.5:80
于 2013-05-22T12:05:49.713 に答える