Mas essa ainda não era a solução do meu problema. Eu queria fazer esse balanceamento, mas pelo
Squid, foi aí que sofri. O Squid trabalha com o roteamento padrão da máquina, ou seja, ele direciona tudo para o link primário de internet. A tabela main do arquivo "rt_table", lembram?
Bom, vamos brincar com o Squid, no arquivo "squid.conf" ficou o seguinte, como eu disse minha conexão primária é uma intranet, então tenho que direcionar as conexões para esse proxy:
cache_peer proxy.internet.com.br parent 80 0 no-query default
never_direct allow all
Aqui especifico o "proxy.internet.com.br" como meu cache-pai e na segunda linha proíbo conexões diretas que não passem por esse cache-pai. Agora, as ACLs e regras para tratar do link de backup:
acl link_bkp src /etc/link_bkp #Crio uma acl com origem num arquivo de texto link_bkp.txt.
tcp_outgoing_address 189.0.0.1 link_bkp #Permite que os endereços nessa ACL saiam por esse IP.
udp_outgoing_address 189.0.0.1 link_bkp #Permite que os endereços nessa ACL saiam por esse IP.
always_direct allow link_bkp #Permite direcionamento direto, apenas para essa ACL, não precisando ser direcionado para o cache-pai, no caso o proxy.internet.com.br.
Com a ACL apontando para esse arquivo de texto "link_bkp", posso adicionar e tirar IPs de acordo com minha necessidade, posso até mesmo por uma LAN inteira na ACL e quando altero o arquivo, um simples "squid -k reconfigure" já coloca as mudanças em vigor.
Até aí tudo pronto no Squid, mas ainda não abria nenhuma página, dava pra ver que estava direcionando para o IP do link de backup, mas não estava saindo para a internet.
Depois de sofrer bastante com esse detalhe, consegui a solução numa regrinha de IPtables:
# iptables -t mangle -A OUTPUT -s 189.0.0.1 -j MARK --set-mark 2
E assim tudo funcionou perfeitamente.
Aqui marco que todo o pacote que sair do firewall com origem no IP do link de backup, seja marcado com 2, indo assim para a tabela de roteamento apropriada e saindo para a internet.
Depois disso, foi só correr pro abraço. Agora consigo rapidamente direcionar endereços específicos ou toda a LAN para um link, ou outro mantendo o cache e as regras de bloqueio.
Conclusão
No meu caso, fiz assim, mas com Shell Script e imaginação, dá pra deixar da maneira que for melhor pra cada um.
Digo também que todas essas linhas de comando descritas, menos do "squid,conf", se houver um reinicialização ou queda de energia, toda a configuração se perderá, então aconselho colocar tudo em scripts que iniciem no boot da máquina.
Aconselho também uma fuçada no IPtables e no comando "ip", quando você se familiariza com eles, fica tudo mais claro. E você começa a ter ideias para melhorar isso ou aquilo. =)
No meu caso, criei uma tabela para um link reserva, mas pode-se criar quantas tabelas o proxy suportar, devido a número de placas de redes etc.
Espero ter ajudado.
Qualquer dúvida, estou à disposição.
Abraços.