Come avviare un tunnel WireGuard come servizio systemd
Il modello wg-quick@ attiva un profilo con nome e installa rotte, DNS e hook. Verifica l’unità, tieni un solo gestore al comando e prova lo smontaggio.
Hai un profilo WireGuard in /etc/wireguard/wg0.conf e vuoi che sia attivo senza digitare wg-quick up a mano dopo ogni riavvio. Il modello systemd fornito dal pacchetto fa esattamente questo: [email protected] esegue wg-quick per il profilo chiamato wg0. Installa anche indirizzi, rotte, DNS e qualsiasi hook dichiarato dal profilo, cioè più che caricare una chiave nel kernel. Controlla che il modello esista sul tuo sistema prima di dare per scontato che ci sia.
Il resto di questa guida segue l’ordine in cui lo faresti davvero.
Trova l’unità e il profilo che legge
Elenca i file di unità con systemctl list-unit-files 'wg-quick*'. Sulle distribuzioni che lo impacchettano vedrai [email protected], con il nome dell’istanza preso dal profilo. L’istanza si risolve in /etc/wireguard/<name>.conf, quindi wg-quick@wg0 legge solo wg0.conf e nient’altro. Se l’elenco è vuoto, il pacchetto di strumenti non è installato e nessuna attivazione servirà.
Tieni il profilo in modalità 600 e di proprietà di root. Contiene una chiave privata, e l’unità girerà ben volentieri con permessi peggiori se glielo permetti.
Alzalo e leggi il journal
Avvia l’istanza con systemctl start wg-quick@wg0, poi controlla systemctl status wg-quick@wg0 e journalctl -u wg-quick@wg0 -b. Un’unità che parte ed esce subito di solito ha un errore di profilo, e il journal nomina la riga. Conferma con wg show che l’interfaccia esiste e che l’ultimo handshake è recente. Il manuale di wg-quick elenca cosa fa lo script oltre all’interfaccia stessa.
Un’interfaccia configurata senza handshake è un problema di percorso o di chiave, non di servizio.
Tieni un solo gestore al comando
Se NetworkManager o un altro client possiede già il tunnel, avviare l’unità systemd crea un secondo proprietario per la stessa interfaccia, rotte e DNS. I sintomi sono confusi: il tunnel sale, poi le rotte spariscono, o il DNS torna indietro dopo qualche secondo. Scegli un gestore e disattiva l’altro per quel profilo. Il journal di solito mostra la presa di controllo come cambi di rotta o di resolver subito dopo che l’unità segnala il successo.
Due gestori non condividono la proprietà. Si sovrascrivono a vicenda.
Prova arresto, riavvio e avvio
Esegui systemctl stop wg-quick@wg0 e conferma che l’interfaccia è sparita e che le rotte sono state rimosse. Poi avvialo di nuovo e controlla che le rotte tornino, perché i bug di smontaggio si manifestano come rotte residue e non come avvii falliti. Infine abilitalo all’avvio con systemctl enable --now wg-quick@wg0 e riavvia una volta.
All’avvio il nome dell’endpoint deve risolversi prima che l’unità parta. Se il DNS non è ancora attivo, l’unità fallisce e resta fallita finché non la avvii a mano.
Annota il proprietario
Annota quale profilo legge l’unità, quale gestore possiede l’interfaccia e da dove viene il file. Quando qualcuno in seguito importerà lo stesso tunnel in un client desktop, quella nota è la differenza tra una migrazione e due distribuzioni che si contendono un indirizzo. Annota anche il nome dell’interfaccia, perché due profili con nomi simili sono la fonte abituale di confusione.
Un tunnel con due proprietari funziona fino al primo riavvio, e poi è un mistero. Per questo la nota appartiene al repository e non a un thread di chat.