Duas perguntas se confundem em toda discussão sobre cobrança de VPN: este usuário podia conectar-se, e o que ele realmente fez. A primeira é respondida pela autenticação. A segunda exige registros de contabilidade que começam, atualizam e terminam. Um login bem-sucedido prova a primeira e nada diz sobre a segunda, por isso uma configuração de autenticação RADIUS funcional ainda pode produzir um relatório de uso vazio.

Duas perguntas diferentes

A autenticação decide se uma conexão pode começar, e devolve um veredito com atributos como um pool de endereços ou um grupo. A contabilidade registra o serviço que se seguiu, como uma sequência de eventos ligados a uma sessão.

Eles viajam pelo mesmo protocolo e normalmente para o mesmo servidor, e é exatamente por isso que as pessoas supõem que um implica o outro.

Nada numa solicitação de acesso carrega a duração da sessão, e nada num registro Stop decide de novo se o usuário deveria ter sido admitido. Tratá-los como contratos separados torna o trabalho de integração visível: um caminho precisa de uma decisão, o outro de um ciclo de vida com começo, meio e fim.

O que os três tipos de registro oferecem

Um registro Start abre uma sessão, um Interim-Update relata atividade enquanto ela está aberta, e um Stop a fecha. Os três carregam um identificador de sessão para que o receptor possa relacioná-los a um único evento de serviço.

Esse identificador é o único vínculo confiável entre eles, porque o mesmo nome de usuário pode ter várias sessões em sequência ou em paralelo. Projete o armazenamento em torno dele e não do nome da conta.

Confirmar um registro é coisa diferente de armazená-lo bem. A especificação de contabilidade proíbe a confirmação quando o registro não pôde ser gravado, então uma resposta de fato diz que o receptor assumiu a responsabilidade. Ela não diz que a tarefa posterior de relatórios, o painel ou a exportação de cobrança o consumiram corretamente.

Por que o nome de usuário não é a sessão

Uma pessoa se conecta de um notebook pela manhã e de um telefone à tarde, e as duas sessões carregam o mesmo nome de conta. Um Start que chega sem o Stop correspondente não pode ser encerrado procurando o nome e escolhendo a linha aberta mais antiga.

Esse atalho é como os relatórios de uso ganham durações impossíveis.

Mantenha a identidade do servidor de acesso à rede ao lado do identificador de sessão, porque dois servidores podem atribuir o mesmo valor em contextos diferentes e uma fusão apenas pelo identificador pode unir sessões não relacionadas. Quando uma sessão termina de forma abrupta, a política de reconciliação precisa decidir como encerrá-la, e essa decisão pertence ao projeto e não a uma edição manual do banco feita uma vez por mês.

Onde o PAM se encaixa e onde não

O plugin de autenticação do OpenVPN chama os estágios de autenticação e de gestão de contas do PAM. O estágio de conta verifica a elegibilidade; seu nome não significa contabilidade de uso, e o plugin não aciona os ganchos de abertura e fechamento de sessão do PAM.

Alguns módulos PAM RADIUS podem enviar registros de contabilidade por esses ganchos de sessão, e isso só funciona quando a aplicação realmente os invoca.

Adicionar tal módulo a uma pilha de autenticação, portanto, não cria eventos de desconexão. Se você precisa do ciclo de vida completo, escolha uma integração que o possua: um plugin ou uma compilação compatível que emita Start, Interim-Update e Stop conforme a conexão muda de estado. Verifique seu estado de manutenção e o comportamento documentado quando o receptor está indisponível, porque um plugin que descarta registros em silêncio parece idêntico a um que nunca os enviou. A especificação de contabilidade define a semântica dos registros que a integração deve respeitar.

Uma execução de aceitação que prova o contrato

Teste uma conexão e desconexão normais, depois uma reconexão com a mesma conta, depois um cliente que desaparece sem se desconectar.

Acompanhe um identificador de sessão desde a geração, passando pela confirmação, até o armazenamento, e verifique a direção, as unidades e a interface dos contadores. Uma contagem de bytes sem rótulo é impossível de auditar depois.

Por fim, confirme que uma sessão que o servidor teve de encerrar por tempo limite é representada de um modo que o relatório entenda. Um contrato que cobre apenas desconexões ordenadas é um contrato que falha nos dias em que você mais precisa dele.

Artigos relacionados