[FUG-BR] Radius + PPPoE com FreeBSD + MPD5

Márcio Elias marcioelias em gmail.com
Segunda Março 3 15:48:07 BRT 2014


Estive meio ausente da lista, mais estou progredindo neste assunto.

Atualmente estou apto a conectar usuários, e logo que conectado limitar sua
banda usando mpd-limit (não estou usando pipes, e sim a interface netgraph
criada para o cliente).

Estou também conseguindo obter informações do tráfego do usuário, e apto a
enviar pacotes CoA para o MPD de modo que este possa atualizar o link do
usuário sem desconectá-lo, ou seja, mesmo no meio de um download, se o
usuário ultrapassar a quota mensal, o mesmo verá sua taxa de transferencia
cair até o limite do plano.

Minha solução até agora está envolvendo alguns AVPs personalizados, alguns
códigos em Perl (modulos para checar a banda usada e para resetar o
contador de tempo de sessão) e uma boa dose de código em UnLang nas sessões
authorize e accounting.

Está ficando bem interessante, como disse ainda tenho intenção de fazer um
artigo detalhando esse assunto, mais vou fazê-lo assim que tiver a solução
completamente pronta.

Atualmente minha dúvida está em enviar o pacote CoA para o MPD somente se o
usuário ultrapassar a quota mensal, ou se virar o mes conectado, por que
atualmente estou enviando o pacote a cada accounting update.

Volto quando tiver maiores novidades, e começo a escrever o artigo assim
que sanar essa dúvida. Não pretendo fazer um pequeno artigo do tipo copiar
e colar, mais sim explicar e referenciar cada ponto, para que se possa
entender o assunto e saber o que se está fazendo. Senti muita dificuldade
em encontrar materiais, as principais dicas (tirando a documentação do MPD
e do FreeRadius) tirei de fóruns Russos, (traduzindo para o ingles). Por
isso quero contribuir para comunidade brasileira e escrever tudo em bom
Portuguès.

-- 
Att.
__________________________________
Márcio Elias Hahn do Nascimento

Araranguá - SC
Cel:   (55) 48-9661-0233
msn: marcioeliashahn em hotmail.com


2014-02-13 8:59 GMT-02:00 Márcio Elias <marcioelias em gmail.com>:

> Ai que está, eu já fui um pouco mais longe, não usei Dummynet nem IPFW pra
> controle de banda, usei ng_bpf+ng_car (
> http://mpd.sourceforge.net/doc5/mpd30.html#radius). Quanto a troca de
> velocidade, queria fazer isso de modo transparente, sem derrubar o usuário.
> Dependendo do usuário ou do que o mesmo está fazendo, não é interessante vc
> derrubar ele.
>
> Minha ideia era conseguir fazer algo semelhante ao que fala este artigo.
>
> http://revk.www.me.uk/2012/11/usage-quotas.html
>
> Tentei até entrar em contato com o autor mais não tive resposta até agora.
>
> --
> Att.
> __________________________________
> Márcio Elias Hahn do Nascimento
>
> Araranguá - SC
> Cel:   (55) 48-9661-0233
> msn: marcioeliashahn em hotmail.com
>
>
> 2014-02-13 8:40 GMT-02:00 Marcelo Gondim <gondim em bsdinfo.com.br>:
>
> Em 13/02/14 02:25, Márcio Elias escreveu:
>> > Alguém na lista tem uma solução usando radius+mysql (ou postgresql) como
>> > servidor de autenticação com MPD5 e que tenha implementado um sistema de
>> > controle de banda relativo a um sistema de quotas?
>> >
>> > Um exemplo básico, tenho um plano de acesso de 10Mbits e queria limitar
>> ele
>> > a 100GB de transferencia mensal, desta forma ao atingir o limite da
>> > franquia o usuário estaria limitado a uma velocidade equivalente a 40%
>> do
>> > seu plano por exemplo. Ao iniciar o mês seguinte essa regra reinicia.
>> >
>> > Consegui implementar o servidor Radius, (FreeRadius) com banco de dados,
>> > autenticação PPPoE com MPD5, Controle de banda, tudo certinho. O
>> problema
>> > está em criar as quotas e controlar o limite de banda baseado nisso.
>> >
>> > Vi que a FUG está meio desatualizada em artigos, e acho que isso é um
>> > assunto interessante para aqueles que como eu trabalham em ISPs, e
>> > principalmente que utilizam FreeBSD. Gostaria do apoio da comunidade
>> para
>> > implementar isso e lançar um artigo detalhado sobre o assunto para
>> > favorecer os pobres mortais que futuramente terão a mesma dificuldade
>> que
>> > estou tendo hoje para implementar essa solução.
>> >
>> > Conto com o apoio dos mestres. ;)
>> >
>> Opa Marcio,
>>
>> Um certo tempo fiz alguns testes como esses que você tá fazendo e
>> consegui fazer funcionar sem o controle de franquia, que é o que você tá
>> querendo.
>> Não implantei pois precisava fazer umas mudanças internas e também eu
>> ainda não tinha IPv6 para fazer os testes que eu queria.
>> Levando-se em conta que no sistema que eu testava eu criei os planos de
>> velocidades em tables no ipfw e dummynet, assim quando o cliente
>> conectava, eu checava de qual plano ele era e jogava o IP dele da
>> conexão, na table certa. No seu caso poderia ser feito um script em php
>> que checasse a tabela radacct do radius  e calculasse se ele ultrapassou
>> a quantidade de bytes trafegados da franquia e se sim desconectaria ele
>> e jogaria ele na table de velocidade nova. Isso pode ser feito em php
>> tranquilamente.  :)
>>
>> Abração,
>> Gondim
>> -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>
>


Mais detalhes sobre a lista de discussão freebsd