Mortŝaltilo por VPN-flankaĉaro: bloku trafikon kiam ĝi eliras
Kunhavigi la nomspacon de VPN-kontenero ne haltigas la aplikaĵon kiam la tunelo mortas. Aldonu eksplicitan eliran politikon kaj testu restartigojn, ne nur malkonektojn.
Aplikaĵa kontenero, kiu kunhavigas la retan nomspacon de VPN-kontenero, ne havas propran interfacon, do estas facile supozi, ke ĝi ne povas sendi ion kiam la tunelo paneas. Tiu supozo estas malĝusta en la paneo, kiu gravas. Se la VPN-procezo mortas dum la nomspaco pluvivas, la aplikaĵo konservas siajn ingojn kaj la nomspaco konservas siajn itinerojn, kaj la trafiko daŭras laŭ la vojo, kiu ankoraŭ estas instalita. Reala mortŝaltilo estas eksplicita filtra politiko plus testoj de la vivociklo de la rulmedio, ne starta dependeco.
Kial kunhavigo de nomspaco ne estas mortŝaltilo
Kunhavigi nomspacon signifas, ke la aplikaĵo uzas la interfacojn, adresojn kaj itinertabelon de la VPN-kontenero. Ĝi forigas la sendependan vojon de la aplikaĵo al la reto dum la kunhavigita nomspaco estas sendifekta, kaj ĝi diras nenion pri tio, kion tiu nomspaco faros kiam la tunelo malaperos.
Dependecaj kondiĉoj de Compose povas prokrasti la starton de aplikaĵo ĝis dependeco estos sana. Tio kovras unu momenton en la tempo kaj neniun postan paneon, do ĝi estas ilo por starta ordo kaj ne daŭra elira fajroŝirmilo.
Kio efektive okazas kiam la kontenero eliras
Distingi tri okazaĵojn. La VPN-procezo ene de la kontenero povas morti dum la kontenero daŭre funkcias. La kontenero povas halti aŭ esti forigita, kio detruas la nomspacon. La kontenero povas esti rekreiita, kio konstruas novan nomspacon kaj novajn regulojn.
En la unua kazo la nomspaco restas, la implicita itinero eble ankoraŭ montras al la fizika interfaco, kaj la aplikaĵo daŭre sendas rekte. En la dua kazo la dependa aplikaĵo kutime tute perdas konektecon, ĉar ĝia nomspaco malaperis. En la tria kazo la aplikaĵo povas rekonektiĝi al freŝa nomspaco antaŭ ol la tunelo estas preta. Ĉiu kazo postulas alian teston, kaj dizajno, kiu kovras nur la ordan malkonekton, kovras la malplej interesan.
Konstruu eksplicitan eliran politikon
Skribu la politikon ene de la kunhavigita nomspaco por ke ĝi aplikiĝu al la pakaĵoj de la aplikaĵo. La formo estas implicita forĵeto kun mallarĝaj esceptoj: loopback, la interfaco de la tunelo, kaj la konkreta finpunkta adreso kaj pordo, kiujn la transporto de la tunelo bezonas.
La escepto pri la finpunkto devas ekzisti antaŭ ol la tunelo leviĝos, alie la VPN-kliento ne povas atingi sian servilon. Tial la regularo eksplicite permesas la eksteran transporton anstataŭ permesi la fizikan interfacon ĝenerale. Aldonu ankaŭ IPv6-regulojn se la nomspaco havas IPv6-konektecon, ĉar politiko nur por IPv4 lasas la alian familion malferma.
DNS ankaŭ apartenas al la politiko. Se la aplikaĵo solvas nomojn per solvilo atingebla nur ene de la tunelo, la forĵeta regulo rompos la solvadon kiam la tunelo estos mallevita, kio estas la ĝusta konduto por mortŝaltilo. Decidu konscie, ĉu tio estas tio, kion vi volas.
Testu la vivociklon, ne nur la malkonekton
Sendu freŝan sendanĝeran peton dum la tunelo estas sana, poste mortigu la VPN-procezon kaj sendu alian. Ripetu post kontenera halto, post restartigo kaj post rekreado. Freŝa peto gravas, ĉar ekzistanta konekto povas postvivi regulŝanĝon, kiu blokas novajn.
Ne fidu je saniga kontrolo aŭ je elira IP-serĉo kiel la blokada mekanismo. Kontrolo observas la staton kaj raportas ĝin; politiko regas la trafikon. Ambaŭ apartenas al la sama deplojo, kaj ili ne anstataŭas unu la alian.
Notu la regulojn por ke la testo postvivu ĝisdatigon
Skribu la atendatan rezulton por ĉiu panea kazo en la deplojan dokumentaron, kune kun la reguloj, kiuj efektivigas ĝin. Tiu noto ebligas lanĉi la saman teston post bilda ĝisdatigo aŭ post ĝisdatigo de la rulmedio, kiam la konduto de la nomspaco aŭ la implicitaj itineroj povas ŝanĝiĝi sen ke iu redaktu la compose-dosieron.
Tenu la postulatan eksteran vojon de la VPN-finpunkto aparte de senlima aplikaĵa eliro, kaj tenu DNS kaj IPv6 ene de la celita kovrado. Se la politiko permesas la tutan fizikan interfacon pro oportuno, la mortŝaltilo malaperis. La reta dokumentaro de Docker priskribas la aranĝon de kunhavigita nomspaco, sur kiu la politiko baziĝas, kaj ĝi estas la referenco kontrolenda kiam la konduto de la rulmedio estas pridubita.