Az alkalmazás nem futhat, miközben a VPN be van kapcsolva: mi kényszeríti ki
Egy alkalmazás leállítása, miközben az alagút fent van, nem kill switch. Döntse el, ki birtokolja a módváltást, mi blokkolja az újraindítást, és mit tud a systemd, és mit nem.
A kill switchek és az átfedést tiltó szabályok ellentétes irányba mutatnak, ami megmagyarázza, miért nem fejezik ki a szokásos VPN-beállítások soha a másodikat. A kill switch egy leállt alagútra reagál, míg ez a követelmény egy fent lévő alagútra reagál, és kívül tartja az alkalmazást a képen. Egy tervezési döntés eldönti a nagy részét: leállítják-e az alkalmazást, megakadályozzák-e az indulását, vagy csak megvonják tőle a hálózati hozzáférést. Ezt a réteget válassza, mielőtt tűzfalszabályhoz vagy folyamatölő hurokhoz nyúlna, mert a megfigyeléssel kikényszerített szabály minden indításnál kiszivárogtat egy ablakot.
A mítosz: a kill switch megakadályozza a programok indulását
A kill switchek forgalomszabályozók, és őszinték ebben: az alagút állapota szerint engedik vagy tagadják a csomagokat. Egyik sem tagadja meg egy program indítását, és egyik sem vizsgálja, melyik végrehajtható fájl nyitott socketet. Az asztali parancsikon, az ütemezett feladat és a háttérsegéd mind eléri a hálózatot anélkül, hogy átmenne valamin, ami ismeri az alkalmazás nevét. A két mechanizmus közötti távolság az a hely, ahol a legtöbb zavar él.
Az az elrendezés, amely valóban eldönti, indulhat-e egy program, az alkalmazásvezérlés. Windowson ez AppLockert vagy WDAC-et jelent, a felügyelt macOS-en pedig az eszközprofil által kikényszerített engedélylistát. Mindkettő független az alagúttól, ezért a két követelmény ugyanabba a jegybe olvad, és aztán egyik sem teljesül.
Nevezze meg a módot, mielőtt megnevezné az eszközt
Írja le a szabályt három állapotú állapotgépként: rendes használat, VPN-munkamenet és kilépés. A tiltott átfedés a középső állapothoz tartozik, nem az ügyfélszoftverhez.
Aki az állapotot váltja, három műveletet birtokol sorrendben: befejezni az alkalmazás munkáját, kérni a rendes leállítását, és megerősíteni, hogy a példány eltűnt, mielőtt az alagút feljön. A sorrend a másik végén is számít, mert az a VPN, amely először csatlakozik, és másodszor állítja le a programot, már engedélyezte az átfedést. Ha a követelmény a kapcsolat létrehozására is kiterjed, a csatlakozott jelzésre várni túl késő.
Mit tesz valójában egy kétirányú konfliktus
Két, valóban systemd által kezelt szolgáltatás esetében a Conflicts= szimmetrikus: az egyik indítása leállítja a másikat. A unit-referencia dokumentálja ezt a viselkedést, és külön megköveteli a kifejezett sorrendet, amikor az egyiknek be kell fejeznie a leállást, mielőtt a másik elindul. Az ilyen sorrendbejegyzések nélkül a leállás és az indítás versenyez, és az eredmény az időzítéstől függ.
Ez nem tiltólista. Fordítsa meg a függőséget, és az alkalmazás indítása helyette leállítja a VPN-t, ez az a hiba, amelyre gyanakodni kell, amikor egy alagút magától, kiszámítható pillanatban bontja a kapcsolatot. Az asztali alkalmazás nem systemd-unit, és a NetworkManager-kapcsolat sem az, ezért ez a minta csak azoknál a szolgáltatásoknál működik, amelyeket maga burkol be.
Az átmeneteket vizsgálja, ne csak az első indítást
Négy átmenet dönti el, tart-e a követelmény: belépés a munkamenetbe futó alkalmazással, újraindítása a munkamenet közepén, sikertelen VPN-indítás és szándékos bontás. Tesztelje mindegyiket, és tartsa az eredményt az unit-fájlok mellett. Az alábbi parancsok beolvassák a jelenlegi viszonyt, majd gyakorolják a legfontosabb átmenetet.
systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active
A harmadik parancsnak inaktívan kell hagynia az alkalmazást, a negyediknek pedig csak az alagútkapcsolatot kell felsorolnia, miközben egy munkamenet fut. Más eredmény azt jelenti, hogy az átmenetet egyáltalán nem kényszerítik ki.
A munkamenet közbeni újraindítás az az eset, amely leleplezi a burkoláson alapuló tervezést, mert az asztalról indított parancsikon soha nem kérdez indítószkriptet. Ha ez a megkerülés számít, a kikényszerítés az alkalmazásvezérléshez tartozik, nem a VPN-klienshez. Dokumentálja a munkamenet végét is, és részesítse előnyben a szándékos folytatást azzal szemben, hogy újranyit minden belépéskor leállított folyamatot. Jegyezze fel minden átmenet eredményét ugyanabba a jegyzetbe, amely az unit-fájlokat tartalmazza.