VPNSmith
self-host-vpnINFO

WireGuard su macOS: le due installazioni e il nome di interfaccia che manda in errore i tutorial Linux

L'app del Mac App Store e brew install wireguard-tools non sono lo stesso prodotto. Quale scegliere, come importare un .conf e perché wg0 fallisce su macOS mentre utun funziona.

Di Eric Gerard · Fondatore · VPNSmith - Specialista in VPN autogestite e VPS GDPR4 min letturaFoto via Pixabay

Installare WireGuard su un Mac sembra banale, finché il tutorial che stai seguendo non era scritto per Linux. Due cose fanno inciampare: esistono due prodotti WireGuard diversi per macOS, e il nome di interfaccia che tutti usano negli esempi, wg0, non può esistere su un Mac.

Le due installazioni, secondo la pagina ufficiale

La pagina di installazione di WireGuard le elenca entrambe, e sono software realmente distinti:

L'app del Mac App Store. Un client grafico con voce nella barra dei menu, importazione dei tunnel e attivazione su richiesta. È ciò che vuole la maggior parte delle persone.

Gli strumenti da riga di comando.

brew install wireguard-tools
# oppure, con MacPorts
port install wireguard-tools

Ottieni wg e wg-quick, gli stessi comandi che usi su un server. Sotto gira l'implementazione Go in spazio utente invece di un modulo del kernel, perché macOS non ha WireGuard nel kernel.

Non condividono l'elenco dei tunnel. Un tunnel importato nell'app non comparirà in wg show, e viceversa. Scegline uno per macchina, salvo un motivo preciso per averli entrambi.

Primo piano di uno schermo di terminale che mostra un elenco di directory Unix in verde e blu
Primo piano di uno schermo di terminale che mostra un elenco di directory Unix in verde e blu

Ciò che manda in errore i tutorial Linux: qui wg0 non esiste

È il fallimento più comune, e il messaggio di errore quasi mai lo spiega.

Su Linux crei wg0 e prosegui. Su macOS i tunnel passano dal driver utun, e la documentazione multipiattaforma di WireGuard enuncia il vincolo senza ambiguità: il driver utun non può avere nomi di interfaccia arbitrari. Bisogna usare utun seguito da un numero, per esempio utun0, oppure solo utun per lasciare scegliere al kernel.

# fallisce su macOS
sudo wg-quick up wg0

# funziona
sudo wg-quick up utun

Se hai copiato una guida che dice wg0, rinomina il file di configurazione e ogni comando che lo richiama. Chiavi, AllowedIPs, Endpoint e DNS non sono toccati: solo il nome dell'interfaccia dipende dalla piattaforma.

Sapere quale utun ti è toccato. Se lasci scegliere al kernel, ti serve un modo per conoscere il risultato. Imposta WG_TUN_NAME_FILE prima di alzare il tunnel e il nome scelto viene scritto lì:

export WG_TUN_NAME_FILE=/tmp/wg-name
sudo -E wg-quick up utun
cat /tmp/wg-name    # per esempio utun4

Altrimenti leggi l'output di ifconfig indovinando quale utun sia il tuo: accettabile una volta, noioso in uno script.

Importare una configurazione che hai già

Se hai generato una configurazione client sul tuo server, si trasferisce così com'è. Nell'app usa l'opzione di importazione e seleziona il file .conf: il tunnel compare nell'elenco, pronto da attivare. Da riga di comando, mettilo in /opt/homebrew/etc/wireguard/utun.conf (Apple Silicon) o /usr/local/etc/wireguard/utun.conf (Intel), dando al file il nome dell'interfaccia, poi lancia wg-quick up utun.

Una configurazione generata per un telefono funziona anche su un Mac. È una definizione di peer, non un artefatto legato al dispositivo, a patto che ogni dispositivo abbia la propria coppia di chiavi e non una condivisa.

Verificare che funzioni davvero

Alza il tunnel, poi conferma due cose invece di darle per scontate.

sudo wg show

