Depois de muita leitura, reconfiguração e ajuda externa, o problema foi resolvido (finalmente o pesadelo acabou).
O problema estava na parte Address Ignore
da configuração, não no conjunto de regras que pensei primeiro.
Nos tutoriais que eu segui eles dizem:
The "Address Ignore" block should list ALL the IPs the firewall has
Mas eles não disseram que Address Ignore
deveria listar TODOS os IPs que o firewall tem em Interfaces Locais .
A colocação de endereços adicionais, como um host de teste por digitação, ignorará todo o tráfego gerado desse host. É por isso que na tabela de expectativas eu pude ver a sessão, mas não no cache. O que significa que o bloco Address Ignore
deve listar apenas seus próprios endereços IP (e talvez o do Backup) (loopback, ext, int, VIP).
PS: Outra coisa que deve ser mencionada é que o firewall deve ser configurado para mascarar os IPs do Firewall. Se não, no failover, o VIP muda o proprietário, mas a sessão ainda estará procurando pelo IP da máquina que foi criada.
Para superar isso, uma regra snat
deve ser definida.