0

発信トラフィックをリダイレクトしようとしているので、1.1.1.1:2222 を要求された場合、ローカル マシンは代わりに 2.2.2.2:3333 に移動します。

Java を使用してこれを達成する最も簡単な方法は何ですか?

よろしくお願いします

Windows の hosts ファイルは違います。オプション

編集: IP 1.1.1.1:2222 は外部 IP (私が所有していないサーバー) です。したがって、トラフィックをリダイレクトするための単純なソケット サーバーを作成できません。どういうわけかパケットの方向を変更する必要があります

また、リダイレクトしたいのはOUTGOING部分であることに注意してください。簡単な例としては、www.google.dk を要求すると、facebook が表示されます。

これは Java から行う必要があります。

4

2 に答える 2

1

Javaではこのようなことはできません。実際、通常、ユーザースペースアプリケーションではこのことを行うことはできません。

Linuxプラットフォームを使用している場合はiptables、特定のIPアドレス/ポート宛ての特定のタイプの発信パケットをインターセプトし、宛先IPアドレスを書き換えるように構成できる可能性があります。ただし、これは実際にはシステム/ネットワーク管理の問題であり、プログラミングの問題ではありません。

ご想像のとおり、非特権アプリケーションによってトラフィックが再ルーティングされる可能性がある場合に実行できる、あらゆる種類の厄介なことがあります。iptablesの設定を変更するには、Linuxでroot権限が必要です。


これはJavaから実行する必要があります。

さて、あなたがそれ自身の要求をリダイレクトするアプリケーションについて尋ねていない限り、それはJavaで/Javaから行うことはできません。

(例外的なケースでは、アプリケーションコードの上位レベルが要求している場所とは別の場所に接続を開くカスタムソケットファクトリを実装することで、これを実行できる可能性があります。ただし、それはあなたが要求していることではないと思います。にとって。)

于 2012-05-04T11:10:20.930 に答える
0

基本的に、ソケットで簡単に実装できると思います:

  1. 1.1.1.1:2222 で ServerSocket を開きます
  2. 2.2.2.2:3333 へのソケットを開く
  3. 最初の outputStream を 2 番目の入力ストリームにリダイレクトし、その逆も同様です。

ここに例があります

于 2012-05-04T10:48:36.093 に答える