Tips

Windowsで10054接続切断エラーを回避するために

日付2010/07/09
ID76127 (英語原文参照)
バージョンv11
プラットフォームWindows

Microsoftは, サーバーに対する同時TCP/IP接続キューのサイズを制限するためにセキュリティ対策を講じています。この設定はレジストリのSynAttackProtectキーに対応しており, サービスアタックを防止するために役立つ反面, 負荷の重い状況では, 正当なTCP/IP接続がサービスアタックに誤認されてしまうかもしれません。

この設定そのものは新しいものではなく, 実際, Windows XP, 2000,, NT4.0にも存在しましたが, Windows 2003までデフォルトの設定で無効になっていました。Windows 2003 SP1以降, 設定はデフォルトで有効です。

設定が有効の場合, リクエストの送信中にトランスポートレベルのエラーが発生したことを示唆するエラー10054が発生するかもしれません。

10054エラーは, SQL ServerやBizTalk Serverなど, TCP/IPを使用する他のサーバー製品でも発生することが報告されています。

http://msdn.microsoft.com/en-us/library/ms187005.aspx

この問題を回避する方法はふたつあります。

1. Windows Server 2003 SP 1およびSP2のサービス拒否攻撃検出設定を完全に無効にする。

注記:これはMicrosoftが提供する保護から意図的に外れることを意味しますので, 判断は慎重にしてください。たとえば, WANではなくVPNでデータベースを公開することにより, 本物のサービス拒否攻撃を受ける可能性を除外することができます。

関連する設定値は下記のレジストリに配置されています。

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Value name: SynAttackProtect
Value Type: REG_DWORD
Valid Range: 0,1
Default: 0

保護を無効にするには, SynAttackProtectをoに設定します。

2. Windows Server 2003 SP 1およびSP2のサービス拒否攻撃検出設定のレベルを調整する。

この操作には多くの試行錯誤が求められますが, 一定レベルの保護を維持することができます。

a. SynAttackProtectレジストリキーを値が1のREG_DWORDに設定します。

http://go.microsoft.com/fwlink/?LinkId=111477

b. TcpMaxHalfOpenレジストリキーを適切に設定します。

http://go.microsoft.com/fwlink/?LinkId=111478

c. TcpMaxHalfOpenRetriedレジストリキーを適切に設定します。

http://go.microsoft.com/fwlink/?LinkId=111479