mangle PREROUTING é para alterar pacotes de entrada antes do roteamento e OUTPUT para alterar gerado localmente pacotes antes do encaminhamento. Portanto PREROUTING é desnecessário (para conexões locais). Mas OUTPUT
deveria ter funcionado, no entanto. Você não precisa especificar o endereço de origem nas regras de firewall normalmente, pois seria "pacotes gerados localmente" de qualquer maneira.
E outra coisa a lembrar é que ninguém vai mudar o IP de origem apenas porque você marcou o pacote e ele seria roteado com outra tabela de rotas - você precisaria usar o NAT explicitamente para isso . Em termos de iptables do Linux, tem que ser SNAT . E "Este alvo só é válido na tabela nat, na cadeia POSTROUTING", como diz o homem. Embora eu pessoalmente prefira sua subespécie MASQUERADE
, que é mais útil para isso, porque você não precisa se preocupar com a codificação de endereços IP.