Pesquisa de site

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.