Toepassing mag nie loop terwyl die VPN aan is nie: wat dit afdwing
Om ’n toepassing te stop terwyl die tonnel op is, is nie ’n kill switch nie. Besluit wie die modusverandering besit, wat ’n herbegin blokkeer, en wat systemd kan en nie kan doen nie.
Kill switches en geen-oorvleueling-reëls wys in teenoorgestelde rigtings, wat verduidelik waarom gewone VPN-instellings nooit die tweede een uitdruk nie. Die kill switch reageer op ’n tonnel wat afgegaan het, terwyl hierdie vereiste reageer op ’n tonnel wat op is en ’n toepassing buite die prentjie hou. Een ontwerpbesluit besleg die meeste daarvan: of die toepassing gestop word, verhinder word om te begin, of bloot van netwerktoegang beroof word. Kies daardie laag voordat jy na ’n firewall-reël of ’n prosesdoder-lus gryp, want ’n reël wat deur waarneming afgedwing word, lek ’n venster by elke bekendstelling.
Die mite: ’n kill switch verhoed dat programme begin
Kill switches is verkeerskontroles, en hulle is eerlik daaroor: hulle laat pakkies toe of weier dit volgens tonneltoestand. Nie een van hulle weier om ’n program te begin nie, en nie een ondersoek watter uitvoerbare lêer ’n sokket oopgemaak het nie. ’n Lessenaarskortpad, ’n geskeduleerde taak en agtergrondhulp bereik almal die netwerk sonder om iets te passeer wat die toepassing se naam ken. Die afstand tussen daardie twee meganismes is waar die meeste verwarring woon.
Die reëling wat wél besluit of ’n program mag begin, is toepassingsbeheer. Op Windows beteken dit AppLocker of WDAC, en op bestuurde macOS beteken dit ’n toelaatlys wat deur die toestelprofiel afgedwing word. Beide is onafhanklik van die tonnel, en daarom word die twee vereistes in dieselfde kaartjie saamgevoeg en dan deur nie een bevredig nie.
Noem die modus voordat jy die gereedskap noem
Skryf die reël as ’n toestandmasjien met drie toestande: gewone gebruik, VPN-werksessie en vertrek. Die verbode oorvleueling hoort by die middelste toestand, nie by die kliëntesagteware nie.
Wie die toestand verander, besit drie aksies in volgorde: die toepassing se werk voltooi, sy normale afskakeling aanvra en bevestig dat die instansie weg is voordat die tonnel opkom. Ordening is ook aan die ander kant belangrik, want ’n VPN wat eerste verbind en die program tweede stop, het die oorvleueling al toegelaat. As die vereiste verbindingsvestiging dek, is om op ’n verbind-aanduiding te wag te laat.
Wat ’n tweerigtingkonflik werklik doen
Vir twee dienste wat werklik deur systemd bestuur word, is Conflicts= simmetries: om een te begin stop die ander. Die eenheidsverwysing dokumenteer daardie gedrag en vereis afsonderlik eksplisiete ordening wanneer een moet klaar stop voordat die ander begin. Sonder daardie ordeningsinskrywings wedloop die stop en die begin, en die uitkoms hang van tydsberekening af.
Dit is nie ’n weierlys nie. Koppel die afhanklikheid verkeerd om en die begin van die toepassing stop eerder die VPN, wat die fout is om te vermoed wanneer ’n tonnel homself op ’n voorspelbare oomblik ontkoppel. ’n Lessenaartoepassing is nie ’n systemd-eenheid nie, en ’n NetworkManager-verbinding is ook nie een nie, so hierdie patroon werk net vir dienste wat jy self omhul.
Toets die oorgange, nie net die eerste bekendstelling nie
Vier oorgange besluit of die vereiste standhou: die sessie binnegaan met die toepassing aan die gang, dit weer van stapel stuur midde-in die sessie, ’n mislukte VPN-begin en ’n doelbewuste ontkoppeling. Toets elkeen en hou die resultaat langs die eenheidslêers. Die opdragte hieronder lees die huidige verhouding en oefen dan die oorgang wat die meeste saak maak.
systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active
Die derde opdrag moet die toepassing onaktief laat, en die vierde moet net die tonnelverbinding lys terwyl ’n sessie loop. ’n Ander resultaat beteken die oorgang word glad nie afgedwing nie.
Die herbegin tydens die sessie is die geval wat die ontwerp op die omhulsel ontbloot, want ’n kortpad wat van die lessenaar begin is, raadpleeg nooit ’n lanseerder-skrip nie. As daardie omseiling saak maak, hoort afdwinging by toepassingsbeheer en nie by die VPN-kliënt nie. Dokumenteer ook die einde van die sessie, en verkies ’n doelbewuste hervatting bo die heropening van elke proses wat op pad in gestop is. Teken die resultaat van elke oorgang aan in dieselfde nota wat die eenheidslêers hou.