L’app non deve girare mentre la VPN è attiva: cosa lo impone
Fermare un’app mentre il tunnel è attivo non è un kill switch. Decidete chi possiede il cambio di modalità, cosa blocca un riavvio e cosa può fare systemd e cosa no.
I kill switch e le regole di non sovrapposizione puntano in direzioni opposte, il che spiega perché le impostazioni VPN ordinarie non esprimono mai la seconda. Il kill switch reagisce a un tunnel caduto, mentre questo requisito reagisce a un tunnel attivo e tiene un’applicazione fuori dall’immagine. Una decisione di progettazione risolve la maggior parte: se l’applicazione viene fermata, bloccata dall’avvio o semplicemente privata dell’accesso alla rete. Scegliete quello strato prima di ricorrere a una regola del firewall o a un ciclo che uccide i processi, perché una regola imposta per osservazione perde una finestra a ogni avvio.
Il mito: un kill switch impedisce ai programmi di avviarsi
I kill switch sono controlli del traffico, e lo dicono chiaramente: consentono o negano i pacchetti in base allo stato del tunnel. Nessuno di essi rifiuta di avviare un programma, e nessuno ispeziona quale eseguibile ha aperto un socket. Una scorciatoia del desktop, un’attività pianificata e un assistente in background raggiungono tutti la rete senza passare da qualcosa che conosca il nome dell’applicazione. La distanza tra questi due meccanismi è il luogo in cui vive la maggior parte della confusione.
La disposizione che decide davvero se un programma può avviarsi è il controllo delle applicazioni. Su Windows significa AppLocker o WDAC, e su macOS gestito significa un elenco di autorizzati imposto dal profilo del dispositivo. Entrambi sono indipendenti dal tunnel, ed è per questo che i due requisiti vengono fusi nello stesso ticket e poi non soddisfatti da nessuno dei due.
Nominate la modalità prima di nominare lo strumento
Scrivete la regola come una macchina a stati con tre stati: uso ordinario, sessione di lavoro VPN e uscita. La sovrapposizione vietata appartiene allo stato intermedio, non al software client.
Chi cambia lo stato possiede tre azioni in ordine: terminare il lavoro dell’applicazione, chiederne l’arresto normale e confermare che l’istanza è sparita prima che il tunnel salga. L’ordine conta anche all’altro capo, perché una VPN che si connette prima e ferma il programma dopo ha già consentito la sovrapposizione. Se il requisito copre l’instaurazione della connessione, aspettare un indicatore di connesso arriva tardi.
Cosa fa davvero un conflitto bidirezionale
Per due servizi davvero gestiti da systemd, Conflicts= è simmetrico: avviare uno ferma l’altro. Il riferimento delle unit documenta questo comportamento e richiede separatamente un ordine esplicito quando uno deve finire di fermarsi prima che l’altro inizi. Senza quelle voci d’ordine, l’arresto e l’avvio fanno a gara e il risultato dipende dal momento.
Questo non è un elenco di divieti. Collegate la dipendenza al contrario e l’avvio dell’applicazione fermerà invece la VPN, che è il guasto da sospettare quando un tunnel si disconnette da solo in un momento prevedibile. Un’applicazione desktop non è un’unità systemd, e una connessione NetworkManager non lo è nemmeno, quindi questo schema funziona solo per i servizi che incapsulate voi stessi.
Verificate le transizioni, non solo il primo avvio
Quattro transizioni decidono se il requisito regge: entrare nella sessione con l’applicazione in esecuzione, riavviarla a metà sessione, un avvio VPN fallito e una disconnessione deliberata. Provate ciascuna e tenete il risultato accanto ai file delle unit. I comandi seguenti leggono la relazione attuale e poi esercitano la transizione che conta di più.
systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active
Il terzo comando dovrebbe lasciare l’applicazione inattiva, e il quarto dovrebbe elencare solo la connessione del tunnel mentre una sessione è in corso. Un risultato diverso significa che la transizione non è affatto imposta.
Il riavvio durante la sessione è il caso che espone una progettazione basata su involucro, perché una scorciatoia avviata dal desktop non consulta mai uno script di avvio. Se questo aggiramento conta, l’imposizione appartiene al controllo delle applicazioni e non al client VPN. Documentate anche la fine della sessione, e preferite una ripresa deliberata alla riapertura di ogni processo fermato all’ingresso. Registrate il risultato di ogni transizione nella stessa nota che custodisce i file delle unit.