本メールはHULFT技術サポート契約締結ユーザーの皆様を対象に発信させていただいております。
当メールの配信停止及び変更につきましては、文末にご案内しております。
===============================================================
HDC-EDI Base/FTPサーバアクティブモードによる
同時ファイル転送ができない件について
===============================================================
Oracle Javaの仕様変更に伴い、Windows上のHDC-EDI Base B2B、HDC-EDI Base B2B LE及び
HDC-EDI Base E2XでFTPサーバのアクティブモードにおいて同時にファイル転送が
できないという事象が検出されましたので、以下のとおりご報告致します。
事象、発生原因、対応策の内容をご確認いただき、何卒ご対応の程お願い申し上げます。
1.現象
Windows上のHDC-EDI Base B2B、HDC-EDI Base B2B LE 及びHDC-EDI Base E2Xで、
FTPサーバのアクティブモードにおいて同時にファイル転送が行えずエラーが発生します。
以下の手順では、最初のセッションはファイル転送を開始しますが、
次に転送を開始した通信はjava.net.BindException の例外が発生して異常終了します。
(1)2回線以上のFTP着信回線を用意し、複数のFTPクライアントからアクティブモードで
接続を受ける
(2)接続された複数のFTPクライアントと、同時にファイル転送が行われる
※HDC-EDI Baseの稼働記録には以下のメッセージが出力されます。
『10083014:FTP手順で端末へのデータ接続用のソケット生成時に障害が発生しました
障害詳細=java.net.BindException: アドレスがすでに使われています』
2.発生条件
■稼働環境
【OS】Windows Server
【Java】Oracle Java 7u25以上、あるいはJavaサポートを受けている場合は
Oracle Java 6u51以上
■回線情報
FTPの着信回線を2回線以上で運用し、FTPデータポート番号に同じローカルポートを
使用している場合
※ポート番号を省略した場合は、ローカルポート(20)が設定されます
■タイミング
複数のFTPクライアントからアクティブモードで接続を受け、同時にファイル転送が行われた場合
3.発生原因
Windows プラットフォームで発生する脆弱性の問題を改善する為に、上記に挙げた
Javaのバージョンから、同じポートに対し複数プロセスのバインドを防ぐ対策が行われています。
その結果、FTPサーバのアクティブモードがコネクション生成時に使用する
ローカルポート(20)の同時利用ができなくなりました。
※通常FTPサーバでは、アクティブモードで接続しに行くデータコネクションにローカルポート(20)
を固定利用する仕様になっています。今回のJava が行った対策によりローカルポート(20)
の同時利用ができなくなったため、HDC-EDI Base では10083014 のエラーが発生します。
※FTP について:http://www.nina.jp/server/basic/ftp.html を参考
4.対応方法
以下は、本事象への対応策です。いずれかの対応策の適応をお願い致します。
1) ローカルポート(20)を固定する必要のない運用の場合、FTP回線情報の
「FTP データポート番号」を(20)から(0)に変更。
※ローカルポートを固定化せず、ランダムなポートとして使用します。
但し、ファイアウォールなどの設定を考慮する必要があります。
2) Java プロパティ「-Dsun.net.useExclusiveBind=false」をHDC-EDI Base起動時に指定する。
※このJava プロパティを指定することで、Bind時に使うポートの同時利用に対して、
Oracle Java7u21以前の仕様として動作させることができます。
但し、Windows プラットフォームで発生する脆弱性の問題を意識した上での利用となります。