iptables redirecionar tcp para checkip.dyndns.org de localhost para 127.0.0.1:8118

1

Eu tentei várias combinações diferentes de regras e nada parece estar funcionando. Eu sei que você não pode usar a tabela de pré-detalhamento para uma solicitação vinda do localhost, então usei a tabela de saída e isso apenas retorna erros ao usar o wget.

Eu tenho o wget configurado para usar um proxy 127.0.0.1:8118. Quando eu uso o comando abaixo, recebo meu IP público. Se eu mudar o comando para remover o --no-proxy, recebo o IP do meu proxy.

Eu quero usar o iptables para forçar qualquer solicitação para este site através do proxy, independentemente do programa que o solicite. Estou essencialmente tentando criar um proxy transparente, mas apenas para o pedido de um site.

Sistema = Squeeze do Debian

comando wget:

wget --no-proxy -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

Eu habilitei net.ipv4.ip_forwarding = 1 em /etc/sysctl.conf.

Regras tentadas:

iptables -t nat -I OUTPUT --source 0/0 --destination checkip.dyndns.org -p tcp -j REDIRECT --to-ports 8118
iptables -t nat -I OUTPUT -p tcp -d checkip.dyndns.org -j REDIRECT --to-ports 8118
iptables -t nat -I PREROUTING -p tcp -s localhost -j DNAT --to 127.0.0.1:8118
iptables -t nat -I OUTPUT --source localhost --destination checkip.dyndns.org -p tcp -j REDIRECT --to-ports 8118

E vários outros que são todos semelhantes.

    
por shawn 24.05.2012 / 02:53

1 resposta

1

Você mencionou o termo correto para isso (proxy transparente). Primeiro, você precisa ter um servidor proxy que suporte o proxy transparente. Segundo, você precisa redirecionar solicitações HTTP para ele usando o iptables da seguinte forma:

iptables -A OUTPUT -d checkip.dyndns.org -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8118

O uso dessa regra diz à sua máquina para redirecionar todas as solicitações HTTP de saída na porta 80 para seu proxy local na porta 8118. Além disso, escrever regras que dependem de nomes DNS não é uma boa ideia, especialmente quando o nome DNS-IP mudanças de mapeamento. O iptables apenas irá traduzir o nome para IP e usar esse IP em vez do nome.

    
por 24.05.2012 / 04:04