Algumas notas:
- O SNAT não funciona da maneira que você descreveu na descrição, o SNAT substitui o IP de origem, ele não altera o IP de destino. Depois que um pacote passa pelas suas duas regras, ele terá:
- fonte: IP_HOST_A: 31090
- destino: IP_HOST_B: 32090
- nem os destinos DNAT ou SNAT são capazes de duplicar pacotes
Para duplicar pacotes, você pode usar o alvo TEE, cf man iptables-extensions
:
TEE
The TEE target will clone a packet and redirect this clone to another machine on the local network segment. In other words, the nexthop must be the target, or you will have to configure the nexthop to forward it further if so desired. --gateway ipaddr Send the cloned packet to the host reachable at the given IP address. Use of 0.0.0.0 (for IPv4 pack‐ ets) or :: (IPv6) is invalid.
No seu caso, isso daria:
iptables -t mangle -A POSTROUTING -p tcp --dport 31900 -j TEE --gateway IP_HOST_B
No entanto, duvido que esse tipo de cópia de pacote funcione bem para o seu caso, devido ao fato de que o TCP é usado. O TCP é projetado para estabelecer uma conexão entre um cliente e um servidor. Aqui, você teria uma situação com um cliente e dois servidores: haverá problemas.