Gjenoppkoblingsstorm i filialen: strongSwans opptaksgrenser
Et helt kontor bak én NAT kan overskride strongSwans grenser for halvåpne IKE. Tell opptakstilstand atskilt fra etablerte sesjoner før du hever en verdi.
Se en filial komme tilbake etter en lenkefeil, og gatewayen ser noe som aldri dukker opp på en vanlig dag: dusinvis av bærbare maskiner ankommer samtidig fra én offentlig adresse. Hver av dem er en legitim enhet, og hver av dem starter en IKE-utveksling som ennå ikke er ferdig. Om den bølgen lykkes, avhenger av grenser som ikke har noe å gjøre med hvor mange ansatte serveren kan bære. Bølgen er kort, og den er nettopp arbeidslasten opptaksveien ble bygget for å tåle.
Følg én bærbar maskin tilbake på nettverket
Klienten sender en første forespørsel og venter, og til utvekslingen er fullført holder gatewayen opptakstilstand for det forsøket. Andre enheter bak samme adresse ankommer mens den første fortsatt venter, og de stiller i kø bak en grense som teller adresser fremfor brukere. Utenfra er symptomet en håndfull brukere som kobler til og en større gruppe som går ut på tid.
Ingenting i den sekvensen er en feil. Det er opptaksveien som gjør det den ble konfigurert til.
Tell halvåpent arbeid som en egen ressurs
strongSwan skiller to populasjoner: assosiasjoner som er fullt etablert, og forsøk som fortsatt kobler til eller venter på behandling. Blokkeringsterskelen gjelder halvåpne assosiasjoner knyttet til én peer-adresse, og cookie-tersklene gjelder globalt og per adresse. Disse tellerne beskytter daemonen mot å bli brukt opp av uautentisert arbeid, som er nøyaktig formen på en gjenoppkoblingsstorm. Ingenting av den tilstanden vises i en liste over etablerte tunneler.
Å lese dem som et tak på ansattsesjoner er feilen som fører til å heve alt på en gang. En server som bærer fire hundre etablerte tunneler er ikke automatisk i stand til å absorbere fire hundre samtidige første pakker, fordi de to kostnadene lander på forskjellige steder.
Autentiseringsforsinkelse avgjør hvor lenge hvert forsøk blir i tallet på halvåpne. En backend som svarer langsomt gjør en kort bølge 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 lastet før du danner deg en mening om dem. Konfigurasjonen er ofte delt mellom en hovedfil og en mappe med utdrag per plugin, så en verdi du setter ett sted kan bli overstyrt et annet. Søket nedenfor viser hver fil som nevner disse innstillingene.
Avgjør deretter hvilket tall som er for lite. Hvis én adresse legitimt representerer et helt kontor, er blokkeringsterskelen per adresse den verdien som må romme den konsentrasjonen. En global cookie-terskel beskytter daemonen mot en bredere flom og bør ikke lempes fordi ett sted kobler til på nytt. Sammenlign den verdien per adresse med det største stedet du faktisk har.
Hold cookie-mekanismen aktivert. Cookies får en klient til å bevise at den kan motta på adressen den hevder før daemonen bruker ekte arbeid på utvekslingen, og å deaktivere dem er ikke en nøytral kapasitetsøkning. Hev en terskel bare med en målt ankomstrate og et erklært autentiseringsbudsjett bak.
grep -rn -E 'block_threshold|cookie_threshold' /etc/strongswan.conf /etc/strongswan.d/
swanctl --stats | grep -i half
Planlegg for tilbakekomsten, ikke bare den stabile tilstanden
Et tilgjengelighetsmål som bare teller etablerte sesjoner beskriver en rolig ettermiddag, ikke en gjenoppretting. Spør i stedet hvordan den tiltenkte populasjonen kommer tilbake etter en delt nettverkshendelse, og om opptaksveien kan absorbere den formen.
Å spre gjenoppkoblingen over en administrert flåte er ofte billigere enn å utvide grensene, fordi det fjerner den kunstige bølgen i stedet for å betale for den permanent. Overvåk halvåpen tilstand og opptakshendelser ved siden av vellykkede etableringer, og behandle et stigende antall halvåpne med flate suksesser som en tidlig advarsel snarere enn en kuriositet.
Leverandørens referanse for disse innstillingene er dokumentasjonen for strongswan.conf, som navngir tellerne og utgivelsen som innførte cookie-terskelen per adresse. Les avsnittet for din installerte versjon fremfor den nyeste siden, fordi standardverdier flytter seg mellom utgivelser.