[FUG-BR] Radius + PPPoE com FreeBSD + MPD5
Bruno Araújo
bjaraujo em gmail.com
Terça Março 4 10:11:51 BRT 2014
Em 03/03/2014, às 17:34, Márcio Elias <marcioelias em gmail.com> escreveu:
> 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ê
>> 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
>>>>>
>>>>
>>>>
>>> -------------------------
>>> 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?
>
>
> --
> Att.
> __________________________________
> Márcio Elias Hahn do Nascimento
>
> Araranguá - SC
> Cel: (55) 48-9661-0233
> msn: marcioeliashahn em hotmail.com
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Para renomear a interface eu configurei o mpd.conf para rodar um script imediatamente após a interface ser criada.
set iface up-script /caminho/completo/up.sh
### up.sh
#!/bin/sh
ifconfig $1 name pppoe-$5
exit 0
------------------
Quando ao sem nat (tem + de 6 meses que não toco no sistema).
Me lembro de configurar proxy-arp no sistema e no mpd.conf tenho que fazer mais testes pois me parece que só é necessário em um de ambos.
Quando ao controle de tráfego pensei que seu método seria diferente do que me apresentou (ao menos agora conheço os parâmetros de controle de tráfego e o cálculo) estou a procura dum controle hierárquico e dinâmico para cada conexão.
_______________
Bruno Araújo
Antes de imprimir, verifique se tem papel e tinta suficiente na impressora.
Mais detalhes sobre a lista de discussão freebsd