Depois de inúmeras tentativas buscando por documentações na Internet usando o Google, consegui através de pedaços de documentações e testes realizados em minha casa e em um dos provedores para o qual presto serviço realizar o que essa documentação se propõe. Mostrar como podemos configurar um CentOS 5.4 como bridge e ao mesmo tempo servir de proxy totalmente transparente através do TProxy.
Vamos então descompactar nosso kernel, configurar ele com os módulos necessários, compilá-lo e instalá-lo:
# tar -xvjpf linux-2.6.30.10.tar.bz2
# ln -sf linux-2.6.30.10 linux
# cd /usr/src/linux
Agora vamos copiar uma config para o nosso kernel e depois marcar o que vamos precisar:
# cp /boot/config-2.6.18-164.15.1.el5 .config
# make menuconfig
Agora em:
Networking support
Networking options
Network packet filtering framework (Netfilter)
Core Netfilter Configuration
<M> Netfilter connection tracking support
<M> Transparent proxying support (EXPERIMENTAL)
.
.
<M> "TPROXY" target support (EXPERIMENTAL) (NEW)
.
.
.
<M> "socket" match support (EXPERIMENTAL)
Após marcarmos esses suportes, saímos da configuração do kernel e fazemos os procedimentos para compilar e instalar o novo kernel. É bem difícil essa parte. rsrsrsrs
# make
# make modules_install
# make install
Agora vamos ativá-lo no boot. Editem o arquivo /boot/grub/menu.lst com o editor preferido de vocês e alterem a variável "default" para:
default=0
Isso porque nosso novo kernel, se repararem, estará no topo da lista dos kernels existentes e "0" diz para carregar o primeiro da lista.
Vamos agora reiniciar com o nosso novo kernel.
Obs.: Não fiz otimizações no kernel porque não era esse o objetivo deste tutorial, ou seja, apenas habilitei o que eu iria precisar.
Antes de fazermos o reboot vamos configurar nossa bridge:
# yum install bridge-utils
Vamos criar o arquivo /etc/sysconfig/network-scripts/ifcfg-br0 com o seguinte conteúdo:
No exemplo acima usei 186.193.x.3 para o IP do proxy, nem preciso dizer que o "x" é para mascarar o IP real que tenho. Vocês precisam substituir pelo IP que vocês forem realmente usar nos testes.
Agora vamos editar as outras interfaces de rede que já devem existir no sistema de vocês:
/etc/sysconfig/network-scripts/ifcfg-eth0:
# Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:01:6C:B7:1F:50
ONBOOT=yes
BRIDGE=br0
Mantenham os Mac-Address que já vem nas configurações de vocês porque o sistema já detecta eles e só modifiquem o restante. Pronto, a bridge já está pronta e agora podemos fazer o reboot e continuarmos nossa maratona. :)
# reboot
Após o boot chequem se o novo kernel foi mesmo carregado com o comando abaixo:
# uname -a
Linux proxy.localdomain 2.6.30.10 #1 SMP Tue Apr 20 03:43:59 BRT 2010 i686 athlon i386 GNU/Linux
[3] Comentário enviado por removido em 22/06/2010 - 19:32h
amigo boa noite..estou montando um server com cent os 64 bits mas queria saber como deixar o squid 3.1 no cent os com cache full pois ele vem com o path zph nativo mas tem que sair na compilação...qual comando adiciono na linha? e quais linhas adiciono no squid.conf para o cache full?
[5] Comentário enviado por demattos em 27/07/2010 - 13:00h
opa bom dia, muito bom este artigo e proveitoso, fiz todo o processo e funciona show de bola. Mas ocorreo o seguinte ,fiz todos os testes em bancada e funcionou perfeitamente mas quando coloquei na rede com ip valido minha rede ficou doida, queria saber se ocorreo isto com vc,
Meu cenario e o seguinte
Tenho um swite ligado em um roteador com a rede 200.215.XX192/29 e um firewall ( squid+NAT+controle) ligado por uma placa de rede ligado no swit do roteador e outra placa ligado em um swit com rede 172.31.XX.1 que sai para rede interna. Bom eu fiz o que ? montei esta maquina Tproxy e liguei do swit do roteador pela placa eth0 e a eth1 liguei no swit da rede interna para prover ip valido em algumas maquina desta rede, ai que ficou feia a coisa rsrsr a rede parou de fucionar....tem alguma ideia do que seja, acredito q e vacilo meu mas nao achei o erro.
OBS: queria q o firewall e o a maquina Tproxy na mesma rede onde para algumas maquina colocario o ip valido e outras continuaria com a rede do firewall.
Por favor me ajude....rsrsrs
Obrigado pela atencao.
[6] Comentário enviado por gondim em 29/07/2010 - 10:50h
Opa, aqui funciona exatamente como está no desenho da rede. Nossa rede tem atualmente mais de 1000 conexões simultâneas e links de 100Mbps. Todos os nossos assinantes recebem IPs públicos dinamicamente.
Para o TProxy funcionar o mesmo teria que ter roteamento até as estações dos clientes, porque o TProxy spoofa o IP do assinante e depois responde para ele, se nesse momento o Tproxy não tiver roteamento para o cliente aí não vai funcionar mesmo. Vamos dizer que o IP do assinante fosse 192.192.192.50 quando passa pelo TProxy o mesmo spoofa esse IP e passa à usar o 192.192.192.50 para fazer as consultas daquele assinante. No retorno os pacotes precisam passar pelo Tproxy e aí o mesmo envia os dados para a máquina 192.192.192.50. Resumindo se do Tproxy não tiver roteamento para dele chegar ao IP 192.192.192.50, então não funcionará. :)
[7] Comentário enviado por demattos em 31/07/2010 - 12:54h
E verdade,descobri o erro e foi resolvido, era exatamente o que vc relatou, coloquei o tproxy em sequencia do roteador como no diagrama ai funcionou perfeitamente.....obrigado pela atencao
[12] Comentário enviado por luizrfabri em 07/04/2011 - 15:02h
Olá, configurei exatamente como manda seu tuto ( por sinal excelente), porem da erro ao iniciar o squid, conforme o log abaixo do squid.out:
WARNING: -D command-line option is obsolete.
O que poderia estar causando esse erro?
Acabei resolvendo o problema logo em seguida, no seu script o squid aponta os logs para /var/logs/squid e no meu centos o default é /var/log/squid, fiz as devidas alterações, acertei as permissões dos arquivos e rodou tudo certinho.
[13] Comentário enviado por gondim em 07/04/2011 - 15:35h
Olá, isso não é um erro e sim um warning, que diz que o parâmetro -D é obsoleto para a versão de squid que você tá usando. Para não dar a mensagem basta rodar sem o -D. :)
[14] Comentário enviado por luizrfabri em 09/04/2011 - 13:33h
Olá gondim, ja que vc respondeu tão prontamente a minha duvida, vou deixar mais uma aqui srsr:
Eu preciso que um dominio nao seija cacheado, ou seja, os clintes tem que acessar o mesmo sem q seja armazenado, exsite alguma regra que eu possa fazer no squid ou no iptables para que eu retire esse dominio do proxy?
Lembrando que essa regra terá que ser valida para todos os usuarios.
Grato por qualquer ajuda.
[15] Comentário enviado por thiagoirch em 12/05/2011 - 16:48h
Gondim, show de bola teu tuto, tive de fazer alguma alterações para adquar a meu ambiente (Provedor de internet com 6 mil usuários) e realmente a performance ficou muito boa e a economia de link na casa de 20% no entanto estou com um problema e não consigo detectar a solução. O Squid ou a Bridge está interrompendo download de usuários mais sensiveis. Por exemplo o usuário começa a baixar um arquivo de 100MB quando chega em 40% (número aleatório as vezes é 20 as vezes 80) o download é do nada "concluido" ainda com o arquivo incompleto. Se puder me ajudar.
[16] Comentário enviado por blaizer em 22/06/2014 - 16:02h
Otimo tutorial !!
Deu certinho aqui , no centos 6.5, tive dificuldade apenas com o libpcap .. mas resolvi.
Uma duvida amigo, montei tudo encima de 192.168.0.0/24 , funcionou.... se eu trafegar nesta bridge com 192.168.1.0/24 "subnet diferente" ele não funciona.
Você teria alguma ideia doque poderia ser?
Já adicionei as rotas das subnet e mesmo assim não funcionou, o server até faz ping nos pc's da outra subnet, mas nada de navegar.