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 клиентот. Документирајте го и крајот на сесијата и дајте предност на намерно продолжување наместо повторно отворање на секој процес запрен при влегувањето. Запишете го резултатот од секој премин во истата белешка што ги чува датотеките на единиците.

Поврзани статии