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