Gjenkoblingsstorm i filialen: strongSwans opptaksgrenser
Et helt kontor bak én NAT kan sprenge strongSwans grenser for halvåpne IKE. Tell opptakstilstanden atskilt fra etablerte sesjoner før du øker en verdi.
Se for deg en filial som kommer tilbake etter en linjefeil, og gatewayen ser noe som aldri forekommer på en vanlig dag: flere titalls bærbare maskiner ankommer samtidig fra én og samme offentlige adresse. Hver enkelt er en legitim enhet, og hver enkelt starter en IKE-utveksling som ennå ikke er fullført. Om denne bølgen lykkes, avhenger av grenser som ikke har noe med antall ansatte å gjøre. Bølgen er kortvarig, og den er akkurat den arbeidsmengden opptaksveien ble konstruert for.
Følg én bærbar maskin tilbake til nettverket
Klienten sender en innledende forespørsel og venter, og helt til utvekslingen er ferdig holder gatewayen opptakstilstand for forsøket. Andre enheter bak samme adresse dukker opp mens den første fortsatt venter, og de stiller seg i kø bak en grense som teller adresser og ikke brukere. Sett utenfra er symptomet noen få brukere som får forbindelse og en større gruppe som timer ut.
Det er ingen feil i denne sekvensen. Opptaksveien gjør jobben den er satt opp til.
Regn halvåpent arbeid som en egen ressurs
strongSwan holder to populasjoner fra hverandre: assosiasjoner som er fullt etablert, og forsøk som fortsatt kobler til eller venter på å bli behandlet. Blokkeringsterskelen gjelder halvåpne assosiasjoner som tilhører én peer-adresse, mens cookietersklene gjelder globalt og per adresse. Tellerne beskytter daemonen mot å bli spist opp av uautentisert arbeid, og det er nettopp formen på en gjenkoblingsstorm. Ingenting av denne tilstanden vises i en oversikt over etablerte tunneler.
Å tolke dem som et tak på ansattes sesjoner er feilen som får folk til å heve alt samtidig. En server som bærer fire hundre etablerte tunneler, klarer ikke automatisk å svelge fire hundre samtidige førstepakker, fordi de to kostnadene havner på forskjellige steder.
Autentiseringsforsinkelsen bestemmer hvor lenge hvert forsøk blir stående i tallet på halvåpne. En backend som svarer tregt gjør en kort bølge om til en lang kø, selv når ankomstraten er beskjeden.
swanctl --stats
swanctl --list-sas | grep -c ESTABLISHED
Les opptaksinnstillingene før du endrer dem
Finn verdiene den kjørende daemonen faktisk har lastet, før du gjør deg opp en mening. Konfigurasjonen er ofte fordelt på en hovedfil og en katalog med biter per plugin, så en verdi du setter ett sted kan bli overstyrt et annet. Søket nedenfor viser hver fil som nevner disse innstillingene.
Deretter må du avgjøre hvilket tall som er for lavt. Hvis én adresse med rette representerer et helt kontor, er blokkeringsterskelen per adresse den verdien som må romme konsentrasjonen. En global cookieterskel beskytter daemonen mot en bredere flom og bør ikke mykes opp bare fordi ett sted kobler til på nytt. Sammenlign verdien per adresse med det største stedet du faktisk har.
La cookiemekanismen være påslått. Cookies tvinger klienten til å bevise at den kan motta på adressen den hevder, før daemonen bruker reell arbeidskraft på utvekslingen, og å slå dem av er ikke en nøytral kapasitetsøkning. Øk en terskel bare med en målt ankomstrate og et erklært autentiseringsbudsjett i ryggen.
grep -rn -E 'block_threshold|cookie_threshold' /etc/strongswan.conf /etc/strongswan.d/
swanctl --stats | grep -i half
Planlegg for hjemkomsten, ikke bare den stabile tilstanden
Et tilgjengelighetsmål som bare teller etablerte sesjoner, beskriver en rolig ettermiddag og ikke en gjenoppbygging. Spør heller hvordan den planlagte populasjonen kommer tilbake etter en felles nettverkshendelse, og om opptaksveien kan svelge den formen.
Å fordele gjenkoblingen utover en administrert flåte er ofte billigere enn å utvide grensene, fordi det fjerner den kunstige bølgen i stedet for å betale for den for alltid. Overvåk halvåpen tilstand og opptakshendelser ved siden av vellykkede etableringer, og behandle et økende antall halvåpne med flate suksessrater som en tidlig advarsel og ikke en kuriositet.
Leverandørens referanse for disse innstillingene er dokumentasjonen til strongswan.conf, som navngir tellerne og utgivelsen som introduserte cookieterskelen per adresse. Les avsnittet for din installerte versjon i stedet for den nyeste siden, fordi standardverdiene flytter på seg mellom utgivelser.