Criando a regra de redirecionamento para o Squid
Compilado e instalado nosso kernel e iptables, está na hora de testar o redirecionamento necessário para o Squid funcionar, conforme abaixo:
# iptables -v -t tproxy -A PREROUTING -i br0 -p tcp --dport 80 -j TPROXY --on-port 3128
Verificando a regra:
# iptables -nL -t tproxy
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
TPROXY tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 TPROXY redirect 0.0.0.0:3128
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Caso, precisemos criar uma exceção a regra, por exemplo por causa da conectividade social, usaremos a seguinte regra:
# iptables -v -t tproxy -A PREROUTING -i br0 -p tcp --dport 80 -d ! 200.201.0.0/16 -j TPROXY --on-port 3128
Compilando Squid e configurando
Agora temos que preparar o Squid para funcionar com nossa solução, para isso teremos que aplicar nele um patch do TProxy. Primeiramente vamos instalar as dependências necessárias para a compilação do Squid e baixar seus fontes. Descomente as linhas no
sources.list:
deb-src http://http.us.debian.org/debian etch main contrib non-free
deb-src http://security.debian.org etch/updates main contrib non-free
Salve o arquivo e saia, em seguida:
# apt-get update
# apt-get build-dep squid
# apt-get source squid
Vamos agora copiar o arquivo abaixo para torná-lo disponível no kernel-headers para a compilação do Squid:
# cp -v /usr/src/linux-2.6-2.6.18.dfsg.1/include/linux/netfilter_ipv4/ip_tproxy.h /usr/include/linux/netfilter_ipv4
# cp /usr/include/linux/capability.h /usr/include/sys
Instalaremos agora a libcap-dev para evitar erros durante a compilação:
# apt-get install libcap-dev
Como estamos usando os fontes do Debian, vamos editar o arquivo que localiza-se em /usr/src/squid-2.6.5/debian/rules, nesse arquivo vamos procurar a seguinte entrada:
--enable-useragent-log \
--enable-referer-log \
--enable-underscores \
Removendo-as e inserindo em seu lugar as seguintes entradas:
--enable-linux-tproxy \
--enable-multicast-miss \
--disable-ident-lookups \
Vamos agora compilar o pacote do Squid:
# dpkg-buildpackage -rfakeroot -us -uc -b
Terminada a compilação, vamos instalar os pacotes:
# cd ..
# dpkg -i squid*.deb
Agora vamos editar o squid.conf para que ele funcione com o TProxy:
# cd /etc/squid
# vi squid.conf
Procure a linha http_port e altere-a para:
http_port 3128 tproxy transparent
Salve o arquivo, saia e reinicie o Squid.
Não vou entrar em detalhes de criação de ACLs, pois existem muitos artigos na internet com essa função.
# /etc/init.d/squid restart