Java アプリケーションで socks5 サーバーに接続しましたが、外部アプリケーションを起動して、すべての接続を socks5 サーバー経由で実行したいと考えています。外部アプリケーション自体は、socks5 をサポートしていません。
ここで私の頭を悩ませて、どんな入力でも素晴らしいでしょう..
私が知っている 2 つのトリックは、標準のランタイム ライブラリを置き換えるか、同様のトリックを使用して OS ネットワーク呼び出しをインターセプトするか、カーネルで細かく調整された一連のファイアウォール ルールを設定することです。
これらの手法はどちらも OS 固有のものであり、Java を使用してそれを行う方法はありません。
あなたの最善の策は、既存の socks5 ラッパーを実行し、そのプログラムが socksify のような外部アプリケーションを起動できるようにすることです。
私はこのアプローチについてさまざまな経験をしてきました。一部のアプリケーションは機能し、他のアプリケーションは機能しません。また、ロジックが見つかりませんでした。
YMMV
もう 1 つの方法は、Java アプリケーションで tcpproxy を実行し (たとえば、Apache MINA などを使用)、アプリケーションを localhost のプロキシ ポートに接続させることです。繰り返しますが、これは特定のサービスでのみ機能します。
外部アプリケーションが Java で作成されている場合、SOCKSはサポートされます。-DsocksProxyHost=host および -DsocksProxyPort=port で実行するだけです。[1] を参照してください。
[1]: http://download.oracle.com/javase/6/docs/technotes/guides/net/properties.html「ネットワーク プロパティ」。