[Fedora-users-br] Squid 2 Links

Alejandro Flores alejandrorflores em gmail.com
Sáb Jun 6 00:15:56 UTC 2009


Pessoal,

Fala-se muito em balanceamento de carga com mais de um link internet,
porém não é uma coisa simples. O grande problema é que você vai ter
IPs diferentes em cada link. Tendo IPs diferentes, quando você iniciar
uma conexão, esse trafego vai por um link. Quando você iniciar outra
conexão (da mesma sessão, por exemplo) esse trafego pode ser enviado
pelo segundo link, e a aplicação ( o servidor de destino ) não vai
entender, pois estão chegando pacotes de um outro IP para a mesma
sessão. Se for uma aplicação WEB não tem problema, pois a sessão é
controlada pelo browser. Para navegação WEB é tranquilo, porém para as
demais aplicações não funciona. Para sites de banco, que utilizam
conexões SSL, quando você inicia a sessão, ele vai por um link. Quando
você clica para tirar um extrato por exemplo, o servidor vai receber a
conexão pelo seu segundo IP, o browser está com todos os cookies da
sessão, porém o banco vai achar que alguem roubou sua sessão e vai
encerrar o acesso.
Outro caso é o MSN, pois a sessão fica amarrada ao IP que originou a conexão.
Para poder utilizar os 2 ou mais links eu recomendo que você faça uma
divisão do trafego. Tipo, navegação por um lado, email por outro,
etc...

Bom, voltando ao roberto, pra direcionar o squid por um link você
faria da seguinte forma:

Digamos o seguinte:
Na eth0 está o seu link principal, com ip 200.200.200.1/24 e GW 200.200.200.254
Na eth1 está o seu segundo link, com ip 200.100.100.1/24 GW 200.100.100.254
Na eth2 está a sua LAN, 192.168.0.0/24

Então você tem a tabela de roteamento principal:
200.200.200.0/24 dev eth0
200.100.100.0/24 dev eth1
192.168.0.0/24 dev eth2
default via 200.200.200.254

Você precisa criar uma tabela secundária:
echo "200 secundario" >> /etc/iproute2/rt_tables

ip route add 200.200.200.0/24 dev eth0 table secundario
ip route add 200.100.100.0/24 dev eth1 table secundario
ip route add 192.168.0.0/24 dev eth2 table secundario
ip route add default via 200.100.100.254 dev eth1 table secundario

Agora você cria uma regra:
ip rule add fwmark 0x10 lookup secundario
Os pacotes marcados com 0x10 vão ser jogados pela tabela de roteamento
'secundario'

Agora, é preciso marcar os pacotes que vão sair pelo secundário:

iptables -t mangle -A OUTPUT -s 200.100.100.1/32 -p tcp --dport 80 -j
MARK --set-mark 0x10
Estamos marcando todos os pacotes gerados localmente com ip
200.100.100.1 e tem destino a porta 80/tcp.

Agora, configure o squid para utilizar esse IP na diretiva tcp_outgoing_address

tcp_outgoing_address 200.100.100.1

Isso vai fazer com que o squid gere os pacotes para acesso aos
servidores web, com ip 200.100.100.1, que por sua vez estão sendo
marcados no iptables, com a marca 0x10, que por sua vez tem uma regra
dizendo que os pacotes com essa marca devem utilizar a tabela
secundario, que por sua vez tem gateway 200.100.100.254.
Simples né?

Ah, Heracias, channel bonding não serve para esse caso. É utilizado
normalmente para configurar 2 placas com a mesma rede para redundancia
e tolerancia a falhas.

Abraços!




2009/6/5 Heracias Bezerra <heracias em hotmail.com>:
> Grande, da uma olhada em Bonding, acho que resolve o que vc ta querendo.
>
>
> Heracias B. L. Neto.
> Project Fedora Ambassador
> LPCI-I, Consultor em Segurança da Informação.
> heracias em fedoraproject.org
> Fone:+559888176613
> https://fedoraproject.org/wiki/User:Heracias /
> http://www.linkedin.com/pub/10/3a8/945
>
>
>
>
>> From: andre em felicio.com.br
>> To: fedora-users-br em redhat.com
>> Subject: Re: [Fedora-users-br] Squid 2 Links
>> Date: Fri, 5 Jun 2009 16:45:11 -0300
>> CC:
>>
>> Rau,
>>
>> > Se alguém conseguir fazer *BALANCEAMENTO DE CARGA*, me avisa, pois até
>> > hoje
>> > não encontrei ninguém que conseguiu!
>> > Trabalho com 3 links aqui, porém, o que consigo é fazer redundância
>> > (quando
>> > um link cai outro assume)... e editar rotas através do RT_TABLES....
>>
>> Logo abaixo você mesmo mostra fez o balanceamento. A solução é essa mesmo,
>> iptables + iproute2
>>
>> > Tipo: redes do GMAIL e HOTMAIL saem por um link e coisas mais
>> > importantes
>> > saem pelo link dedicado !!! isso conseguimos fazer aqui (distribuir o
>> > tráfego por diversos links)
>>
>> Isso é uma forma de balanceamento.
>>
>> > Agora fazer o chamado, BALANCEAMENTO DE CARGA, acredito que não vá
>> > rolar...
>> > tentei seguir diversos "tutoriais" encontrados pelo google, mas sempre
>> > geram um efeito colateral... MSN caindo, fora outros problemas !!!!
>>
>> Esta faltando um pouco de "conceitos" de rede.
>>
>> Seus links são de operadores diferentes, com IPs diferentes, não dá para
>> fazer
>> um balanceamento "perfeito", pacote a pacote. Utilize outras técnicas.
>>
>> > Enfim, se alguém conseguir, manda pra gente a mágica !!!!
>>
>> Uma técnica bem interessante para quem tem 2 links é tentar trabalhar com
>> IPs
>> impar para um link e pares para outros.
>>
>> --
>> Att,
>>
>> André Felício
>> http://www.felicio.com.br
>>
>> "What people have been reduced to are mere 3-D representations of their
>> own
>> data." -- Arthur Miller
>>
>
> ________________________________
> Novo Internet Explorer 8: mais rápido e muito mais seguro. Baixe agora, é
> grátis!
> --
> Fedora-users-br mailing list
> Fedora-users-br em redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-users-br
>
>



-- 

Alejandro Flores
http://www.triforsec.com.br/




Mais detalhes sobre a lista de discussão Fedora-users-br