Parece que você já tem muito do que precisa, mas falta mágica.
Primeiro, para lidar com vários endereços VIP, você quer usar o VRRP (ou possivelmente anycast, mas não acho que seja isso que você está fazendo). Você não declarou explicitamente que você tem essa parte funcionando, mas eu entendo que você faz isso, então vou falar sobre o ILB e o roteamento.
Boas notícias, você não precisa forçar o encaminhamento de volta pelo ILB.
O que você quer é chamado de Direct Server Return e usa o modo "stateless" do ILB.
Veja o que ele faz:
- O LB altera o endereço L2 ether de destino para o endereço L2 do servidor real.
- O RS recebe um pacote com a fonte L3 real e o destino L3 real.
- O RS responde com a origem e o destino corretos de L3.
A documentação da Oracle sobre como configurar o DSR tem uma completa escrever com código de exemplo para configurar corretamente o DSR. ( Nota: A documentação do Oracle é precisa, mas foi escrita com pouca gramática. Para ser claro, os passos 1, 3 e 4 são executados no ILB enquanto o passo 2 é realizado nos servidores reais.) p>
Para descrever muito em breve:
- Use
type=DSR
no seu comandoilbadm create-rule
- Adicione o (s) endereço (s) VIP ao
lo0
em cada servidor real
Se os seus servidores reais forem Linux, você também precisará desabilitar algumas proteções de spoof de roteamento e arp:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce