Ang kill switch at mga tuntuning laban sa overlap ay tumuturo sa magkasalungat na direksyon, kaya hindi kailanman ipinapahayag ng ordinaryong setting ng VPN ang pangalawa. Ang kill switch ay tumutugon sa tunnel na bumagsak, samantalang ang pangangailangang ito ay tumutugon sa tunnel na nakatayo at naglalayo ng app sa larawan. Isang desisyon sa disenyo ang nagtatapos sa halos lahat: kung ihihinto ang app, hahadlangan ang pagsisimula, o kukunin lamang ang access sa network. Piliin ang layer na iyon bago umabot sa tuntunin ng firewall o loop na pumapatay ng proseso, dahil ang tuntuning ipinapatupad sa pamamagitan ng pagmamasid ay naglalabas ng bintana sa bawat paglunsad.

Mito: pinipigilan ng kill switch ang mga programang magsimula

Ang kill switch ay kontrol sa trapiko, at tapat sila tungkol doon: pinapayagan o tinatanggihan nila ang mga pakete ayon sa kalagayan ng tunnel. Wala sa kanila ang tumatangging magsimula ng programa, at wala ring sumusuri kung aling executable ang nagbukas ng socket. Ang shortcut sa desktop, naka-iskedyul na gawain at background helper ay lahat nakakarating sa network nang hindi dumadaan sa anumang nakakaalam ng pangalan ng app. Ang distansya sa pagitan ng dalawang mekanismong iyon ang lugar kung saan nakatira ang karamihan ng kalituhan.

Ang kaayusang tunay na nagpapasya kung maaaring magsimula ang isang programa ay ang kontrol ng aplikasyon. Sa Windows nangangahulugan iyon ng AppLocker o WDAC, at sa pinamamahalaang macOS ay listahan ng pinapayagan na ipinapatupad ng profile ng device. Pareho silang independiyente sa tunnel, kaya pinagsasama ang dalawang pangangailangan sa isang ticket at pagkatapos ay wala sa kanila ang natutugunan.

Pangalanan ang mode bago pangalanan ang kasangkapan

Isulat ang tuntunin bilang state machine na may tatlong estado: ordinaryong paggamit, sesyon ng trabaho sa VPN at paglabas. Ang ipinagbabawal na overlap ay kabilang sa gitnang estado, hindi sa software ng kliyente.

Ang nagbabago ng estado ay may tatlong aksyon sa pagkakasunod-sunod: tapusin ang gawain ng app, hilingin ang normal na pagsasara nito, at kumpirmahin na wala na ang instance bago umangat ang tunnel. Mahalaga rin ang pagkakasunod-sunod sa kabilang dulo, dahil ang VPN na unang kumokonekta at pagkatapos ay hinihinto ang programa ay pinahintulutan na ang overlap. Kung saklaw ng pangangailangan ang pagtatatag ng koneksyon, huli na ang paghihintay sa indicator na konektado.

Ano ang tunay na ginagawa ng dalawang-direksyong salungatan

Para sa dalawang serbisyong tunay na pinamamahalaan ng systemd, ang Conflicts= ay simetriko: ang pagsisimula ng isa ay humihinto sa isa. Ang reference ng unit ay nagdodokumento ng gawi na iyon at hiwalay na nangangailangan ng malinaw na pagkakasunod-sunod kapag ang isa ay kailangang tapusin ang paghinto bago magsimula ang isa. Kung wala ang mga entry na iyon ng pagkakasunod-sunod, nag-uunahan ang paghinto at pagsisimula, at ang resulta ay nakasalalay sa oras.

Ito ay hindi listahan ng pagbabawal. Ikabit ang dependency nang baliktad at ang pagsisimula ng app ay ihihinto ang VPN sa halip, na siyang sira na dapat paghinalaan kapag ang tunnel ay kusang nadiskonekta sa mahuhulaang sandali. Ang desktop application ay hindi systemd unit, at ang koneksyon ng NetworkManager ay hindi rin unit, kaya gumagana lamang ang pattern na ito para sa mga serbisyong ikaw mismo ang bumalot.

Subukan ang mga transition, hindi lamang ang unang paglunsad

Apat na transition ang nagpapasya kung mananatili ang pangangailangan: pagpasok sa sesyon habang tumatakbo ang app, muling paglunsad nito sa gitna ng sesyon, nabigong pagsisimula ng VPN, at sinadyang pagdiskonekta. Subukan ang bawat isa at itago ang resulta sa tabi ng mga unit file. Binabasa ng mga utos sa ibaba ang kasalukuyang ugnayan at pagkatapos ay ginagawa ang transition na pinakamahalaga.

systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active

Dapat iwan ng ikatlong utos ang app na hindi aktibo, at dapat ilista ng ikaapat lamang ang koneksyon ng tunnel habang tumatakbo ang sesyon. Iba ang resulta ay nangangahulugang hindi talaga ipinapatupad ang transition.

Ang muling paglunsad sa gitna ng sesyon ang kaso na naglalantad ng disenyong nakabatay sa balot, dahil ang shortcut na sinimulan mula sa desktop ay hindi kailanman kumukonsulta sa launch script. Kung mahalaga ang pag-iwas na ito, ang pagpapatupad ay kabilang sa kontrol ng aplikasyon at hindi sa kliyente ng VPN. Idokumento rin ang pagtatapos ng sesyon, at piliin ang sinadyang pagpapatuloy kaysa muling pagbubukas ng bawat prosesong hininto sa pagpasok. Itala ang resulta ng bawat transition sa parehong tala na nagtatago ng mga unit file.

Kaugnay na mga artikulo