Existem pelo menos duas maneiras de fazer isso:
- URL de configuração automática de proxy via DHCP
- Redirecionamento de proxy transparente com iptables
A primeira opção usa o mecanismo WPAD :
Na configuração do seu servidor DHCP, você deve incluir a opção 252 (por exemplo, para dhcpd):
option local-proxy-config code 252 = text;
...
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.20 192.168.0.30;
...
option local-proxy-config "http://your_http_server/proxy.pac";
}
Seu proxy.pac é apenas um pouco de JS que informa ao navegador o que deve ser procurado (por exemplo):
function FindProxyForURL(url, host) {
var proxy = "PROXY your_proxy_server:3128; DIRECT";
var direct = "DIRECT";
// no proxy for local hosts without domain:
if(isPlainHostName(host)) return direct;
// proxy everything else:
return proxy;
}
A segunda opção é usar iptables para redirecionar o tráfego HTTP de forma transparente (por exemplo):
iptables -t nat -A PREROUTING -i eth0 -s ! your_proxy_server -p tcp --dport 80 -j DNAT --to your_proxy_server:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d your_proxy_server -j SNAT --to iptables-box
iptables -A FORWARD -s local-network -d your_proxy_server -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT