ビュー:
IWSS/IWSVA の下位に HTTP プロキシサーバが存在する構成の場合、当該サーバが多数の Web クライアントからの HTTP/HTTPS 要求を引き受けて IWSS/IWSVA へ渡すため、以下のような接続失敗の事象が起こりえます。

事象1:
下位 HTTP プロキシサーバで、クライアント IP アドレスに対するクライアントポート番号の短時間での再使用が発生しやすくなります。
IWSS/IWSVA 側で下位 HTTP プロキシサーバとの特定の TCP セッションが TIME_WAIT 状態で残っている状態で、下位 HTTP プロキシサーバが当該 TCP セッションと同じ「クライアント IP アドレス/クライアントポート番号」で新規 TCP 接続 (TCP SYN) を試みた場合、IWSS/IWSVA はその要求を「前回の TCP セッションの続き」と判断して、SYN/ACK 応答ではなく ACK 応答を返却します。
このとき、下位 HTTP プロキシサーバは、当該 ACK 応答を不正と判断して IWSS/IWSVA に TCP RST を送信いたしますが、IWSS/IWSVA はデフォルトで RFC1337 に従ってこの TCP RST を無視します。
下位 HTTP プロキシサーバは TCP SYN の再送を繰り返しますが、上述の TCP RST の無視が繰り返されることで、最終的に「TCP接続失敗」となることがあります。
 
事象2(IWSVAのみ):
下位 HTTP プロキシサーバと IWSVA の間にロードバランサを設置している場合、ロードバランサ側での挙動によっては、IWSVA 側が「ロードバランサが送信した TCP セグメント」を不正と判断して破棄することがあります。IWSVA は、デフォルトで「OS 側で不正と判断した TCP セグメント」を破棄するようにしているためです。
 
 
これらの IWSS/IWSVA 側での対処策は、以下になります。
下位 HTTP プロキシサーバを使用される環境では、事象への予防策として設定頂くことを強く推奨します。
 

事象1への対策

以下の手順を実施し、TIME_WAIT 状態の TCP セッションに対する TCP RST を受け付けるようにします。これにより、IWSS/IWSVA は当該 TCP セッションを即座に終了するため、下位 HTTP プロキシサーバからの再度の新規TCP接続要求を処理できるようになります。
本設定net.ipv4.tcp_rfc1337は、IWSVA 6.5 Service Pack 3ではsysctl.confに記述されておりませんが、デフォルトで"0"となっております。アップグレードパッケージによるService Pack 3へのアップグレードでも"0"となります。
IWSS 6.5 Patch 3では、新規インストール(RedHat Enterprise Linux 8向け)によってデフォルトで"0"に設定されます。アップグレードパッケージによってPatch 3にアップグレードした場合も、デフォルトで"0"に設定されます。
なお、下位 HTTP プロキシサーバ側で、使用可能なクライアントIPアドレス/クライアントポート番号を増やしていただくことでも対応可能です。

1. IWSS/IWSVA の Linux/CLI コンソールに root ユーザでログインします。

2. /etc/sysctl.conf をバックアップしたのちに vi で開きます。
 

# cp /etc/sysctl.conf /etc/sysctl.conf.org
# vi /etc/sysctl.conf
3. tcp_rfc1337 を探し、値を1から0に変更します。
 
(編集前)
net.ipv4.tcp_rfc1337=1
(編集後)
net.ipv4.tcp_rfc1337=0
4.ファイルを保存し、sysctl -p で設定を反映します。
# sysctl -p
 
 

事象2への対策(IWSVAのみ)

以下の手順を実施して、下位 HTTP プロキシサーバからの TCP セグメントに対する明示的な許可ルールを追加します。
なお、「Service Pack 3 アップグレードパッケージによるService Pack 2からService Pack 3へのアップグレード」でも、以下の設定は引き継がれません。アップグレード後に改めて設定いただく必要があります。

1. IWSVA の CLI コンソールに root ユーザでログインします。

2. /usr/iwss/iwsvafw.sh をバックアップしたのちに vi で開きます。

# cp /usr/iwss/iwsvafw.sh /usr/iwss/iwsvafw.sh.org
# vi /usr/iwss/iwsvafw.sh

3. stateful を検索し、下の行に以下のルールを追加します。

IPTABLE ipv4 -A INPUT -p tcp -s {下位 HTTP プロキシサーバのIPアドレス} -j ACCEPT

たとえば、下位 HTTP プロキシサーバの IP アドレスが 192.0.2.1 であれば、以下のようにします。

[編集前]
IPTABLE -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # stateful

# Create the custom chains
IPTABLE -N SCAN_SERV_IN
IPTABLE -N ACL_IN
IPTABLE -N LOCAL_SERV_IN
[編集後]
IPTABLE -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # stateful
IPTABLE ipv4 -A INPUT -p tcp -s 192.0.2.1 -j ACCEPT
# Create the custom chains
IPTABLE -N SCAN_SERV_IN
IPTABLE -N ACL_IN
IPTABLE -N LOCAL_SERV_IN

4. ファイルを保存し、以下のコマンドで iptables を再起動します。

# /etc/init.d/iptables restart
IWSVA 6.5 SP3をご利用でSP3 Patch 1 ビルド 3312を未適用の場合、「iptables restart」の代わりに以下のコマンドを実行します。
# /usr/iwss/iwsvafw.sh restart

正しく設定されていれば、iptables に以下のようなルールが追加されます。

# iptables -nvL INPUT
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
...
    0     0 ACCEPT     tcp  --  *      *       192.0.2.1            0.0.0.0/0
...