Un peer in salute mostra un latest handshake di meno di due minuti e contatori transfer diversi da zero in entrambe le direzioni. Inviato ma nulla ricevuto è la firma di un percorso di ritorno bloccato. Se l'handshake non si completa mai, la nostra guida alla risoluzione dei problemi di handshake percorre le cause in ordine di probabilità.

Poi conferma che il traffico passi davvero dal tunnel, e non solo che l'interfaccia esista: controlla il tuo IP pubblico dal browser e, se instradi il DNS nel tunnel, verifica che non ci siano fughe. La nostra nota sulle fughe DNS in WireGuard copre le impostazioni che contano.

In breve

Due prodotti: l'app dell'App Store per un client grafico, wireguard-tools via Homebrew o MacPorts per la stessa riga di comando del tuo server. Non condividono i tunnel. E su macOS l'interfaccia deve chiamarsi utun o utunN, mai wg0, perché il driver utun non accetta nomi arbitrari. Quella sola riga spiega la maggior parte delle installazioni Mac fallite copiando guide Linux.

★ Datacenter GDPR di Norimberga · ✓ IPv4 dedicato incluso · 200+ Mbps garantiti

Il tuo Mac è il client. Il tunnel ha bisogno di un server → VPS ContaboUn VPS Linux fa girare il lato WireGuard a cui il tuo Mac si connette, con implementazione nel kernel anziché in spazio utente. Accesso root, prezzo prevedibile, datacenter europei.

★ Datacenter GDPR di Norimberga · ✓ IPv4 dedicato incluso · 200+ Mbps garantiti

Ospita la tua VPN sul tuo VPS → ContaboAccesso root completo · IPv4 pubblico · scegli la tua regione

Domande frequenti

Come si installa WireGuard su macOS?
La pagina ufficiale di installazione elenca due strade. L'applicazione grafica arriva dal Mac App Store. Gli strumenti da riga di comando arrivano da un gestore di pacchetti: `brew install wireguard-tools` con Homebrew, oppure `port install wireguard-tools` con MacPorts. Non sono lo stesso prodotto e non condividono l'elenco dei tunnel: scegline uno e restaci, a meno che tu non voglia espressamente entrambi.
Perché wg0 non funziona su macOS?
Perché macOS non ha un modulo WireGuard nel kernel: i tunnel passano dall'implementazione in spazio utente, sul driver utun, e quel driver non accetta nomi di interfaccia arbitrari. La documentazione multipiattaforma di WireGuard è esplicita: bisogna usare utun seguito da un numero, oppure solo utun per lasciare che sia il kernel a sceglierne uno. Un tutorial Linux che ti dice di creare wg0 fallirà quindi su un Mac, e il messaggio di errore raramente spiega perché.
Come faccio a sapere quale interfaccia utun ha scelto il kernel?
Imposta la variabile d'ambiente WG_TUN_NAME_FILE prima di alzare il tunnel. Quando il nome dell'interfaccia resta utun, il nome effettivamente scelto dal kernel viene scritto nel file che hai indicato. Senza, ti tocca leggere l'output di `ifconfig` e indovinare quale utun sia il tuo.
App dell'App Store o strumenti Homebrew?
L'applicazione se vuoi un'esperienza macOS normale: interruttore nella barra dei menu, importazione dei tunnel per trascinamento, attivazione su richiesta. I wireguard-tools se scrivi script, amministri la macchina via SSH o vuoi gli stessi comandi wg e wg-quick del tuo server. L'app è in sandbox e si aggiorna dall'App Store; la riga di comando dal tuo gestore di pacchetti.
Posso riutilizzare il .conf del mio server Linux?
Sì, lato client. Una configurazione di peer è testo semplice e quindi portabile: i blocchi [Interface] e [Peer] generati per un portatile funzionano così come sono. L'unica cosa che non si trasferisce è il nome dell'interfaccia: rinominalo in utun o utunN se il file o i tuoi comandi citano wg0. Chiavi, AllowedIPs, Endpoint e DNS passano invariati.