Un monté, zéro connecté : ce que compte cette ligne strongSwan
L’ancien titre compte les associations IKE, pas les sous-réseaux ni les SA enfants, alors lisez d’abord les définitions chargées et les enfants installés.
Lisez une ligne d’état qui affiche Security Associations (1 up, 0 connecting) et elle ressemble au rapport d’un tunnel qui fonctionne. Deux sous-réseaux y font passer du trafic en même temps, alors le nombre semble mentir. Il ne ment pas ; il compte les associations IKE, et l’une d’elles peut héberger plusieurs enfants. Lisez les inventaires avant de toucher à une proposition ou à une route.
Pourquoi le titre et le trafic ne concordent pas
L’ancienne sortie stroke nomme son total associations de sécurité et le tire du gestionnaire d’associations IKE. Chaque association IKE établie en apporte une, quel que soit le nombre de CHILD SA en dessous. Un seul parent IKEv2 porte souvent plusieurs enfants, un par paire de sélecteurs de trafic, et les sélecteurs négociés d’un enfant peuvent couvrir plus d’une adresse ou d’un préfixe. Le nombre d’adresses de votre configuration n’a donc pas de rapport fixe avec le nombre affiché dans le titre.
La sortie moderne montre parfois un total au lieu de l’ancienne formulation « up », et un démon géré par swanctl n’est pas du tout piloté par les anciens réglages stroke. Ne supposez ni la formulation ni la règle de comptage d’une version à l’autre.
Comparez trois inventaires avant de changer quoi que ce soit
Commencez par ce qui est chargé, puis par ce qui est négocié, puis par ce qui fait réellement circuler des paquets. Ce sont trois questions différentes et chacune a sa propre commande.
swanctl --list-conns
swanctl --list-sas
La première liste les définitions de connexion que le démon a acceptées. La seconde liste les associations IKE établies avec leurs enfants, et c’est là qu’apparaît la vraie hiérarchie. Une définition présente dans un fichier mais absente de la première liste n’a jamais été chargée, et aucun nombre de nouvelles tentatives de l’initiateur n’y changera rien. Si vous utilisez plutôt l’ancienne interface, la paire équivalente est ipsec statusall et la même liste swanctl, selon le greffon qui possède la configuration. Ne mélangez pas les outils entre deux démons sur un même hôte et n’attendez pas une réponse unique et cohérente.
swanctl --list-sas --raw | head -40
ip -s xfrm state
La forme brute garde les identifiants et les sélecteurs visibles pour la comparaison, et la liste d’état du noyau montre ce que la pile croit avoir installé. Quand le démon et le noyau ne concordent pas, soit le démon a redémarré autour d’un enfant existant, soit l’objet du noyau a été retiré en dessous.
Lisez la hiérarchie, pas le total
Un parent établi illustratif avec deux enfants ressemble à un nœud avec deux enfants en dessous, chacun étiqueté avec son propre état et son mode. Videz la sortie réelle et comptez les enfants vous-même au lieu de lire un résumé que quelqu’un a collé depuis un tableau de bord.
swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'
Un parent avec deux enfants installés est un tunnel sain pour deux sous-réseaux. Un parent avec un enfant installé et un enfant absent est une autre situation, et les sélecteurs de l’enfant manquant sont ce qu’il faut comparer à la proposition du côté distant. Pendant le renouvellement des clés, un ancien enfant et son remplaçant peuvent apparaître ensemble pendant une courte fenêtre. Gardez l’horodatage avec l’instantané, car un comptage pris au milieu du renouvellement ressemble à une duplication et un comptage pris après ressemble à une perte.
Chargé, installé et trafic qui passe
Un enfant à l’état installé a des paramètres négociés et une entrée dans le noyau. Mais il n’a pas forcément transporté de paquet : les sélecteurs peuvent être plus étroits que le trafic attendu, et une route peut envoyer ce trafic ailleurs avant que le tunnel ne le voie. Envoyez un flux conforme aux sélecteurs négociés depuis un hôte autorisé, puis lisez les compteurs de l’enfant plutôt que le titre. Un compteur qui reste à zéro alors que vous générez du trafic correspondant indique le routage ou la politique, pas IKE.
swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'
Démarrer un enfant nommé est une action délibérée au résultat visible, et elle sépare « la connexion est inactive parce que personne ne l’a demandée » de « la connexion ne peut pas monter ». Une politique de piège à la demande se comporte exactement comme le premier cas, alors lisez le réglage d’initiation de la connexion avant de parler de panne.
Quand le comptage est vraiment faux
Si une définition manque dans l’inventaire chargé, regardez le chargement de la configuration et l’instance de démon qui tourne. Si elle est chargée mais ne négocie jamais, comparez propositions, contexte d’authentification et sélecteurs avec le pair, un enfant à la fois. Changez un élément par tentative et notez l’identifiant que vous avez changé. Revenir sur une proposition est trivial quand on sait laquelle ; c’est une devinette après trois modifications qui n’ont jamais été séparées.
Corrigez d’abord la mauvaise lecture. La plupart des signalements d’un second tunnel « manquant » finissent avec deux enfants installés sous un seul parent, et la seule chose qui ait jamais été cassée était la ligne de résumé à laquelle les gens faisaient confiance au lieu de la hiérarchie.