Alguien pregunta cuántas máquinas hay en la VPN y se presenta el archivo de estado como prueba. Responde a una pregunta más estrecha: cuántas sesiones existen en esta instantánea y qué direcciones virtuales enruta el servidor. La brecha entre esas dos preguntas es donde viven la mayoría de los errores de informe, y cerrarla empieza por leer las cabeceras del propio archivo.

Qué contiene realmente la instantánea

El archivo se escribe a intervalos cuando la salida de estado está configurada para esa instancia de servidor, así que es una imagen periódica y no un flujo en vivo. Sus secciones enumeran las sesiones y el estado interno de enrutamiento por separado, y la versión del formato decide la disposición de las columnas.

status /run/openvpn/office.status 30
status-version 3

La versión 3 escribe campos separados por tabulaciones con una fila de cabecera, mientras que los formatos antiguos difieren y las versiones posteriores pueden añadir campos. Lea la cabecera en lugar de fijar un número de columna, porque un script que supone posiciones se rompe en silencio en la siguiente actualización.

RecordWhat it describesWhat it cannot tell you
Client listA session in this snapshotHow many people or machines that session represents
Real addressThe outer peer address and portWhich device is behind it
Routing rowsVirtual addresses and route ownershipWhich downstream hosts are alive

Cuente sesiones, no personas ni máquinas

Una sola conexión de sitio puede transportar tráfico de varias máquinas autorizadas detrás. Una sola persona también puede mantener más de una sesión a la vez, desde un portátil y un teléfono. Ninguno de esos patrones se ve en el recuento, por lo que los usuarios conectados solo tienen sentido cuando se define la unidad. Pregunte qué unidad necesita el informe antes de que alguien empiece a contar.

Si el número importa para licencias o capacidad, defina la unidad en el mismo documento que el informe. Un informe que no indica si cuenta sesiones, identidades o dispositivos se leerá como la unidad que el lector esperaba.

La dirección exterior no es un identificador

El campo de dirección real es la dirección y el puerto del par tal como los ve el servidor. Varios clientes detrás de una dirección pública traducida comparten esa dirección, así que agrupar por ella fusiona sesiones no relacionadas. El puerto también cambia entre conexiones, lo que hace inútil el par como clave estable. Un informe agrupado así parece preciso y es incorrecto.

Use la identidad efectiva del cliente para agrupar y trate la dirección como detalle de transporte. Cuando dos filas comparten una identidad, normalmente significa sesiones concurrentes y no un registro duplicado.

Las filas de enrutamiento no son inventario de equipos

Una entrada de enrutamiento puede nombrar una subred de la que un par es responsable, y una subred no es una lista de sus equipos. El servidor sabe que debe enviar ese rango a una sesión concreta, y no tiene idea de cuáles de esas máquinas están encendidas, autenticadas en una aplicación o sirven a alguien. La tabla de enrutamiento describe accesibilidad, no ocupación. Esa diferencia es la razón por la que una VPN no puede responder a una pregunta de inventario.

Varias filas también pueden apuntar al mismo par, porque un sitio puede anunciar más de un rango. Contar filas y llamar al resultado recuento de dispositivos exagera el despliegue por un factor arbitrario.

Si el requisito es realmente un inventario de activos, use el proceso de inventario que posee esa red. La VPN puede identificar qué par transporta una ruta, y ese es un hecho distinto de qué equipos existen detrás.

Edad, permisos y una vista en vivo

Conserve el tiempo de modificación del archivo con cada respuesta. Un servidor que se detuvo hace horas deja su última instantánea en su sitio, y un archivo obsoleto presentado como actual es peor que ningún informe.

El directorio debe existir y ser escribible por la cuenta con la que se ejecuta realmente el servicio, algo fácil de olvidar tras una pasada de endurecimiento. El archivo suele contener nombres y direcciones, así que guárdelo en una ubicación administrativa y no en cualquier sitio desde donde un servidor web pueda servirlo. Compruebe los permisos desde la cuenta del servicio, no desde su shell. Una instantánea que deja de actualizarse en silencio se parece exactamente a una red tranquila.

Para necesidades basadas en eventos, use la interfaz de gestión compatible en lugar de sondear más rápido. Trate esa interfaz como control, no como métricas, y nunca la exponga a internet solo para contar sesiones.

Artículos relacionados