E ai galera, beleza? =)
Não sei se vocês já passaram por este problema na hora de tentar balancear a carga de dois links, mas vamos lá:
Aqui na empresa, estamos tentando implementar um controle de rotas entre a rede interna e os dois links de internet que temos (Intelig e Velox). Estamos fazendo da seguinte forma:
1. Preparamos as rotas, de acordo com as tabelas que criamos para o iproute2 em rt_tables: intelig e velox.
Regras Intelig:
Código :ip route add 200.157.xxx.xxx/29 dev eth0 src 200.157.xxx.xxx table intelig
(o primeiro 200.157.xxx.xxx = end. rede, o segundo, end. maq. firewall iptables)
Código :ip route add default via 200.157.238.xxx table intelig
Regras Velox
Código :ip route add 10.0.0.0/24 dev eth2 src 10.0.0.254 table velox ip route add default via 10.0.0.1 table velox
2. Adicionamos regras para trabalhar com as rotas:
Código :ip rule add from 200.157.xxx.xxx table intelig (200.157.xxx.xxx = maq. firewall iptables) ip rule add from 10.0.0.254 table velox
3. Adicionamos regras de marcação de pacotes do firewall. Marcamos 1 para seguir pela tabela intelig, e 2 para procurar a rota para o Velox.
Código :ip rule add fwmark 1 lookup intelig ip rule add fwmark 2 lookup velox ip route flush cache.
Depois criamos as regras na tabela mangle para alterar os pacotes. Criamos duas chains, uma intelig e outra velox, marcando os pacotes.
Código :iptables -A INTELIG -j MARK --set-mark 1 iptables -A VELOX -j MARK --set-mark 2
E então, em prerouting, da tabela mangle, estamos tratando da forma: Se origem é o IP xxx.xxx.xxx.xx. da Rede Interna, vá pela chain INTELIG ou VELOX, selecionando link pelo qual a pessoa vai sair.
A técnica funciona normalmente, sem problema... sem proxy. ^^''
Não entendemos o porquê quando colocamos o proxy, o balanceamento não funciona. Quando retiramos, funciona que é uma beleza. Alguém sabe de algo a respeito? O Squid chega a marcar o pacote de outra forma, ou altera o pacote também? Existe alguma forma de contornar isso?
Valeu galera.