Én oppe, nul forbindende: hvad den strongSwan-linje tæller
Den gamle overskrift tæller IKE-forbindelser, ikke undernet eller underordnede SA, så læs indlæste definitioner og installerede børn først.
Læs en statuslinje, der siger Security Associations (1 up, 0 connecting), og den ligner en rapport om én fungerende tunnel. To undernet sender trafik gennem den samtidig, så tallet ser ud til at lyve. Det lyver ikke; det tæller IKE-forbindelser, og én af dem kan huse flere børn. Læs inventarerne, før du rører ved et forslag eller en rute.
Hvorfor overskriften og trafikken er uenige
Det gamle stroke-output kalder sit samlede tal for sikkerhedsforbindelser og udleder det fra IKE-forbindelsesadministratoren. Hver etableret IKE-forbindelse bidrager med én, uanset hvor mange CHILD SA der ligger under den. En enkelt IKEv2-forælder bærer ofte flere børn, ét for hvert trafikvælgerpar, og et barns forhandlede vælgere kan dække mere end én adresse eller præfiks. Antallet af adresser i din konfiguration har derfor ingen fast relation til tallet i overskriften.
Moderne output viser nogle gange et samlet tal i stedet for den gamle formulering “up”, og en swanctl-styret daemon styres slet ikke af gamle stroke-indstillinger. Antag hverken formuleringen eller tællereglerne på tværs af versioner.
Sammenlign tre inventarer, før du ændrer noget
Begynd med det, der er indlæst, derefter det, der er forhandlet, derefter det, der faktisk flytter pakker. Det er tre forskellige spørgsmål, og hver har sin egen kommando.
swanctl --list-conns
swanctl --list-sas
Den første viser de forbindelsesdefinitioner, som daemonen accepterede. Den anden viser etablerede IKE-forbindelser med deres børn, og det er der, den egentlige hierarki viser sig. En definition, der findes i en fil, men mangler i den første liste, blev aldrig indlæst, og ingen mængde gentagne forsøg fra initiativtageren retter det. Kører du i stedet det gamle interface, er det tilsvarende par ipsec statusall og den samme swanctl-liste, afhængigt af hvilket plugin der ejer konfigurationen. Bland ikke værktøjer mellem to daemoner på én vært og forvent ét sammenhængende svar.
swanctl --list-sas --raw | head -40
ip -s xfrm state
Råformen holder identifikatorer og vælgere synlige til sammenligning, og kernenstilstandslisten viser, hvad stakken tror, den har installeret. Når daemonen og kernen er uenige, er daemonen enten genstartet omkring et eksisterende barn, eller kerneobjektet er fjernet under den.
Læs hierarkiet, ikke det samlede tal
En illustrativ etableret forælder med to børn ligner én knude med to børn under sig, hvert markeret med sin egen tilstand og tilstandstype. Dump det faktiske output, og tæl børnene selv i stedet for at læse et resumé, som nogen har indsat fra et dashboard.
swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'
Én forælder med to installerede børn er en sund tunnel til to undernet. Én forælder med ét installeret og ét manglende barn er en anden situation, og det manglende barns vælgere er det, der skal sammenlignes med den fjernes forslag. Under nøglefornyelse kan et gammelt barn og dets erstatning begge optræde i et kort vindue. Gem tidsstemplet sammen med øjebliksbilledet, for et tal taget midt i fornyelsen ligner dubblering, og et tal taget bagefter ligner tab.
Indlæst, installeret og trafik der passerer
Et barn i installeret tilstand har forhandlede parametre og en kerneindgang. Men det har ikke nødvendigvis båret en pakke: vælgere kan være snævrere end den trafik, du forventer, og en rute kan sende den trafik et andet sted hen, før tunnelen overhovedet ser den. Send en strøm, der matcher de forhandlede vælgere, fra en autoriseret vært, og læs derefter barnets tællere i stedet for overskriften. En tæller, der bliver på nul, mens du genererer matchende trafik, peger på routing eller politik, ikke på IKE.
swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'
At starte et navngivet barn er en bevidst handling med et synligt resultat, og den skelner “forbindelsen er ledig, fordi ingen bad om den” fra “forbindelsen kan ikke komme op”. En trap-politik på anmodning opfører sig præcis som det første tilfælde, så læs forbindelsens startindstilling, før du kalder det en fejl.
Når tallet virkelig er forkert
Hvis en definition mangler i det indlæste inventar, så se på konfigurationsindlæsningen og på, hvilken daemon-instans der kører. Hvis den er indlæst, men aldrig forhandler, så sammenlign forslag, godkendelseskontekst og vælgere med modparten, ét barn ad gangen. Skift ét element for hvert forsøg, og notér den identifikator, du ændrede. At rulle et forslag tilbage er trivielt, når du ved hvilket; det er gætværk efter tre ændringer, der aldrig blev adskilt.
Ret først den forkerte læsning. De fleste rapporter om en “manglende” anden tunnel ender med to installerede børn under én forælder, og det eneste, der nogensinde var i stykker, var resumélinjen, som folk stolede på i stedet for hierarkiet.