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

Márcio Elias marcioelias em gmail.com
Terça Março 4 12:06:24 BRT 2014


Humm, vou ver isso.

Sobre o controle de banda, trabalho em um ISP e preciso limitar planos de
velocidades de clientes, 2M, 3M, 5M etc. Por isso é um controle simples, a
única coisa a mais é a franquia mensal, que quando ultrapassada o plano do
cliente é reduzido para a velocidade mínima garantida.

Acho que o controle de banda que vc quer envolve filas, tipo com PF + ALTQ
não seria isso?

Como não é minha realidade, acabei não vendo se tem algo neste sentido no
MPD, mais acho que não, pelo menos a documentação fala sobre pipes no IPFW
e mpd-limit usando Netgraph.

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

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


2014-03-04 10:11 GMT-03:00 Bruno Araújo <bjaraujo em gmail.com>:

> 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.
> -------------------------
> 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