+ Responder ao Tópico



  1. #1

    Padrão Mikrotik+Freeradius+mysql - Problema de contabilidade (accounting)

    Desculpem se posto no lugar errado. Se for o caso por favor me indiquem o melhor lugar.

    Uso um mikrotik autenticando em um freeradius com mysql.
    Constatei que a contabilidade (accounting) que fica registrado na tabela radacct do mysql normalmente nao fecha corretamente o registro de conexão do cliente (Define o parametro acctstoptime, etc...).
    Dessa forma a contabilidade do extrato de horas fica impreciso, pq em alguns casos não sei quando o cliente terminou a conexão.
    Já li que esse problema é causado quando as mensagens enviadas pelo mikrotik referente a conexão são perdidos e não chegam no freeradius.

    Alguem sabe uma forma de normalizar isto?

  2. #2

    Padrão

    explique melhor o que esta ocorrendo.. colocando exemplos e detalhes... somente assim conseguimos te ajudar !



  3. #3

    Padrão

    Citação Postado originalmente por mrkzr Ver Post
    Desculpem se posto no lugar errado. Se for o caso por favor me indiquem o melhor lugar.

    Uso um mikrotik autenticando em um freeradius com mysql.
    Constatei que a contabilidade (accounting) que fica registrado na tabela radacct do mysql normalmente nao fecha corretamente o registro de conexão do cliente (Define o parametro acctstoptime, etc...).
    Dessa forma a contabilidade do extrato de horas fica impreciso, pq em alguns casos não sei quando o cliente terminou a conexão.
    Já li que esse problema é causado quando as mensagens enviadas pelo mikrotik referente a conexão são perdidos e não chegam no freeradius.

    Alguem sabe uma forma de normalizar isto?
    coloca seu Interim Update em 00:05:00e veja a porta de Accounting no seu freeradius e no MikroTik por padrão é a 1813.

  4. #4

    Padrão

    Deixe eu ver se me expresso de forma mais clara.

    Primeiramente, como já disse, o mikrotik está autenticando via Radius (independente se é pppoe ou hotspot). O servidor freeradius está configurado fazendo uso do mysql. Essa é a estrutura do provedor.

    Como vocês já sabem, quando o usuário se autentica no mikrotik, existem 2 processos: o de autorização (authorize) e o de contabilidade (accounting) respectivamente portas 1812 e 1813.

    O processo de "autorização" faz o radius informar ao mikrotik se o cliente pode acessar ou não. Já o processo de "accounting" faz a contabilidade de acessos dos usuários, ous seja, registra que o usuário X conectou na hora Y. Quando o usuário desconecta do mikrotik, o mesmo envia uma mensagem pro radius avisando que o usuário desconectou. Essa mensagem é enviada para a porta 1813... Dessa forma o radius guarda todas as informações de quando fulano entrou e quando saiu e pq saiu (motivo da desconexão, entre outros dados) dentro do mysql. Cada registro da tabela radacct representa uma sessão do usuário (um acesso).

    O radius diferencia uma sessão aberta de uma fechada através do campo acctstoptime. Se o campo for NULL, a sessão está aberta. Se o campo contiver uma data/hora, significa que esta fechada e o campo mostra quando o usuário desconectou.

    Agora vem o problema. Frequentemente verifico as sessões abertas dentro do mysql (select count(*) from radacct where acctstoptime is null) e notei que o número de sessões só aumenta, não refletindo o número de clientes online no mikrotik (que é o desejado). O que explica isso é que o mikrotik não está enviando corretamente as "mensagens de fechamento de sessão" ou esses pacotes estão sendo perdidos na rede.

    O que gostaria de saber é se os amigos já notaram esse fato e se encontraram alguma medida pra sincronizar essas informações no banco de dados.

    Espero ter sido mais claro. Grato.



  5. #5

    Padrão

    na configuracao do pppoe-server.. marca a opção one-serssion-per-host

    veja se ele fecha a sessao antes de abrir outra.. eh necessario que voce feche todas as sessoes abertas...

    recomendo desabilitar o pppoe-server...

    vai no mysql e executa:

    update radacct set AcctStopTime = NOW() Where AcctStopTime = ''

    feito isso.. seu banco esta acertado.. ai voce inicia o pppoe-server .. e veja se ele fecha as conexoes..

    e fique olhando os logs do mikrotik.. aqui quando isto acontece.. o mikrotik da uma mensagem assim

    "PPPoE connection from 00:00:00:01:02:03 was already active - close previous one"

  6. #6

    Padrão

    Obrigado pela dica. Vou testar e posto os resultados...