ServerSocket で接続をリッスンする Java アプリ (アプリケーション コンテナーで実行されていない) があります。localhost からの接続のみを受け入れるようにしたいと思います。現在、接続が受け入れられた後、ピア IP をチェックし、ループバック アドレスでない場合は拒否しますが、ピア IP アドレスがスプーフィングされる可能性があることはわかっています。したがって、可能であれば、ループバック インターフェイスのみをリッスンするソケットにバインドすることをお勧めします。これは可能ですか?
bind() を呼び出すときに "127.0.0.1" をローカル アドレスとして指定するなど、いくつかの方法を試しましたが、うまくいきませんでした。前もって感謝します。
ご協力ありがとうございました。これがすべて私の間違いだったことを認めるのは恥ずかしい. 私たちのアプリケーションは 2 つの異なるポートでリッスンします。一方をループバック インターフェイスにバインドし、もう一方をテストしていました。実際に正しいポートに telnet で接続しようとすると、すべて正常に動作します (つまり、"127.0.0.1" へのバインドは想定どおりに動作します)。
ループバック アドレスのスプーフィングについては、その通りです。それを第一の関心事のように聞こえるようにするべきではありませんでした。実際、望ましい動作はローカル接続のみを取得することであり、ローカル インターフェイスのみにバインドすることは、すべての接続を受け入れてから非ローカル接続を閉じるよりも直接的な方法です。