Divi risinājumi sola vienu un to pašu: kad tunelis krīt, nekas neiziet ārā atklātā veidā. Viens izslēgšanas laikā palaiž skriptu un pārgriež saskarnes. Otrs atstāj ugunsmūra noteikumu spēkā un neko neprasa no VPN klienta. Tie atšķiras ar to, kam ir tiesības rīkoties, kas notiek plaisas laikā un kā iekārta pēc tam atgriežas tīklā. Salīdzināt tos šajos trīs punktos ir lietderīgāk nekā strīdēties, kurš ir stingrāks.

Tas pats darbs ar diviem mehānismiem

Klients var palaist āķus, kad tunelis paceļas un kad tas tiek izslēgts, ja profils atļauj skriptu izpildi. Šis āķis darbojas klienta dzīves cikla ietvaros, tajā brīdī, kad savienojums aizveras. Ugunsmūra noteikums, gluži pretēji, pieder sistēmai un neuztraucas, vai klients darbojas, sabruka vai tika nogalināts.

PropertyTeardown scriptFirewall unit
Runs when the client is killedNoYes
Needs privilege at teardown timeUsually yesConfigured once, at boot
Acts on the whole machineOften, including recovery pathsOnly on the flows it matches

Šī tabula ir viss arguments. Skripts, kas darbojas tikai kārtīgas aizvēršanas laikā, aptver gadījumu, par kuru jūs uztraucāties vismazāk; svarīgais gadījums ir avārija vai pazūdošais tīkls, un neviens no tiem nedod tīru izslēgšanu.

Ko izslēgšanas āķis var un ko nevar

Dokumentētais modelis izstaigā tīkla saskarnes un izslēdz visu, izņemot loopback. Kad fiziskā ierīce ir izslēgta, nekas nevar izbēgt ārpus tuneļa, un tas ir tieši nodoms.

#!/bin/sh
for dev in /sys/class/net/*; do
  name=$(basename "$dev")
  [ "$name" = lo ] || ip link set dev "$name" down
done

Tas izslēdz arī vietējo tīklu, jebkuru pakalpojumu, ko iekārta mitina, un ceļu, ko jūs izmantotu problēmas labošanai. Klēpjdatorā bezvadu ierīce dažkārt pēc tam ir jāpārslēdz ar roku, tāpēc īss pārtraukums pārvēršas remonta sesijā. Vēl ļaunāk, āķim to visu var arī neļaut darīt: kad klients atsakās no tiesībām, izslēgšanas skripts darbojas nepilnvarotā kontā, un katra saskarnes izmaiņa neizdodas ar atļaujas kļūdu, kas tiek ierakstīta tieši tajā brīdī, kad neviens nelasa žurnālu.

Pirms uzticaties āķim, pārbaudiet, kā klients tiek startēts. Skripts, kas strādā, to palaižot ar roku kā root, neko nepierāda par pakalpojumu, kas sākas pie palaišanas.

Ko ugunsmūra noteikums dara citādi

Noteikums, kas atļauj tikai tuneļa datplūsmu, turpina darboties, kad klienta process ir pazudis, jo kodols nav atkarīgs no šī procesa. Noteikums ir arī šaurāks: tas bloķē tieši tos plūsmas, kam atbilst, un atstāj mierā loopback, vietējo apakštīklu un atjaunošanas ceļu, tāpēc tas neatstāj iekārtu bez izejas.

Cena ir tā, ka noteikums ir jāraksta un jāuztur tam, kam pieder resursdatora ugunsmūris, un tam ir jānosauc tuneļa ierīce, ko klients patiešām izveido. Tas nozīmē, ka noteikums un profils ir jāuztur kopā; pārdēvēta saskarne atstāj ugunsmūri, kas bloķē visu un neko neizskaidro.

Neviens mehānisms nepadara otru lieku. Ugunsmūra noteikums, kas pēc labojuma nekad netiek pārlādēts, ir tikpat izdomāts kā skripts, kas nekad neizpildās.

persist-tun izlemj, vai plaisa pastāv

Kad tuneļa ierīce pārdzīvo atvienošanos, pārdzīvo arī maršruti, kas uz to norāda. Datplūsma tad tiek izmesta, nevis novirzīta, tāpēc noklusējuma maršruts neatkrīt atpakaļ uz fizisko vārteju. Tieši šī uzvedība padara noplūdi maz ticamu jau pirms jebkura ugunsmūra noteikuma iesaistīšanās.

Bez šī iestatījuma ierīce tiek noņemta kopā ar maršrutiem, un noklusējuma maršruts atkal var norādīt uz fizisko vārteju. Vai tas notiks, ir atkarīgs no platformas un klienta, un tieši tāpēc stāvoklis ir jānovēro, nevis jāpieņem. Uzskatiet iestatījumu par kill switch daļu, nevis veiktspējas opciju.

Saglabājiet atkārtotas savienošanas ceļu dzīvu, tad pārbaudiet četrus stāvokļus

Stingrs bloķējums var arī traucēt klientam atkārtoti savienoties, jo klientam joprojām vajag maršrutu uz serveri caur fizisko vārteju, kamēr viss pārējais tiek noraidīts. Pirms tuneļa pacelšanas instalējiet resursdatora maršrutu šai vienai adresei un vispirms atrisiniet vārdu, jo DNS var būt bloķēts līdz brīdim, kad tas būs vajadzīgs.

ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0

Pēc tam pārbaudiet stāvokļus, nevis etiķeti. Apzināti izpētiet četrus momentus: aukstu startu bez tuneļa, veselu sesiju, neviena lūgtu kritienu un sesiju pēc atkopšanās. Katrā momentā nolasiet noklusējuma maršrutu un izdariet vienu pieprasījumu, kura izejas adrese ir redzama. Programma, kas padodas, kamēr tunelis ir izslēgts, neko nepasaka par pasta klientu vai atjauninātāju, tāpēc atkārtojiet pēdējo pārbaudi ar vienu fona programmu. Pierakstiet noteikumu, saskarņu nosaukumus un atkopšanas soļus, jo kill switch, ko neviens nevar pārbaudīt, ir bauma.

Saistītie raksti