Meu objetivo é fazer proxy transparente de todas as solicitações HTTP de um único IP (meu laptop, 192.168.1.134
) na minha LAN para um IP externo (Internet VPS, digamos X.X.X.X
) executando um servidor proxy (especificamente mitmproxy
em execução no modo transparente), ouvindo na porta 80.
Minha LAN doméstica é alimentada por um roteador ASUS RT-N66U executando o firmware Asuswrt-Merlin. O roteador tem o ip 192.168.1.1
e é o gateway padrão de todos os dispositivos da minha rede. Para encaminhar o tráfego, enviei ssh para o meu roteador e executei os seguintes comandos iptables
:
iptables -t nat -A PREROUTING -s 192.168.1.134 -p tcp --dport 80 -j DNAT --to X.X.X.X:80
iptables -t nat -A POSTROUTING -j MASQUERADE
Além disso, o encaminhamento de IP está ativado no meu roteador:
admin@RT-N66U:/tmp/home/root# cat /proc/sys/net/ipv4/ip_forward
1
Isso resulta em algo , mas não é o que estou esperando. De 192.168.1.134
(meu laptop), quando faço uma solicitação http simples (por exemplo, curl http://example.com
), posso ver no log de eventos do meu proxy que mitmproxy
relata que um cliente se conectou (usando o IP público de NAT do meu router, emitido pelo meu ISP), mas isso é o mais possível. Nunca vai além disso e meu comando de onda apenas espera. Eventualmente, vejo "Conexão redefinida pelo peer" no log do meu proxy e a conexão está fechada.
Qualquer ajuda seria sugerida. Eu devo admitir, eu não sou muito proficiente com iptables
.