Como controlar o tráfego da Web usando Squid Cache e Cisco Router no Linux
Uma tarefa importante em uma rede é controlar e gerenciar o tráfego de navegação na web da equipe, existem muitas soluções que podem lidar com esse problema, uma das melhores soluções é usar o cache do squid em uma máquina Linux. O Squid pode inspecionar, limitar e armazenar em cache o fluxo de tráfego da web de uma rede para outra, por exemplo, de uma LAN para a Internet.
Existem algumas maneiras de redirecionar as solicitações web do cliente para a máquina squid. Neste artigo mostraremos como redirecionar o tráfego web de um roteador CISCO para uma máquina Squid Cache usando o protocolo WCCP.
A imagem abaixo é um exemplo de um cenário básico.
Como você pode ver na imagem acima, todos os tráfegos da web do cliente vão primeiro para o Roteador Cisco (esse é o gateway padrão), então o roteador redireciona silenciosamente os pacotes para a máquina squid, agora o squid pode desempenhar suas funções, as funções principais são armazenar conteúdo da web em cache, limitar o acesso com base em domínios, intervalos de tempo, endereços IP, tamanho de arquivos, etc.
Revisamos a configuração deste cenário em duas etapas principais: primeiro devemos instalar e configurar o squid e o Linux, depois configurar o roteador para redirecionar os pacotes de tráfego da web para o squid usando o protocolo WCCP.
Ambiente de teste
Neste cenário eu uso o CENTOS 6.5 como meu servidor LINUX e o Cisco 2691 como meu sistema roteador.
Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691
Passo 1: Instalando o Squid Cache
O Squid está disponível no repositório padrão do CENTOS, primeiro o instalamos usando o comando Lovely yum e depois iniciamos seus serviços e finalmente configuramos o início automático do serviço squid.
yum -y install squid
service squid start
chkconfig squid on
Passo 2: Preparando o Cache do Squid
Agora devemos mudar alguns comportamentos padrão do sistema operacional centos, precisamos habilitar o encaminhamento de pacotes e desabilitar o filtro de caminho reverso (RPF), habilitamos o encaminhamento de pacotes para permitir que o centos atue como um encaminhador transparente (como um roteador).
Deixe-me explicar com mais detalhes, quando o tráfego chega em centos ele tem seus endereços de origem e destino, por exemplo quando um cliente digita www.example.com em seu navegador um pacote de solicitação http é gerado e ter o endereço IP de origem da máquina cliente (como 192.168.1.20) e o endereço IP de destino do servidor example.com (como 2.2.2.2).
Então, quando o pacote é recebido pelo centos ele detecta como um pacote errado porque o endereço IP do centos não é o endereço de destino do pacote, por questões de segurança o centos descarta o pacote, mas queremos que o squid atue em modo transparente. Contamos esta situação ao centos ativando a poção de encaminhamento de pacotes.
Em seguida, devemos desabilitar a filtragem de caminho reverso para permitir que os centos aceitem pacotes que não são acessíveis pela máquina squid ou pacotes que não possuem endereço IP na mesma sub-rede da máquina squid.
nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior
Em seguida precisamos criar uma interface GRE na máquina CENTOS, para quê?? Deixe-me explicar mais, o protocolo WCCP funciona através de um túnel GRE, isso significa que a linguagem entre o roteador e o Squid é GRE, então o centos precisa ter uma interface GRE para De- encapsular pacotes GRE.
Devemos criar o arquivo de configuração para a interface GRE no caminho “/etc/sysconfig/network-script/ifcfg-gre0”.
Insira os códigos abaixo no arquivo de configuração ifcfg-gre0.
DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2 #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no
Depois de criar uma interface GRE precisamos reiniciar o serviço de rede.
service network restart
Etapa 3: configurando o cache do Squid
Precisamos dizer ao squid que aceita pacotes WCCP do roteador. Insira os códigos abaixo no arquivo /etc/squid/squid.conf.
http_port 3128 intercept # Define SQUID listening port
wccp2_router 192.168.1.254 #ip address of the router
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0
Salve o arquivo de configuração e reinicie o serviço squid.
service squid restart
O Squid escuta pacotes na porta 3128, mas o número da porta de destino do nosso pacote é 80, portanto, para alterar a porta de destino 80 para 3128<, precisamos criar uma regra NAT no firewall integrado do CENTOS (denominado iptable).
iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE
Etapa 4: configurações do roteador Cisco
Primeiro devemos habilitar o WCCP no roteador Cisco.
R1(config)# ip wccp version 2
Then we must use an ACL for introducing SQUID cache machine to router
R1(config)# ip access-list standard SQUID-MACHINE
R1(config-std-nacl)# permit host 192.168.1.10
Em seguida, definimos outra lista de acesso para dois propósitos diferentes: primeiro devemos excluir o redirecionamento do tráfego SQUID pelo protocolo WCCP (se não, cairemos em um loop infinito!!) depois definimos quais tráfegos de LAN queremos passar por WCCP e SQUID.
R1(config)#ip access-list LAN-TRAFFICS
R1(config-ext-nacl)#deny ip host 192.168.1.10 any #Prevent SQUID to get in loop
R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www #define LAN Traffics
Após criar nossa lista de acesso devemos configurar o protocolo WCCP no roteador.
R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE
Tudo está pronto para a etapa final, devemos informar ao roteador em quais interfaces ele deve redirecionar o tráfego usando sua configuração WCCP.
R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in
Resumo
É hora de resumir todos os comandos e textos em poucas linhas para melhor compreensão, de acordo com o cenário redirecionamos os pacotes de navegação web da equipe (que está na porta TCP 80) do ROUTER (que é o gateway padrão do os clientes) em direção à máquina de cache do squid usando o protocolo WCCP.
Todo esse processo aconteceu silenciosamente e não há configuração adicional no lado do cliente. Assim, podemos controlar e definir políticas sobre o tráfego da web na LAN. Por exemplo, podemos obter acesso à navegação na web em um tempo limitado, limitar o tamanho máximo de download, definir nossa lista negra e lista branca personalizadas, gerar relatórios completos de uso de atividades na Internet e etc.
um dos fatos interessantes neste cenário é quando a máquina squid cai no roteador, detecta esse problema e para de redirecionar pacotes para ele, para que você possa aproveitar o tempo de inatividade zero em sua rede.
Se você tiver alguma dúvida sobre este artigo, deixe uma resposta na caixa de comentários abaixo.