Mantenha a simplicidade: você não precisa SNAT
de nada. Ao fazer isso, todos os pacotes chegarão ao servidor de destino que parece vir do seu firewall, e não do cliente de origem, que na maioria dos casos não é o que você deseja.
Com a regra SNAT
fora do caminho, você não precisa se preocupar com a correspondência de outro tráfego.
Observação: suas regras FORWARD
terão que corresponder ao IP de origem real e ao IP de destino interno, pois a cadeia FORWARD
é alcançada depois que as regras DNAT
são aplicadas.
EDITAR
Dado o requisito de SNAT
: desde que você esteja satisfeito com a maneira como a regra DNAT
está correspondendo aos pacotes, você pode preceder isso com uma regra mangle
que marca esses mesmos pacotes:
iptables -t mangle -A <mangle chain> -p tcp -d $GW --dport $fromPort -j MARK --set-mark 0x1
Então, toda a sua regra SNAT
precisa corresponder aos pacotes marcados:
iptables -t nat -A "$POST" -m mark --mark 0x1 -j SNAT --to $SRC
Se você precisar identificar vários fluxos separados, será possível variar a marca no script junto com $SRC
.