1.変更内容
次の条件全てを満たす時、以下の動作となります。
<条件>
- Windows版ASTERIA Warp 4.8.0以降の環境においてFTPサービスを利用、かつ
- 同時に複数のFTPクライアントからアクティブモードを使用してファイル転送を行った場合
<動作>
ASTERIA WarpのFTPサービス側にて既にアクティブモードで接続しているクライアントが存在する場合に、同様のリクエストに対しては、タイミングによってレスポンスコード550(ファイルシステム関連のエラーを示す)が返され、そのリクエストは失敗します。
<補足>
ASTERIA WarpのFTPサービス側にて上記の動作がなされた場合には、ログファイル(FTPServic.log)に以下のメッセージが出力されます。
ログ出力レベル:INFO
メッセージ内容:"java.net.BindException: Address already in use: JVM_Bind"
2.原因/変更理由
Windowsプラットフォームで発生する脆弱性の問題を改善する為に、Javaのバージョン Oracle Java 7u25 から、同じポートに対し複数プロセスのバインドを防ぐ対策がなされました。その結果、それらを利用しているASTERIA Warp 4.8.0以降では、FTPサーバでのアクティブモードによるコネクション生成時に使用するローカルポート(20)の同時利用ができなくなっています。
3.対応方法
現在考えられる対応方法としては、以下の3つとなります。
- FTPクライアントでパッシブモードを使用する。
- レスポンスコード550を受け取れるFTPクライアントを使用して、エラー発生時は再度処理を行う。
-
FTPサービス起動時のオプションに「-Dsun.net.useExclusiveBind=false」を付加し、以前のFTPサービスの仕様として動作させる。
ただし、このオプション付加についてはバインド時に使うポートの同時利用においてOracle Java7u25より前の仕様として動作することになり、Windowsプラットフォームで発生する脆弱性の問題を認識した上での利用となります。この詳しい設定方法等についてはASTERIA Warp/Warp Liteのユーザーサイトからお問い合わせください。
4.その他
上記のように、ASTERIA Warp 4.7.1以前と4.8.0以降では動作に差異が生じる場合がございます。これらバージョンをまたぐバージョンアップ時にはご注意ください。