Eu configurei polipo na minha máquina para ouvir porta padrão 8123 . Para testá-lo, configurei o cache in-memory para um ridiculamente alto de 2 GB e baixei um arquivo de 50 MB usando wget utilizando o proxy.
http_proxy='http://localhost:8123' wget server/file
Como esperado, a primeira execução precisa de alguns segundos para transferir o arquivo. As repetições subsequentes utilizam o armazenamento em cache e são concluídas em menos de um segundo.
Agora, quero tentar direcionar todo o tráfego HTTP (porta 80) para ser roteado automaticamente por polipo , para que eu não precise especificar o proxy com cada navegador da Web, cliente de email ou outro programa que eu uso. Embora o o faq realmente indique que o polipo não se destina a este caso de uso , o Wiki do Arch Linux menciona para fazer isso via iptables
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner polipo -j ACCEPT
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8123
Depois de executar esses comandos como root, eu emito novamente o comando wget sem o conjunto de variáveis de ambiente proxy. Todas as invocações precisam baixar o arquivo novamente, o cache não é utilizado, o que também é refletido por
$ iptables -t nat -vL
[...]
Chain OUTPUT (policy ACCEPT 5 packets, 529 bytes)
pkts bytes target prot opt in out source destination
6 312 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http ! owner UID match polipo
0 0 REDIRECT tcp -- any any anywhere anywhere tcp dpt:http redir ports 8123
[...]
Apenas a regra ACCEPT é acionada, não a diretiva REDIRECT . Eu também tentei inverter o filtro. Observe a negação ausente ! .
iptables -t nat -R OUTPUT 1 -p tcp --dport 80 -m owner --uid-owner polipo -j ACCEPT
Posteriormente, apenas a segunda regra foi utilizada, redirecionando todo o tráfego HTTP para sempre retornar a interface de configuração polipo .
Como eu configuro iptables corretamente para rotear o tráfego HTTP através de polipo ? É mesmo possível? Ou eu tenho que mudar para o mais pesado squid ?
Tags proxy cache iptables polipo http-proxy