Definir limite de dados mensais para usuários de proxy de internet (squid)

3

Estamos usando um servidor proxy do squid (versão 3.1.4) em nosso ambiente de escritório na caixa linux. No total somos aproximadamente 20 usuários e todos estão em uma rede e temos plano de internet de 25GB / mês. Agora o que queremos é restringir cada usuário a algum tamanho digamos 1GB / usuário / mês (será melhor se for mais configurável, digamos 512MB para alguns usuários, 2GB para alguns usuários), para que todos obter acesso igual.

Eu pesquisei muito pela Internet como restringir com largura de banda, ou usando parâmetro de tamanho máximo de download reply_body_max_size , parâmetros de atraso . Mas não consigo encontrar o que quero.

Existe alguma maneira de fazer isso no squid ou qualquer outra opção de código aberto?

    
por Tejas 21.08.2015 / 14:06

5 respostas

1

Depois de pesquisar por mais de uma semana, encontrei a solução no meu caminho usando relatórios html de sarg - Gerador de relatórios de análise de squid , e extraindo seus dados usando o script bash simples.

sarg armazena seus dados no diretório /var/www/sarg . Para gerar um relatório mensal, temos que usar manualmente este comando: sarg -d 01/08/2015-31/08/2015 .

Após este comando eu escrevi um script simples para bloquear por endereço IP que são overlimit da seguinte forma:

#!/bin/bash
range=2015Aug03-2015Aug25
ip=( 192.168.3.111 192.168.3.49 192.168.3.53 )
maxsize=100000000
cd /var/www/sarg/$range/

for system in "${ip[@]}"; do
        size='cat $system/$system.html | grep TOTAL | awk '{print $4}' | tr -d 'class="header2"></t.<t'| sed 's/K/0/' | sed 's/M/0000/''
        if [ "$size" -gt "$maxsize" ]
            then
                iptables -A INPUT -s $ip -p tcp --dport 3128 -j DROP
                iptables -A OUTPUT -s $ip -p tcp --dport 3128 -j DROP
                echo "$system blocked because data usage over $size bytes"
            else
                echo "$system used size is $size"
        fi
done
service iptables save

OBSERVAÇÃO: Este script não está totalmente disponível a partir de agora e precisa trabalhar um pouco mais para que tudo seja totalmente automatizado e flexível.

    
por 26.08.2015 / 08:49
1

Provavelmente, por meio de um assistente personalizado que o squid chamaria, diga link que examina o IP do cliente, consulte um banco de dados de quanta largura de banda eles usaram (talvez analisado a partir dos logs do squid por outra coisa), e redireciona-os para uma página desculpe se acabar. Isso provavelmente exigirá um monte de codificação, se esse código ainda não existir.

    
por 25.08.2015 / 22:21
1

De acordo com a página wiki do squid, a quota de dados do usuário está em desenvolvimento (veja o link abaixo).

O

squish pode ser usado para limitar os dados por IP por mês. (usando o squid)

Recursos / Cota - Wiki do Squid Web Proxy link

    
por 26.08.2015 / 08:40
1

Eu tenho lutado para adicionar essa funcionalidade também. O problema com squish é, é esmagar os usuários que não devem ser esmagados.

A solução alternativa que usei foi usar os dados diários de lightsquid armazenados em /var/lib/lightsquid/report/<date>/.total . Como os dados lightsquid são atualizados a cada 10 minutos, ele também deu ao meu recurso de lula a capacidade de uma capacidade de cota quase "em tempo real".

    
por 25.02.2016 / 03:58
0

se você quiser usar o SQUID, só poderá usar o NFQUEUE. você pode redirecionar todo o tráfego para o NFQEUE primeiro e controlar o tráfego na programação do espaço do usuário. Então você pode decidir DROP ou ou encaminhar para a porta SQUID (3128). Você deve criar um pequeno sistema de cobrança pré-pago. veja meu pequeno artigo para isso.

Mas sugiro usar a solução RADIUS (dolaRadius) para atender às suas necessidades. Há possibilidade de integrar o SQUID com o FreeRADIUS e controlar o tráfego.

    
por 08.08.2018 / 15:21