Dos preguntas se confunden en toda conversación sobre facturación de VPN: si se permitió conectarse a este usuario y qué hizo en realidad. La primera la responde la autenticación. La segunda exige registros de contabilidad que empiezan, se actualizan y terminan. Un inicio de sesión correcto demuestra la primera y no dice nada de la segunda, por eso una configuración de autenticación RADIUS que funciona puede producir igualmente un informe de uso vacío.

Dos preguntas distintas

La autenticación decide si una conexión puede comenzar, y devuelve un veredicto junto con atributos como un grupo de direcciones o un grupo. La contabilidad registra el servicio que siguió, como una secuencia de eventos ligados a una sesión.

Viajan por el mismo protocolo y normalmente al mismo servidor, y exactamente por eso la gente supone que uno implica el otro.

Nada en una solicitud de acceso lleva la duración de la sesión, y nada en un registro Stop vuelve a decidir si el usuario debería haber sido admitido. Tratarlos como contratos separados hace visible el trabajo de integración: un camino necesita una decisión, el otro necesita un ciclo de vida con un principio, un medio y un final.

Qué aportan los tres tipos de registro

Un registro Start abre una sesión, un Interim-Update informa de actividad mientras está abierta y un Stop la cierra. Los tres llevan un identificador de sesión para que el receptor pueda relacionarlos con un único evento de servicio.

Ese identificador es el único vínculo fiable entre ellos, porque el mismo nombre de usuario puede tener varias sesiones en secuencia o en paralelo. Diseña el almacenamiento en torno a él y no al nombre de la cuenta.

Acusar recibo de un registro es algo distinto de guardarlo bien. La especificación de contabilidad prohíbe el acuse cuando el registro no se pudo escribir, así que una respuesta sí te dice que el receptor asumió la responsabilidad. No te dice que el trabajo posterior de informes, el panel o la exportación de facturación lo hayan consumido correctamente.

Por qué el nombre de usuario no es la sesión

Una persona se conecta desde un portátil por la mañana y desde un teléfono por la tarde, y ambas sesiones llevan el mismo nombre de cuenta. Un Start que llega sin su Stop correspondiente no se puede cerrar buscando el nombre y eligiendo la fila abierta más antigua.

Ese atajo es cómo los informes de uso adquieren duraciones imposibles.

Mantén la identidad del servidor de acceso a la red junto al identificador de sesión, porque dos servidores pueden asignar el mismo valor en contextos distintos y una fusión solo por el identificador puede unir sesiones no relacionadas. Cuando una sesión termina de forma brusca, la política de reconciliación tiene que decidir cómo cerrarla, y esa decisión pertenece al diseño y no a una edición manual de la base de datos hecha una vez al mes.

Dónde encaja PAM y dónde no

El complemento de autenticación de OpenVPN llama a las etapas de autenticación y gestión de cuentas de PAM. La etapa de cuenta comprueba la elegibilidad; su nombre no significa contabilidad de uso, y el complemento no controla los ganchos de apertura y cierre de sesión de PAM.

Algunos módulos PAM RADIUS pueden enviar registros de contabilidad a través de esos ganchos de sesión, y eso solo funciona cuando la aplicación realmente los invoca.

Añadir un módulo así a una pila de autenticación no crea, por tanto, eventos de desconexión. Si necesitas el ciclo de vida completo, elige una integración que lo posea: un complemento o una compilación compatible que emita Start, Interim-Update y Stop a medida que la conexión cambia de estado. Comprueba su estado de mantenimiento y su comportamiento documentado cuando el receptor no está disponible, porque un complemento que descarta registros en silencio parece idéntico a uno que nunca los envió. La especificación de contabilidad define la semántica de los registros que la integración debe respetar.

Una prueba de aceptación que demuestra el contrato

Prueba una conexión y desconexión normales, luego una reconexión con la misma cuenta, luego un cliente que desaparece sin desconectarse.

Sigue un identificador de sesión desde su generación pasando por el acuse hasta el almacenamiento, y comprueba la dirección, las unidades y la interfaz de los contadores. Un recuento de bytes sin etiqueta es imposible de auditar después.

Por último, confirma que una sesión que el servidor tuvo que cerrar por tiempo de espera se representa de un modo que el informe entiende. Un contrato que solo cubre desconexiones ordenadas es un contrato que falla los días en que más lo necesitas.

Artículos relacionados