VPN қосулы кезде қолданба жұмыс істемеуі керек: мұны не мәжбүрлейді
Туннель көтерілгенде қолданбаны тоқтату kill switch емес. Режим өзгерісі кімге тиесілі, қайта іске қосуды не бөгейді және systemd не істей алады, не істей алмайды — соны шешіңіз.
Kill switch-тер мен қабаттасуға тыйым салатын ережелер қарама-қарсы бағыттарды көрсетеді, сондықтан кәдімгі VPN параметрлері екіншісін ешқашан білдірмейді. Kill switch құлаған туннельге әрекет етеді, ал бұл талап көтерілген туннельге әрекет етіп, қолданбаны суреттен тыс ұстайды. Бір дизайн шешімі көбін шешеді: қолданба тоқтатыла ма, іске қосылуына тыйым салына ма, әлде тек желіге қатынауынан айырыла ма. Өрт қабырғасы ережесіне немесе процестерді өлтіретін циклге жүгінер алдында сол қабатты таңдаңыз, өйткені бақылау арқылы орындалатын ереже әр іске қосуда терезе ағызады.
Аңыз: kill switch бағдарламалардың іске қосылуын тоқтатады
Kill switch-тер трафикті басқару болып табылады және бұған адал: туннель күйіне қарай пакеттерге рұқсат береді немесе олардан бас тартады. Олардың ешқайсысы бағдарламаны іске қосудан бас тартпайды және ешқайсысы қай орындалатын файл сокет ашқанын тексермейді. Жұмыс үстелінің жарлығы, жоспарланған тапсырма және фондық көмекші — барлығы қолданбаның атын білетін ештеңеден өтпей-ақ желіге жетеді. Осы екі механизмнің арасындағы қашықтық — шатасудың көбі тұратын жер.
Бағдарламаның іске қосылу-қосылмауын шынымен шешетін құрылым — қолданбаларды басқару. Windows-та бұл AppLocker немесе WDAC дегенді білдіреді, ал басқарылатын macOS-та құрылғы профилі орындайтын рұқсат етілгендер тізімін білдіреді. Екеуі де туннельге тәуелсіз, сондықтан екі талап бір билетке біріктіріліп, кейін ешқайсысы орындалмайды.
Құралдың атын атар алдында режимнің атын атаңыз
Ережені үш күйлі күй машинасы ретінде жазыңыз: қарапайым пайдалану, VPN жұмыс сессиясы және шығу. Тыйым салынған қабаттасу ортаңғы күйге тиесілі, клиенттік бағдарламаға емес.
Күйді өзгертетін адам ретімен үш әрекетке ие: қолданбаның жұмысын аяқтау, оның қалыпты өшуін сұрау және туннель көтерілмес бұрын дананың кеткенін растау. Реттілік екінші жақта да маңызды, өйткені алдымен қосылып, кейін бағдарламаны тоқтататын VPN қабаттасуға әлдеқашан жол берген. Егер талап байланыс орнатуды қамса, қосылған индикаторын күту тым кеш.
Екі жақты қақтығыс шын мәнінде не істейді
Шынымен systemd басқаратын екі қызмет үшін Conflicts= симметриялы: бірін іске қосу екіншісін тоқтатады. Бірлік анықтамалығы бұл мінез-құлықты құжаттайды және бірі тоқтауды аяқтауы керек болғанда, екіншісі басталмай тұрып айқын реттілікті талап етеді. Осы реттілік жазбаларынсыз тоқтау мен бастау жарысады, ал нәтиже уақытқа тәуелді.
Бұл тыйым салу тізімі емес. Тәуелділікті кері қосыңыз, сонда қолданбаны іске қосу орнына VPN-ды тоқтатады, бұл туннель болжамды сәтте өздігінен ажырағанда күдіктенуге тұрарлық ақау. Жұмыс үстелі қолданбасы systemd бірлігі емес, NetworkManager байланысы да бірлік емес, сондықтан бұл үлгі тек өзіңіз қаптайтын қызметтер үшін жұмыс істейді.
Тек алғашқы іске қосуды емес, ауысуларды тексеріңіз
Төрт ауысу талаптың сақталуын шешеді: қолданба жұмыс істеп тұрғанда сессияға кіру, сессия ортасында оны қайта іске қосу, VPN-ның сәтсіз басталуы және әдейі ажырату. Әрқайсысын тексеріп, нәтижені бірлік файлдарының қасында сақтаңыз. Төмендегі командалар ағымдағы қатынасты оқып, содан кейін ең маңызды ауысуды жаттықтырады.
systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active
Үшінші команда қолданбаны белсенді емес күйде қалдыруы керек, ал төртіншісі сессия жүріп жатқанда тек туннель байланысын тізімдеуі керек. Басқа нәтиже ауысудың мүлде орындалмайтынын білдіреді.
Сессия кезінде қайта іске қосу — қаптауға негізделген дизайнды әшкерелейтін жағдай, өйткені жұмыс үстелінен басталған жарлық іске қосу скриптімен ешқашан кеңеспейді. Егер бұл айналып өту маңызды болса, орындау қолданбаларды басқаруға тиесілі, VPN клиентіне емес. Сессияның аяқталуын да құжаттаңыз және кіру кезінде тоқтатылған әрбір процесті қайта ашудың орнына әдейі жалғастыруды қалаңыз. Әр ауысудың нәтижесін бірлік файлдары сақталатын сол жазбаға жазыңыз.