Como lidar com o download repetitivo de alguns arquivos grandes específicos que vêm da Internet

2

Vamos oferecer um aplicativo que permitirá aos nossos clientes baixar algum tipo de guia de áudio para o castelo em que trabalho.

Eu realmente gostaria de não ter todos os usuários que baixam o aplicativo (através do meu WiFi gratuito que oferecemos) em nosso castelo, para baixar os arquivos de áudio inteiros do servidor de aplicativos que está fora do nosso castelo (está fora da nossa rede) ).

Portanto, os resultados da minha pesquisa mostram que preciso criar um proxy para armazenar em cache arquivos que são usados com muita frequência (no meu caso, os dados MP3), para que eu possa manter minha largura de banda livre para dados "dinâmicos".

Eu preciso fazer isso para

  • Controlar / armazenar a carga que passa pela minha rede, para que eu não afete a rede do meu escritório.
  • Mantenha o Wi-Fi gratuito funcionando sem problemas. Temos muitos clientes e oferecemos Wi-Fi gratuito. Nossa rede interna trabalha com 10GBit e nossa largura de banda de Internet é de cerca de 1Gbit.

Portanto, usar um proxy para distribuir os arquivos MP3 e não ter que baixá-los da internet novamente é o que estou procurando.

Pergunta :

  • O Squid é a ferramenta que estou procurando ou há algo melhor?
  • Como faço para forçar todos os usuários de Wi-Fi gratuito a usar o proxy automaticamente.
  • [Opcional] Suas experiências com esse caso de uso.
por Harrys Kavan 20.11.2014 / 11:39

1 resposta

1

Um Squid pode ser usado para isso, no entanto, existem alguns problemas que você deve observar:

  • O Squid ainda não oferece suporte ao armazenamento em cache de conteúdo parcial. Portanto, se o aplicativo usar solicitações de intervalo em vez de fazer o download do arquivo inteiro, você terá alguns problemas. Você pode configurar o Squid para buscar o arquivo inteiro no cache em uma solicitação de intervalo, mas nesse caso ele bloqueará até que o arquivo inteiro seja baixado - se o arquivo de áudio em cache estiver obsoleto e uma nova cópia precisar ser baixada, o aplicativo os usuários terão que esperar que o servidor baixe o arquivo inteiro antes que o aplicativo possa reproduzi-lo.

  • Seu aplicativo deve usar HTTP para buscar os arquivos, caso contrário, você terá erros de certificado se seu proxy tentar interceptar as conexões HTTPS, a menos que você crie um certificado para o proxy e faça o seu aplicativo confiar nele. outra coisa além do seu aplicativo também lançará erros de certificado HTTPS e você não poderá fazer nada a respeito, geralmente interceptar o HTTPS é uma prática ruim, a menos que você deixe claro para seus usuários e faça com que eles instalem um certificado.

Para forçar o tráfego do cliente a passar pelo Squid sem qualquer configuração de sua parte, você precisa configurar o Squid como um proxy transparente e usar alguma mágica de firewall no gateway usado pelos usuários para acessar a Internet para redirecionar todo o tráfego HTTP para seu servidor Squid:

http_port 3128 intercept # enable transparent proxy mode

Quanto à configuração do gateway, depende de qual firewall está lá, para IPtables, algo assim deve funcionar assumindo que seu servidor Squid esteja atrás do mesmo gateway que seus usuários:

iptables -t nat -A PREROUTING -s <squid_server_IP> -p tcp --dport 80 -j ACCEPT # accept HTTP traffic from the Squid
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <squid_server_IP>:3128 # redirect your user's HTTP traffic to Squid
iptables -t nat -A POSTROUTING -j MASQUERADE # probably not needed since your gateway already has this

Você deve dar uma olhada em documentação do Squid , eles têm alguns exemplos para configurar firewalls entreprise para isso.

    
por 22.11.2014 / 13:52