Squid + IPtables com dois links de internet

Neste artigo, explico como configurar dois links de internet para rodar no Squid. Desde o roteamento, passando pelo balanceamento de links com IPtables e colocando os dois links para funcionar dentro do Squid. Os exemplos foram testados e colocados em produção em uma VM com VMware Esxi, rodando Slackware 14.1 com Squid 3.4.8.

[ Hits: 16.039 ]

Por: Don em 14/05/2015


Squid



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.

Página anterior    

Páginas do artigo
   1. IPtables
   2. Squid
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Autenticando Squid utilizando MySQL

Compilação do Squid 3 no Debian Wheezy

Instalando o Videocache no Debian Lenny

Squid 3.1.5 com suporte a TPROXY (sem bridge)

Squid + Winbind + Samba no AD - Autenticando por grupos

  
Comentários
[1] Comentário enviado por willian.firmino em 14/05/2015 - 23:21h

Slackware com squid e squidguard rola?

[2] Comentário enviado por wagnerfs em 16/05/2015 - 09:41h

Parabéns pale artigo. Bastante elucidativo e prático.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782

[3] Comentário enviado por donr em 17/05/2015 - 19:49h


Obrigado Wagner
Willian, rola sim, fim ha algum tempo ja , se não me engano tive que compilar o fonte , etc, etc.
Foi bom no meu caso pois eu tava trabalhando com uma quantidade enorme de urls na minha blacklist, e o squid tava ficando muito lento, com o squidguard a performace melhorou um bocado.

[4] Comentário enviado por removido em 18/05/2015 - 05:01h

Olá. Artigo versão p/ IPv6 rola?

[5] Comentário enviado por DiegocostaJ em 20/05/2015 - 00:21h


Parabéns por compartilhar o conhecimento, o artigo já esta nos meus favoritos.

Abç

[6] Comentário enviado por donr em 24/05/2015 - 19:10h

Valeu Diego

listeiro_037(não achei seu nome rs), nunca tentei , mas creio que rola sim. Configurando o iptables pra rodar com IPv6, acho que funciona normalmente. Se alguém conseguir posta aí pra gente ver rs.

[7] Comentário enviado por wagnerdias em 25/05/2015 - 10:39h

Bom dia a todos! Sou iniciante com linux e estou tomando uma surra com iptables no squid+dansguardian. Todos os sites que tento entrar ficam bloqueados pelo squid ou dansguardian. Acho que o erro está no iptables onde posso ver as configurações dele?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts