Perché la VPN del Mac cade quando colleghi un iPhone via USB
Un iPhone collegato via USB può aggiungere una rotta hotspot o un collegamento dispositivo di Xcode. Controlla il servizio, la rotta e l’errore del client prima di cancellare qualsiasi cosa.
Colleghi un iPhone per caricarlo e, un minuto dopo, la VPN sul tuo Mac smette di far passare traffico. Impostazioni di Sistema mostra un nuovo servizio chiamato iPhone USB, e la mossa ovvia è eliminarlo. Quella mossa è spesso sbagliata. Il servizio può essere l’Hotspot personale del telefono, oppure un collegamento che Xcode e gli strumenti per dispositivi usano per parlare con il telefono, e i due si comportano in modo abbastanza diverso da rendere necessaria l’identificazione prima dell’eliminazione.
Passo 1: Leggi il servizio che il telefono ha davvero creato
Apri Impostazioni di Sistema, poi Rete, e confronta l’elenco dei servizi con il telefono scollegato e collegato. Nell’attuale macOS il servizio appare come iPhone USB. Nota se è attivo, dove si trova nell’ordine dei servizi e se il Mac lo usa per la rotta predefinita. L’ordine dei servizi conta perché macOS sceglie il servizio attivo più alto che può raggiungere una destinazione, non quello di cui riconosci il nome.
La guida di Apple all’Hotspot personale descrive il meccanismo: finché l’Hotspot personale è attivo sul telefono, collegarlo via USB può far usare al Mac la connessione cellulare del telefono, anche quando volevi solo caricarlo. Non è un difetto del client VPN; la tabella di routing segue un servizio salito prima del Wi-Fi.
Se il servizio esiste ma resta inattivo con il telefono collegato, molto probabilmente stai guardando una connessione di sola carica o un collegamento dispositivo, non un hotspot. Conserva questa distinzione, perché i due passi successivi la verificano invece di indovinarla dall’icona.
Passo 2: Controlla quale rotta usa l’endpoint della VPN
Leggi la rotta verso l’indirizzo risolto del server VPN, non verso un sito web. route -n get è di sola lettura e stampa l’interfaccia e il gateway che il kernel userebbe, ed entrambe le righe contano.
scutil --dns | head -20
route -n get 203.0.113.10L’indirizzo sopra è un segnaposto di documentazione. Sostituiscilo con l’endpoint che mostra il tuo client e usa route -n get -inet6 per un endpoint IPv6. Confronta l’output con il telefono scollegato e collegato, e non aggiungere né rimuovere rotte tra le due letture. Se l’interfaccia cambia da en0 all’interfaccia iPhone USB, la rotta dell’hotspot ha vinto la ricerca e la connessione esterna della VPN ora viaggia sulla rete cellulare.
Un cambio di rotta non spiega ogni errore. Il client può ancora raggiungere il server e fallire più tardi sul traffico interno del tunnel, perché il nuovo percorso ha una MTU diversa o l’operatore blocca il protocollo. Leggi l’errore del client stesso prima di cambiare qualcosa: un timeout della stretta di mano esterna indica raggiungibilità, mentre un tunnel stabilito che smette di far passare traffico indica MTU, DNS o policy.
Passo 3: Separa un hotspot da un collegamento di comunicazione con il dispositivo
Xcode 15 e successivi parlano con un dispositivo collegato via USB tramite un canale di rete che include IPv6 link-local, quindi un Mac di sviluppo può mostrare un’interfaccia aggiuntiva che non ha nulla a che fare con l’accesso a internet. La nota tecnica TN3158 di Apple documenta questo comportamento e avverte che la VPN o il filtraggio di sicurezza possono interferire. È l’opposto del problema dell’hotspot: la VPN non si rompe perché il telefono offre internet; la connessione del dispositivo si rompe perché la VPN la cattura.
Due osservazioni separano i casi senza cattura dei pacchetti. Primo, controlla se l’interfaccia ha un indirizzo instradabile e una rotta predefinita, o solo un indirizzo fe80:: link-local; solo link-local significa che non c’è percorso verso internet. Secondo, chiudi la VPN e guarda se Xcode riesce a raggiungere di nuovo il dispositivo. Se ci riesce, le rotte o il filtro dei contenuti della VPN catturano il traffico link-local, e la correzione sta nella configurazione del tunnel diviso o del filtro, non nel pannello Rete.
ifconfig | grep -A4 -E '^en[0-9]+:'
netstat -rn -f inet6 | headNon giudicare solo dal nome dell’interfaccia. macOS crea e distrugge queste interfacce man mano che i dispositivi si collegano, e il numero en viene assegnato in fase di esecuzione, quindi lo stesso Mac può mostrare un numero diverso dopo un riavvio o un cambio di cavo.
Passo 4: Riproduci il guasto con una variabile alla volta
Una volta che sai quale servizio è coinvolto, riproduci il problema in un ordine fisso. Parti con il telefono scollegato e la VPN connessa. Collega il telefono con l’Hotspot personale spento, attendi che l’elenco Rete si stabilizzi ed esegui di nuovo la query di rotta. Scollega, attiva l’Hotspot personale, ricollega e ripeti. Annota interfaccia, gateway ed errore del client per ciascuno dei tre stati, e hai un confronto al posto di un ricordo.
Se la VPN fallisce solo nello stato hotspot, tieni il telefono fuori da quel percorso: disattiva l’Hotspot personale durante la carica, o sposta il servizio iPhone USB sotto il Wi-Fi nell’ordine dei servizi. Se fallisce in ogni stato collegato, incluso con l’hotspot spento, guarda come il client gestisce una transizione di rete. Alcuni client abbattono il tunnel quando il servizio primario cambia e richiedono una riconnessione; è comportamento del client, non un difetto del telefono.
Cambia una cosa per tentativo. Eliminare il servizio, azzerare la configurazione della VPN e reinstallare il client nello stesso minuto ti lascia un Mac funzionante e nessuna idea di quale azione l’abbia riparato.
Passo 5: Decidi cosa tenere e cosa verificare
Lascia in pace il collegamento del dispositivo. Rimuovere un’interfaccia che Xcode usa non ripara una rotta VPN, e rompe la distribuzione sui dispositivi fino al collegamento successivo. Se il servizio hotspot è davvero indesiderato, disattiva prima l’Hotspot personale sul telefono; è il controllo documentato e sopravvive a un riavvio.
Se rimuovi comunque un servizio, rimuovi quello che hai identificato e poi verifica due cose: la rotta verso l’endpoint della VPN è tornata sull’interfaccia attesa, e il tunnel fa passare traffico verso un indirizzo interno, non solo verso internet. Annota l’ordine dei servizi e la versione del client, perché un aggiornamento di macOS può cambiare l’aspetto del telefono.
Poi classifica il guasto che hai davvero visto. Un timeout della stretta di mano, uno stallo dell’MTU dopo che il tunnel è salito e risposte DNS che arrivano dall’operatore sono tre problemi diversi con tre correzioni diverse. Il servizio USB è l’innesco in tutti e tre; la causa lo è raramente.