Mateus Müller

O carinha do Linux

05 jun. 2019

O QUE É e COMO FUNCIONA um PROXY CACHE?

Recentemente comecei a reestudar tópicos de Redes de Computadores, começando pelos assuntos da camada de aplicação. Me deparei com várias coisas interessantes que antes não tinha conhecimento. Isto é, eu sabia na teoria como funcionava, sei como configurar no Linux, mas acabava não sabendo “no bit” o que acontece por trás.

Neste artigo, pretendo trazer uma explicação (talvez até uma simplificação) de como funciona um Proxy atuando como um Cache na sua rede. Já dei essa dica em um stories no meu Instagram onde mostrei um Servidor Squid configurado. Se você ainda não me segue, clique aqui e comece a interagir com a comunidade!

Requisitos

Para que você possa extrair o máximo deste artigo, seria interessante você ter pelo menos um conhecimento básico de como funciona Redes de Computadores, ou até mesmo de como funciona uma infraestrutura de uma empresa. De qualquer forma, vou tentar simplificar ao máximo.

O que é um Proxy?

Um Proxy é basicamente um outro sistema, que pode ser Linux ou não, e que é colocado “no meio” de uma conexão. Desta forma, ele pode ser usado para:

  • Restringir o acesso a determinadas páginas
  • Controlar o acesso de usuários por tempo
  • Fazer cache de arquivos
  • Fazer _load balancing
  • Ser um centralizador

Você pode notar que um Proxy tem diversas vantagens, sendo que apenas uma delas é fazer o cache de arquivos. Veja abaixo um exemplo simplificado de como é posicionado um Proxy:

O QUE É e COMO FUNCIONA um PROXY CACHE?

Note que o cliente (usuário final) se conecta primeiramente no Proxy. O Proxy é quem vai se conectar a Internet externa. Qual a vantagem disso? O Proxy consegue ver todo o tráfego que o cliente está enviando para a Internet e pode então tomar alguma ação, que pode ser cada uma das citadas anteriormente.

Uma forma bastante utilizada é restringir sites +18 anos, redes sociais e outras coisas em grandes empresas. Isso é feito a partir de um Proxy que “barra” todas as conexões para esses domínios, mas como falei antes, pode ser usado também para cache de arquivos.

Como funciona um Proxy Cache?

Um Proxy em modo Cache estará posicionado da mesma forma que mostrei na figura anterior, sendo que o cliente e o Proxy estarão na mesma rede Interna.

O objetivo de usar um Proxy Cache é para diminuir o consumo de banda de Internet na rede da empresa e entregar uma solução mais rápida aos usuários. Por exemplo, imagine que uma empresa tenha 500 funcionários e cada um deles tenha que baixar um arquivo de 1GB externamente. Isso seriam 500GB de Download na rede, o que é muita coisa, concorda?

Mas, e se pudéssemos manter uma cópia desse arquivo de 1GB localmente na nossa empresa? Isso faria com que cada usuário realize o Download dentro da nossa rede. Isto é, não precisa utilizar banda para fazer o download de arquivos externos. Além do Download ser muito mais rápido, pois já está tudo dentro da minha rede!

Isso tudo é feito de uma forma muito simples, vou explicar aqui em alguns passos.

  1. Cliente requisita o Download de uma imagem debian_buster.iso que pesa 3.4GB
  2. O Proxy recebe esta requisição e verifica que não está guardado no seu Cache
  3. O Proxy faz a requisição para o servidor na Internet (debian.org por exemplo) e inicia o Download
  4. O arquivo é entregue para o cliente e também armazenado no Servidor de Cache (isso, o .iso é armazenado lá!)

Aqui é interessante fazer uma observação. Não sei se alguma vez você já viu uma requisição HTTP, mas uma requisição de resposta do Servidor Debian para o Proxy (resposta) seria algo assim:

HTTP/1.1 200 OK
Date: Sat, 31 May 2019 22:34
Server: Apache/2.3.4 (Unix)
Last-Modified: Wed, 20 May 2019 15:34**
Content-Type: application/x-iso9660-image
...dados...

Veja que em negrito é a informação mais importante, a última data de modificação da ISO do Debian. Essa informação será armazenada junto como o servidor de Proxy quando guarda a imagem do Debian localmente. Isso é de suma importância para atualizar o arquivo posteriormente.

Por exemplo, se uma semana depois o mesmo cliente ou qualquer outro conectado ao Proxy solicitar o mesmo arquivo, acontecerá o seguinte:

  1. Cliente requisita o Download de uma imagem debian_buster.iso que pesa 3.4GB
  2. O Proxy recebe esta requisição e verifica que não está guardado no seu Cache
  3. Está guardado no Proxy, mas já faz uma semana que está ali… Sem atualizações…
  4. O Proxy abre uma nova requisição para o Servidor do Debian perguntando se houve alguma atualização
  5. O Servidor vai comparar a data da última modificação enviada pelo Proxy, e se ainda for a mesma, ele vai retornar o código 304 NOT MODIFIED
  6. Proxy vai devolver o arquivo armazenado para o cliente

Um exemplo da requisição do cliente para o Proxy seria o seguinte:

GET /debian.iso HTTP/1.1
Host: www.debian.org
If-modified-since: Wed, 20 May 2019 15:34

Note que a data que o Proxy está enviando é a mesma que ele tinha armazenado na primeira requisição que o servidor respondeu para ele. Se houve um novo arquivo (uma nova versão do Debian por exemplo), a data iria mudar, elas seriam diferentes, e então o Debian ia retornar o novo arquivo e todo o processo descrito no primeiro cenário iria se repetir.

Como posso configurar isso no Linux?

Existem diversas aplicações open-source utilizadas como Proxy:

Conclusão

O Proxy Cache tem muitas vantagens, sendo as principais a economia no consumo de banda larga e o aumento de velocidade de Download por conta dos arquivos estarem na mesma rede. É claro que dependendo do tamanho de arquivos que você pretende armazenar, seu servidor deve estar preparado para isso.

Também é interessante validar se realmente se faz necessário um Cache de Proxy. O Cache deve ser usado somente para os arquivos mais baixados pelos funcionários, ou seja, se todos acessam arquivos diferentes, pode não ser tão efetivo.

Bom pessoal, espero que tenha gostado dessas dicas. Se gostarem, não esqueçam de compartilhar com os colegas em grupos de Redes e Linux. Este artigo pode ajudar muitas outras pessoas.

Me siga no Instagram onde eu faço conteúdos da minha rotina diária.

Participe dos nossos grupos no Telegram e Facebook! 🙂

Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!

Comentários Disqus