A máquina que hospeda o proxy pode ser configurada lado-a-lado com seus clientes regulares em sua rede local. O roteador rotearia todo o tráfego HTTP (exceto da máquina proxy) para a sua máquina proxy. Isso é feito combinando IPTables (para selecionar qual tráfego desviar) e Policy Routing (faz o desvio).
Eu testei os seguintes passos no OpenWrt Chaos Calmer (15.05.1, r48532) no VMware. Eles são baseados em este guia .
Primeiro, para configurar o Policy Routing, você precisa do iproute2. Instale:
opkg update # If you haven't done it since rebooting
opkg install ip
Em seguida, abra /etc/firewall.user
com seu editor favorito e insira os seguintes comandos:
PROXYIP4=192.168.1.10
PROXYIP6=fe80:dead:beef::10
CLIENTIFACE=br-lan
FWMARK=2
# Permit Squid box out to the Internet
iptables -t mangle -A PREROUTING -p tcp --dport 80 -s $PROXYIP4 -j ACCEPT
ip6tables -t mangle -A PREROUTING -p tcp --dport 80 -s $PROXYIP6 -j ACCEPT
# Mark everything else on port 80 to be routed to the Squid box
iptables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
iptables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT
ip6tables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
ip6tables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT
# NP: Ensure that traffic from inside the network is allowed to loop back inside again.
iptables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT
ip6tables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT
# Fill 'proxy' routing table
ip route flush table proxy
ip route add default via $PROXYIP4 table proxy dev $CLIENTIFACE
ip -6 route add default via $PROXYIP6 table proxy dev $CLIENTIFACE
Certifique-se de ajustar as variáveis conforme necessário!
Em seguida, edite /etc/iproute2/rt_tables
, adicionando uma linha para a tabela proxy
usando qualquer ID gratuita:
...
201 proxy
A última parte é a política para o tráfego marcado com $FWMARK
. Abra /etc/config/network
e crie uma entrada de regra:
config rule
option mark 0x2
option in lan
option lookup proxy
Verifique se o nome da rede in
está correto, etc.
Isso conclui a parte do OpenWrt da configuração. A máquina proxy agora (efetivamente) se tornou o gateway padrão para o tráfego HTTP. Se esta máquina rodar Linux, você poderia continuar com este guia sobre TPROXY .
A sobrecarga de roteamento deve ser mínima. O resto depende do host proxy.
Se você quebrou o acesso à Internet, pode restaurá-lo facilmente excluindo a regra de roteamento:
ip rule del fwmark 2
A regra também pode ser facilmente adicionada novamente:
ip rule add fwmark 2 table proxy
tl; dr
O host proxy deve, de fato, estar entre os clientes e a Internet. No entanto, com roteamento inteligente, qualquer máquina diretamente alcançável pode ser feita com o "Homem no Meio".
Assim: