この種のことは通常、別のファイアウォール(ルーターやゲートウェイボックスなど)または一方または両方のクライアントマシンで実行されているファイアウォールソフトウェアを使用して行われます。
これは、Javaで実装するのが賢明な種類のものではありません。
編集-このフォローアップに応えて
私はそのようなことはJavaではお勧めできないことを知っていますが、それでもそれを実装する必要があります。そうするための手段はありますか?
Linuxマシンにクライアント側ファイアウォールを実装することについて話していると仮定します。私は2つのアプローチを考えることができます:
と友達を使って、OSカーネルのネットワークパケットフィルターを操作するProcess.execute()
Linux管理ユーティリティを実行できます。iptables(8)
これは、最も単純なJavaベースのアプローチです。ただし、Javaアプリはとして実行する必要がありますroot
。
iptables(8)
パケットフィルターを操作し、Javaで同じ機能をコーディングするために何をしているのかをリバースエンジニアリングすることができます。これは、JNIまたはJNAを介してCで機能の一部を実装することを含め、より多くのコーディング作業になります。そして、アプリはとして実行する必要がありますroot
。
しかし、はるかに簡単なアプローチはiptables(8)
、コマンドラインから実行するか、優れたGUIベースの管理ツールを使用して変更を加えることです。
上記のシナリオでは、ファイアウォール自体はJavaに実装されていないことに注意してください。あなたがしているのは、Javaアプリケーションからファイアウォールを管理することだけです。リモートでさえ実用的なJavaでフィルタリング/ブロッキングを実際に行う方法は考えられません。