Kill switch VPN blakuskonteinerim: bloķēt datu plūsmu, kad tas izslēdzas
VPN konteinera nosaukumtelpas kopīgošana neaptur lietotni, kad tunelis sabrūk. Pievienojiet skaidru izejošās plūsmas politiku un pārbaudiet restartus, ne tikai atslēgšanos.
Lietotnes konteinerim, kas kopīgo VPN konteinera tīkla nosaukumtelpu, nav savas saskarnes, tāpēc ir viegli pieņemt, ka tunelim sabrūkot tas nevar neko nosūtīt. Šis pieņēmums ir nepareizs tajā atteices režīmā, kuram ir nozīme. Ja VPN process mirst, kamēr nosaukumtelpa saglabājas, lietotne patur savus ligzdas un nosaukumtelpa patur savus maršrutus, un plūsma turpinās pa to ceļu, kas vēl ir instalēts. Īsts kill switch ir skaidra filtrēšanas politika plus izpildlaika dzīves cikla pārbaudes, nevis palaišanas atkarība.
Kāpēc nosaukumtelpas kopīgošana nav kill switch
Nosaukumtelpas kopīgošana nozīmē, ka lietotne izmanto VPN konteinera saskarnes, adreses un maršrutu tabulu. Tas novērš lietotnes neatkarīgo ceļu uz tīklu, kamēr kopīgotā nosaukumtelpa ir neskarta, un tas neko nesaka par to, ko šī nosaukumtelpa darīs, kad tunelis pazudīs.
Compose atkarību nosacījumi var aizkavēt lietotnes palaišanu, līdz atkarība ir vesela. Tas aptver vienu laika mirkli un nekādu vēlāku atteici, tāpēc tas ir palaišanas secības rīks, nevis pastāvīgs izejošās plūsmas ugunsmūris.
Kas patiesībā notiek, kad konteiners izslēdzas
Atšķiriet trīs notikumus. VPN process konteinera iekšpusē var nomirt, kamēr konteiners turpina darboties. Konteiners var apstāties vai tikt noņemts, un tas iznīcina nosaukumtelpu. Konteineru var izveidot no jauna, un tas izveido jaunu nosaukumtelpu un jaunus noteikumus.
Pirmajā gadījumā nosaukumtelpa saglabājas, noklusējuma maršruts joprojām var norādīt uz fizisko saskarni, un lietotne turpina sūtīt tieši. Otrajā gadījumā atkarīgā lietotne parasti pilnībā zaudē savienojumu, jo tās nosaukumtelpa ir pazudusi. Trešajā gadījumā lietotne var atkal pievienoties jaunai nosaukumtelpai, pirms tunelis ir gatavs. Katrs gadījums prasa citu pārbaudi, un dizains, kas aptver tikai kārtīgu atslēgšanos, aptver vismazāk interesanto.
Izveidojiet skaidru izejošās plūsmas politiku
Ierakstiet politiku kopīgotās nosaukumtelpas iekšpusē, lai tā attiektos uz lietotnes paketēm. Forma ir noklusējuma nomešana ar šauriem izņēmumiem: loopback, tuneļa saskarne un konkrētā galapunkta adrese un ports, kas vajadzīgs tuneļa transportam.
Galapunkta izņēmumam jābūt ieviestam pirms tuneļa pacelšanas, citādi VPN klients nevarēs sasniegt savu serveri. Tāpēc noteikumu kopums skaidri atļauj ārējo transportu, nevis atļauj fizisko saskarni kopumā. Pievienojiet arī IPv6 noteikumus, ja nosaukumtelpai ir IPv6 savienojamība, jo politika, kas attiecas tikai uz IPv4, atstāj otru saimi atvērtu.
DNS arī pieder pie politikas. Ja lietotne atrisina vārdus, izmantojot atrisinātāju, kas pieejams tikai tuneļa iekšpusē, nomešanas noteikums pārtrauks atrisināšanu, kad tunelis būs izslēgts, un tā ir pareizā kill switch uzvedība. Izlemiet apzināti, vai to vēlaties.
Pārbaudiet dzīves ciklu, ne tikai atslēgšanos
Nosūtiet jaunu nekaitīgu pieprasījumu, kamēr tunelis ir vesels, pēc tam nogaliniet VPN procesu un nosūtiet vēl vienu. Atkārtojiet pēc konteinera apstādināšanas, pēc restarta un pēc atkārtotas izveides. Jauns pieprasījums ir svarīgs, jo esošais savienojums var pārdzīvot noteikumu izmaiņas, kas bloķē jaunus.
Nepaļaujieties uz veselības pārbaudi vai izejas IP meklēšanu kā bloķēšanas mehānismu. Pārbaude novēro stāvokli un ziņo par to; politika kontrolē plūsmu. Abi pieder vienai un tai pašai ieviešanai, un tie nav savstarpēji aizstājami.
Pierakstiet noteikumus, lai pārbaude pārdzīvotu atjauninājumu
Ierakstiet katra atteices gadījuma gaidāmo iznākumu izvietošanas dokumentācijā kopā ar noteikumiem, kas to īsteno. Šis pieraksts ļauj palaist to pašu pārbaudi pēc attēla atjauninājuma vai izpildlaika jauninājuma, kad nosaukumtelpas uzvedība vai noklusējuma maršruti var mainīties, nevienam nerediģējot compose failu.
Turiet VPN galapunkta nepieciešamo ārējo ceļu atsevišķi no neierobežotās lietotnes izejas un turiet DNS un IPv6 paredzētajā pārklājumā. Ja politika ērtības dēļ atļauj visu fizisko saskarni, kill switch ir pazudis. Docker tīklu dokumentācija apraksta kopīgotās nosaukumtelpas izkārtojumu, uz kura politika balstās, un tas ir atsauce, kas jāpārbauda, kad izpildlaika uzvedība tiek apšaubīta.