Les en statuslinje som sier Security Associations (1 up, 0 connecting), og den ser ut som en rapport om én tunnel som virker. To subnett sender trafikk gjennom den samtidig, så tallet ser ut til å lyve. Det lyver ikke; det teller IKE-forbindelser, og én av dem kan huse flere barn. Les inventarene før du rører en proposisjon eller en rute.

Hvorfor overskriften og trafikken ikke stemmer

Den gamle stroke-utskriften kaller totalen sin sikkerhetsforbindelser og utleder den fra IKE-forbindelsesbehandleren. Hver etablert IKE-forbindelse bidrar med én, uansett hvor mange CHILD SA som ligger under den. Én IKEv2-forelder bærer vanligvis flere barn, ett per trafikkvelgerpar, og et barns forhandlede velgere kan dekke mer enn én adresse eller ett prefiks. Antallet adresser i konfigurasjonen din har derfor ingen fast relasjon til tallet i overskriften.

Moderne utskrift viser noen ganger en total i stedet for den gamle formuleringen “up”, og en swanctl-styrt daemon styres ikke i det hele tatt av gamle stroke-innstillinger. Ikke anta verken formuleringen eller telleregelen på tvers av versjoner.

Sammenlign tre inventarer før du endrer noe

Begynn med det som er lastet, deretter det som er forhandlet, deretter det som faktisk flytter pakker. Det er tre forskjellige spørsmål, og hvert har sin egen kommando.

swanctl --list-conns
swanctl --list-sas

Den første lister opp tilkoblingsdefinisjonene som daemonen godtok. Den andre lister opp etablerte IKE-forbindelser med barna sine, og det er der den virkelige hierarkiet vises. En definisjon som finnes i en fil, men mangler i den første listen, ble aldri lastet, og ingen mengde nye forsøk fra initiativtakeren retter det. Hvis du i stedet kjører det gamle grensesnittet, er det tilsvarende paret ipsec statusall og den samme swanctl-listen, avhengig av hvilken plugin som eier konfigurasjonen. Ikke bland verktøy mellom to daemoner på én vert og forvent ett sammenhengende svar.

swanctl --list-sas --raw | head -40
ip -s xfrm state

Råformen holder identifikatorer og velgere synlige for sammenligning, og kjernestatuslisten viser hva stakken tror den har installert. Når daemonen og kjernen er uenige, er daemonen enten restartet rundt et eksisterende barn, eller kjerneobjektet er fjernet under det.

Les hierarkiet, ikke totalen

En illustrerende etablert forelder med to barn ser ut som én node med to barn under seg, hvert merket med sin egen tilstand og modus. Dump den faktiske utskriften og tell barna selv i stedet for å lese et sammendrag noen har limt inn fra et dashbord.

swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'

Én forelder med to installerte barn er en sunn tunnel for to subnett. Én forelder med ett installert og ett manglende barn er en annen situasjon, og det manglende barnets velgere er det som skal sammenlignes med proposisjonen fra den fjerne siden. Under nøkkelfornyelse kan et gammelt barn og dets erstatning begge dukke opp i et kort vindu. Ta vare på tidsstempelet sammen med øyeblikksbildet, for en telling tatt midt i fornyelsen ser ut som duplisering, og en telling tatt etterpå ser ut som tap.

Lastet, installert og trafikk som passerer

Et barn i installert tilstand har forhandlede parametere og en kjerneoppføring. Men det har ikke nødvendigvis båret en pakke: velgere kan være smalere enn trafikken du forventer, og en rute kan sende den trafikken et annet sted før tunnelen i det hele tatt ser den. Send en strøm som samsvarer med de forhandlede velgerne fra en autorisert vert, og les deretter barnets tellere i stedet for overskriften. En teller som blir stående på null mens du genererer samsvarende trafikk, peker på ruting eller policy, ikke på IKE.

swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'

Å starte et navngitt barn er en bevisst handling med et synlig resultat, og den skiller “forbindelsen er ledig fordi ingen ba om den” fra “forbindelsen kan ikke komme opp”. En trap-policy på forespørsel oppfører seg nøyaktig som det første tilfellet, så les forbindelsens startinnstilling før du kaller det en feil.

Når tellingen virkelig er feil

Hvis en definisjon mangler i det innlastede inventaret, se på innlastingen av konfigurasjonen og hvilken daemon-instans som kjører. Hvis den er lastet, men aldri forhandler, sammenlign proposisjoner, autentiseringskontekst og velgere med motparten, ett barn om gangen. Endre ett element per forsøk, og noter identifikatoren du endret. Å rulle tilbake en proposisjon er trivielt når du vet hvilken; det er gjetning etter tre endringer som aldri ble skilt.

Rett opp feillesningen først. De fleste rapporter om en “manglende” andre tunnel ender med to installerte barn under én forelder, og det eneste som noen gang var ødelagt, var sammendragslinjen folk stolte på i stedet for hierarkiet.

Relaterte artikler