Acho que você está perdendo a porta de destino, tente seguir
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
Sem dport , você está encaminhando o tráfego com a porta de destino 3128 para a porta local 3128. O que você deseja é o tráfego com a porta de destino 80 para a porta local 3128.
Além disso, para mostrar regras nat , use
iptables -t nat -L
No entanto, as regras acima não funcionarão para uma configuração de proxy transparente na mesma máquina do navegador, porque a cadeia PREROUTING altera os pacotes antes de rotear de um cliente remoto e não fará nada para localmente pacotes gerados. Assim, devemos usar a cadeia OUTPUT para os pacotes gerados localmente que estão saindo do sistema.
Tente seguir em vez disso
iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner proxy --dport 80 -j REDIRECT --to-port 3128
Ele só redirecionará o tráfego para processos diferentes daqueles pertencentes a proxy
user.
Sem -m owner ! --uid-owner proxy
, não funcionará porque as regras também detectarão o tráfego de saída do servidor proxy e terminarão em loop.