Quelqu’un demande combien de machines sont sur le VPN, et le fichier d’état est produit comme preuve. Il répond à une question plus étroite : combien de sessions existent dans cet instantané, et quelles adresses virtuelles le serveur route. L’écart entre ces deux questions est là où vivent la plupart des erreurs de reporting, et le combler commence par la lecture des en-têtes du fichier lui-même.

Ce que l’instantané contient réellement

Le fichier est écrit à intervalle régulier lorsque la sortie d’état est configurée pour cette instance de serveur, c’est donc une image périodique et non un flux en direct. Ses sections listent séparément les sessions et l’état de routage interne, et la version du format décide de la disposition des colonnes.

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

La version 3 écrit des champs séparés par des tabulations avec une ligne d’en-tête, tandis que les formats plus anciens diffèrent et que les versions ultérieures peuvent ajouter des champs. Lisez l’en-tête au lieu de coder en dur un numéro de colonne, car un script qui suppose des positions casse silencieusement à la prochaine mise à niveau.

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

Comptez les sessions, pas les personnes ni les machines

Une seule connexion de site peut transporter le trafic de plusieurs machines autorisées derrière elle. Une seule personne peut aussi détenir plus d’une session en même temps, depuis un ordinateur portable et un téléphone. Aucun de ces schémas n’est visible dans le décompte, c’est pourquoi les utilisateurs connectés n’ont de sens qu’une fois l’unité définie. Demandez quelle unité le rapport exige avant que quiconque commence à compter.

Si le nombre compte pour les licences ou la capacité, définissez l’unité dans le même document que le rapport. Un rapport qui ne précise pas s’il compte des sessions, des identités ou des appareils sera lu comme l’unité que le lecteur attendait.

L’adresse externe n’est pas un identifiant

Le champ d’adresse réelle est l’adresse et le port du pair tels que le serveur les voit. Plusieurs clients derrière une adresse publique traduite partagent cette adresse, donc regrouper par elle fusionne des sessions sans rapport. Le port change aussi entre les connexions, ce qui rend la paire inutile comme clé stable. Un rapport regroupé ainsi paraît précis et il est faux.

Utilisez l’identité effective du client pour regrouper, et traitez l’adresse comme un détail de transport. Quand deux lignes partagent une identité, cela signifie généralement des sessions simultanées et non un enregistrement en double.

Les lignes de routage ne sont pas un inventaire des hôtes

Une entrée de routage peut nommer un sous-réseau dont un pair est responsable, et un sous-réseau n’est pas une liste de ses hôtes. Le serveur sait qu’il doit envoyer cette plage à une session particulière, et il n’a aucune idée des machines allumées, authentifiées auprès d’une application ou utiles à quelqu’un. La table de routage décrit l’accessibilité, pas l’occupation. Cette différence est toute la raison pour laquelle un VPN ne peut pas répondre à une question d’inventaire.

Plusieurs lignes peuvent aussi pointer vers le même pair, car un site peut annoncer plus d’une plage. Compter les lignes et appeler le résultat un nombre d’appareils surestime le déploiement d’un facteur arbitraire.

Si l’exigence est réellement un inventaire d’actifs, utilisez le processus d’inventaire qui possède ce réseau. Le VPN peut identifier quel pair porte une route, et c’est un fait différent de celui des hôtes qui existent derrière.

Âge, permissions et vue en direct

Conservez l’heure de modification du fichier avec chaque réponse. Un serveur arrêté il y a des heures laisse son dernier instantané en place, et un fichier obsolète présenté comme actuel est pire qu’aucun rapport.

Le répertoire doit exister et être inscriptible par le compte sous lequel le service tourne réellement, ce qu’on oublie facilement après une passe de durcissement. Le fichier contient généralement des noms et des adresses, gardez-le donc dans un emplacement administratif plutôt que n’importe où un serveur web peut le servir. Vérifiez les permissions depuis le compte du service, pas depuis votre shell. Un instantané qui cesse discrètement de se mettre à jour ressemble exactement à un réseau calme.

Pour les besoins pilotés par événements, utilisez l’interface de gestion prise en charge plutôt que d’interroger plus vite. Traitez cette interface comme un contrôle et non comme des métriques, et ne l’exposez jamais sur internet juste pour compter des sessions.

Articles similaires