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

Márcio Elias marcioelias em gmail.com
Segunda Março 3 17:35:52 BRT 2014


2014-03-03 17:34 GMT-03:00 Márcio Elias <marcioelias em gmail.com>:

> 2014-03-03 16:44 GMT-03:00 Bruno Araújo <bjaraujo em gmail.com>:
>
>> Em 03/03/2014, às 15:48, Márcio Elias <marcioelias em gmail.com> escreveu:
>>
>> > 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ê
>>>> >>> 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
>> >>>
>> >>
>> >>
>> > -------------------------
>> > Histórico: http://www.fug.com.br/historico/html/freebsd/
>> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>>
>> Parabéns pelo progresso, também diz alguns testes aqui e consegui
>> conectar clientes sem nat ( é assim que quero) e renomear a interface para
>> o nome de usuário mas o controle de tráfego também não quis por pipes.
>> Poderia me adiantar ou postar o link original sobre esse controle
>> netgraph?
>>
>> _______________
>> Bruno Araújo
>>
>>
>> Antes de imprimir, verifique se tem papel e tinta suficiente na
>> impressora.
>>
>> -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>
>
> Se vc está usando MPD, coloca os seguintes atributos na tabela radreply
> (para um usuário) ou radgroupreply (para um grupo):
>
> **para limitar o download com 2Mbits
> attribute = "mpd-limit"
> op = "+="
> value = "out#1=all rate-limit 2048000 384000 768000 pass"
>
> **para limitar o upload com 1Mbits
> attribute = "mpd-limit"
> op = "+="
> value = "in#1=all rate-limit 1024000 192000 384000 pass"
>
> rate-limit é o mesmo principio do comando no iOS da Cisco, onde o primeiro
> atributo é o limite de tráfego, o segundo o burst e o terceiro o extended
> burst.
>
> pra calcular o burst (segundo documentação da cisco):
>
> taxa * (1/8) * 1.5 (onde taxa é o limite de tráfego que vc quer).
>
> o último argumento "pass" no final do comando, é pra evitar a necessidade
> de outra regra para liberar o tráfego.
>
> Agora, me da tua contribuição ai, não tinha percebido que podia renomear
> as interfaces com o nome do usuario, qual foi o AVP que vc usou pra setar
> isso?
>
>
Esqueci de mencionar que o extended burst (terceiro valor) é igual a burst
* 2.

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

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


Mais detalhes sobre a lista de discussão freebsd