
私が開発しているJavaアプリケーションがあります。私は制御できない外部データベースサーバーを使用します。接続エラーをシミュレートしたいのですが、できません。この状況を作成するためにiptablesとtcを試しましたが、Javaプログラムが実行された後にデータベースに対するクエリを作成できます。アプリケーションを再起動すると、ブロックは成功します。私が理解していないものはありますか?
答え1
最初に理解していないのは、iptablesルールを表示しないとデバッグできないことです。
つまり、潜在的な落とし穴があると考えています。しかし、もちろん、それがあなたの問題かどうかはわかりません。
Javaアプリケーションは、起動時にデータベースへのTCP接続を一度確立する可能性が高いです。ファイアウォールが接続確立パケットのみをブロックし、確立されたTCPセッション(iptables -A -p tcp -m state --state ESTABLISHED,RELATED -j ALLOW
)の一部であるパケットを許可している場合、アプリケーションはデータベースと通信し続けることができます。通信をブロックするには、アプリケーションを起動する前にファイアウォールを設定するか、データベースポートに向かうすべてのTCPパケットをブロックする必要があります。