Kill switches en regels tegen overlap wijzen in tegengestelde richtingen, wat verklaart waarom gewone VPN-instellingen de tweede nooit uitdrukken. De kill switch reageert op een tunnel die is gevallen, terwijl deze eis reageert op een tunnel die actief is en een applicatie buiten beeld houdt. Eén ontwerpbeslissing beslecht het meeste: of de applicatie wordt gestopt, verhinderd te starten, of alleen van netwerktoegang wordt beroofd. Kies die laag voordat u naar een firewallregel of een procesdodende lus grijpt, want een regel die door observatie wordt afgedwongen, lekt bij elke start een venster.

De mythe: een kill switch weerhoudt programma’s van starten

Kill switches zijn verkeerscontroles, en ze zijn er eerlijk over: ze staan pakketten toe of weigeren ze op basis van de tunnelstatus. Geen enkele weigert een programma te starten, en geen enkele inspecteert welk uitvoerbaar bestand een socket heeft geopend. Een bureaubladsnelkoppeling, een geplande taak en een achtergrondhulp bereiken allemaal het netwerk zonder iets te passeren dat de naam van de applicatie kent. De afstand tussen die twee mechanismen is waar het meeste misverstand woont.

De regeling die echt beslist of een programma mag starten, is applicatiebeheer. Op Windows betekent dat AppLocker of WDAC, en op beheerd macOS een allowlist die door het apparaatprofiel wordt afgedwongen. Beide zijn onafhankelijk van de tunnel, daarom worden de twee eisen in hetzelfde ticket samengevoegd en daarna door geen van beide vervuld.

Benoem de modus voordat u het gereedschap benoemt

Schrijf de regel als een toestandsmachine met drie toestanden: gewoon gebruik, VPN-werksessie en vertrek. De verboden overlap hoort bij de middelste toestand, niet bij de clientsoftware.

Wie de toestand wijzigt, bezit drie acties in volgorde: het werk van de applicatie afronden, het normale afsluiten aanvragen en bevestigen dat de instantie weg is voordat de tunnel omhoog komt. De volgorde is ook aan de andere kant belangrijk, want een VPN die eerst verbindt en het programma daarna stopt, heeft de overlap al toegestaan. Als de eis het opzetten van de verbinding omvat, is wachten op een verbonden-indicator te laat.

Wat een tweezijdig conflict werkelijk doet

Voor twee services die echt door systemd worden beheerd, is Conflicts= symmetrisch: het starten van de ene stopt de andere. De unit-referentie documenteert dat gedrag en vereist apart een expliciete volgorde wanneer de ene het stoppen moet afronden voordat de andere start. Zonder die volgorde-items racen stoppen en starten, en de uitkomst hangt af van timing.

Dat is geen denylijst. Draai de afhankelijkheid om en het starten van de applicatie stopt juist de VPN, wat de fout is die je moet vermoeden wanneer een tunnel zichzelf op een voorspelbaar moment loskoppelt. Een desktopapplicatie is geen systemd-unit, en een NetworkManager-verbinding is dat ook niet, dus dit patroon werkt alleen voor services die u zelf omhult.

Test de overgangen, niet alleen de eerste start

Vier overgangen beslissen of de eis standhoudt: de sessie binnengaan met de applicatie actief, deze halverwege opnieuw starten, een mislukte VPN-start en een bewuste ontkoppeling. Test ze allemaal en bewaar het resultaat naast de unit-bestanden. De onderstaande opdrachten lezen de huidige relatie en oefenen daarna de overgang die het meest telt.

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

De derde opdracht hoort de applicatie inactief te laten, en de vierde hoort alleen de tunnelverbinding te tonen terwijl een sessie loopt. Een ander resultaat betekent dat de overgang helemaal niet wordt afgedwongen.

De herstart tijdens de sessie is het geval dat een op omhulling gebaseerd ontwerp blootlegt, omdat een snelkoppeling die vanaf het bureaublad start nooit een startscript raadpleegt. Als die omzeiling telt, hoort de handhaving bij applicatiebeheer en niet bij de VPN-client. Documenteer ook het einde van de sessie, en geef de voorkeur aan een bewuste hervatting boven het heropenen van elk proces dat bij binnenkomst werd gestopt. Noteer het resultaat van elke overgang in dezelfde notitie die de unit-bestanden bevat.

Gerelateerde artikelen