iptables não redireciona o tráfego http para o meu proxy Squid!

7

Eu organizei um proxy Squid transparente que escuta a porta 3128 no host local, para bloquear alguns sites.

Eu testei o proxy usando o Firefox e ele funciona.

Então eu corri isso, na esperança de redirecionar todos os pedidos de http para o proxy:

sudo iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 3128

Infelizmente, nada acontece. Os outros navegadores no meu sistema não parecem estar usando o proxy. Eu não quero configurar cada navegador, para usar o proxy também.

sudo iptables -L não mostra regras atribuídas.

Estou no Ubuntu 13.04 e usando um modem USB 3G ( ppp0 ) para conectar-me à Internet. Qualquer conselho é apreciado!

    
por Naveen 13.04.2013 / 09:24

1 resposta

12

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.

    
por John Siu 15.04.2013 / 10:42