Ein applikasjonscontainer som deler nettverksnamnerommet til ein VPN-container har ikkje sitt eige grensesnitt, så det er lett å anta at han ikkje kan senda noko når tunnelen sviktar. Den antakinga er feil i feilmodusen som betyr noko. Viss VPN-prosessen døyr medan namnerommet overlever, held applikasjonen på socketane sine og namnerommet held på rutene sine, og trafikken held fram på den vegen som framleis er installert. Ein ekte kill switch er ein eksplisitt filtreringspolicy pluss testar av livssyklusen til køyretidsmiljøet, ikkje ein oppstartsavhengigheit.

Kvifor deling av namnerom ikkje er ein kill switch

Å dela eit namnerom betyr at appen brukar grensesnitta, adressene og rutetabellen til VPN-containeren. Det fjernar den uavhengige vegen til appen til nettverket så lenge det delte namnerommet er intakt, og det seier ingenting om kva namnerommet vil gjera når tunnelen forsvinn.

Compose-avhengigheitsvilkår kan utsetja oppstarten av ein app til ein avhengigheit er sunn. Det dekkjer eitt augneblink i tid og ingen seinare feil, så det er eit verktøy for oppstartsrekkjefølgje og ikkje ein varig utgangsbrannmur.

Kva som faktisk skjer når containeren avsluttast

Skil mellom tre hendingar. VPN-prosessen inne i containeren kan døy medan containeren held fram med å køyra. Containeren kan stoppa eller fjernast, noko som øydelegg namnerommet. Containeren kan gjerast på nytt, noko som byggjer eit nytt namnerom og nye reglar.

I det første tilfellet består namnerommet, standardruta kan framleis peika på det fysiske grensesnittet, og applikasjonen held fram med å senda direkte. I det andre tilfellet mistar den avhengige appen vanlegvis tilkoplinga heilt, fordi namnerommet hans forsvann. I det tredje tilfellet kan appen kopla til eit ferskt namnerom før tunnelen er klar. Kvart tilfelle krev ein annan test, og eit design som berre dekkjer den ordentlege fråkoplinga dekkjer den minst interessante.

Bygg ein eksplisitt utgangspolicy

Skriv policyen inne i det delte namnerommet slik at han gjeld pakkane til appen. Forma er eit standarddropp med smale unntak: loopback, grensesnittet til tunnelen, og den konkrete endepunktadressa og porten som tunneltransporten treng.

Unntaket for endepunktet må vera på plass før tunnelen kjem opp, elles kan ikkje VPN-klienten nå serveren sin. Difor tillèt regelsettet den ytre transporten eksplisitt i staden for å tillata det fysiske grensesnittet generelt. Legg også til IPv6-reglar viss namnerommet har IPv6-tilkopling, fordi ein policy som berre gjeld IPv4 lèt den andre familien stå open.

DNS høyrer også med i policyen. Viss appen slår opp namn via ein resolver som berre er tilgjengeleg inne i tunnelen, vil droppregelen bryta oppslaget når tunnelen er nede, og det er den rette oppførselen for ein kill switch. Bestem medvite om det er det du vil.

Test livssyklusen, ikkje berre fråkoplinga

Send ein fersk ufarleg førespurnad medan tunnelen er sunn, drep deretter VPN-prosessen og send ein til. Gjenta etter ein containerstopp, etter ein omstart og etter å ha gjort han på nytt. Ein fersk førespurnad betyr noko fordi ei eksisterande tilkopling kan overleva ei regelendring som blokkerer nye.

Ikkje stol på ein helsesjekk eller eit exit-IP-oppslag som blokkeringsmekanismen. Ein sjekk observerer tilstanden og rapporterer han; ein policy styrer trafikken. Dei to høyrer til i same utrulling, og dei er ikkje erstatningar.

Skriv ned reglane slik at testen overlever ei oppdatering

Skriv det forventa resultatet for kvart feiltilfelle inn i utrullingsdokumentasjonen, saman med reglane som implementerer det. Den registreringa gjer det mogleg å køyra den same testen etter ei image-oppdatering eller ei køyretidsoppgradering, når namneromsoppførsel eller standardruter kan endra seg utan at nokon redigerer compose-fila.

Hald den påkravde ytre vegen til VPN-endepunktet skild frå ubegrensa applikasjonsutgang, og hald DNS og IPv6 innanfor den tiltenkte dekninga. Viss policyen tillèt heile det fysiske grensesnittet for enkelheit skuld, er kill switchen borte. Docker-nettverksdokumentasjonen skildrar ordninga med delt namnerom som policyen byggjer på, og det er referansen å sjekka når oppførselen til køyretidsmiljøet er usikker.

Relaterte artiklar