事象1:
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接続失敗」となることがあります。
下位 HTTP プロキシサーバを使用される環境では、事象への予防策として設定頂くことを強く推奨します。
事象1への対策
本設定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"に設定されます。
1. IWSS/IWSVA の Linux/CLI コンソールに root ユーザでログインします。
2. /etc/sysctl.conf をバックアップしたのちに vi で開きます。
# vi /etc/sysctl.conf
net.ipv4.tcp_rfc1337=1
(編集後)
net.ipv4.tcp_rfc1337=0
事象2への対策(IWSVAのみ)
以下の手順を実施して、下位 HTTP プロキシサーバからの TCP セグメントに対する明示的な許可ルールを追加します。
なお、「Service Pack 3 アップグレードパッケージによるService Pack 2からService Pack 3へのアップグレード」でも、以下の設定は引き継がれません。アップグレード後に改めて設定いただく必要があります。
1. IWSVA の CLI コンソールに root ユーザでログインします。
2. /usr/iwss/iwsvafw.sh をバックアップしたのちに vi で開きます。
# vi /usr/iwss/iwsvafw.sh
3. stateful を検索し、下の行に以下のルールを追加します。
たとえば、下位 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 を再起動します。
正しく設定されていれば、iptables に以下のようなルールが追加されます。
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
...