Primeiro, o NAT no linux é stateful. Significa que você não precisa de uma regra de saída e de entrada. Quando o tráfego volta em que foi enviado NAT, o linux irá automaticamente un-NAT que retornam o tráfego.
Embora o principal problema que você terá é que uma sessão TCP é definida pela combinação de:
- IP de origem
- porta de origem
- IP de destino
- porto de destino
O IP de origem já está limitado a um único valor (IP do host1). O IP de destino já é um valor único (IP do host2). Porta de origem tem apenas 2 valores possíveis (80 e 443). E o porto de destino está limitado a um único valor (5015).
Isso significa que você só pode estabelecer um máximo de 2 conexões simultâneas (se você balancear a carga do SNAT pelas duas portas). E mesmo com conexões seqüenciais, é provável que você tenha problemas com a reutilização de portas, como a porta que está em um estado TIME_WAIT.
No entanto, se você realmente quiser tentar isso, a regra que deve ser feita é:
iptables -t nat -I POSTROUTING \
-d $HOST2_IP -p tcp --dport $TCP_TRAFFIC_PORT \
-j SNAT --to-source :$PROXY_PORT