Apri la finestra VPN di Windows dopo un errore e ti darà un numero e una frase, e la frase è di solito la metà meno utile. Il numero identifica quale fase della connessione ha fallito, e la fase determina quale log, quale impostazione e quale team guardare dopo. Percorrere le fasi in ordine richiede una decina di minuti e impedisce la sequenza nota di reinstallare gli adattatori, cambiare protocollo e reimpostare lo stack per riparare un account a cui non è mai stato consentito comporre.

Leggi il numero come una fase

Una connessione nativa attraversa quattro tappe. Raggiunge il server e stabilisce un collegamento, negozia la sicurezza, autentica l'utente e applica indirizzamento e routing. Un errore in ciascuna lascia prove diverse, e un codice che appartiene a una fase non dice nulla di utile sulle altre.

L'errore da evitare è trattare il codice come una gravità. Un errore di collegamento e un errore di autorizzazione si leggono entrambi come "impossibile connettersi", e non hanno altro in comune. La gravità dice quanto è urgente qualcosa; la fase dice cosa aprire.

Code familyStageWhere the evidence lives
829, 703Link or dial completionClient event log, remote listener reachability
720PPP negotiation and miniport bindingAdapter state, bindings, client log detail
691, 649, 812Identity and authorizationGateway or authentication server decision
Connected, no trafficAddressing, routing and resolutionRoute table and resolver configuration

Fase uno: il collegamento e il tentativo di composizione

829 significa che il collegamento sottostante è caduto. Non dice se il peer remoto ha smesso di rispondere, se un intermediario ha ucciso la sessione o se un criterio sul client l'ha chiusa. Un codice di completamento della composizione come 703 è ancora precedente: il tentativo non è mai arrivato ad avere un collegamento, il che di solito indica il profilo, lo stato del servizio o un criterio locale.

Get-VpnConnection -Name 'Corp' | Select-Object Name,ServerAddress,TunnelType,AuthenticationMethod,ConnectionStatus
Test-NetConnection -ComputerName vpn.example.net -Port 443
Get-WinEvent -LogName Application -MaxEvents 200 | Where-Object ProviderName -match 'RasClient' | Select-Object -First 15 TimeCreated,Id,Message

La query degli eventi è la parte che le persone saltano. Un record sul lato client con una marca temporale e un nome di interfaccia vale più della finestra, perché dice se il tentativo ha persino lasciato la macchina. Nessun record e nessuna risposta dall'ascoltatore significa un problema di raggiungibilità, e nessuna modifica al client lo cambia.

Se lo stesso profilo funziona su un'altra rete, fermati qui. Il codice descrive una condizione del percorso e non un errore di configurazione, e il prossimo confronto utile sono le due catture e non un'altra reinstallazione.

Fase due: PPP e il binding del miniport

720 si colloca tra il collegamento e l'utente. Il tunnel si è alzato e poi il livello PPP non è riuscito a negoziare un indirizzo o un protocollo di controllo, il che spesso è un problema di binding sul client e non una credenziale rifiutata. Questa distinzione è tutto il valore del codice: dice che la credenziale non è mai stata raggiunta, quindi l'account non è il sospetto.

Get-NetAdapter -IncludeHidden | Where-Object InterfaceDescription -match 'WAN Miniport' | Select-Object Name,Status,ifIndex
Get-NetAdapterBinding | Where-Object ComponentID -match 'ms_pptp|ms_l2tp|ms_sstp|ms_agile' | Select-Object Name,ComponentID,Enabled

Leggere quei due output è più informativo che reimpostare qualsiasi cosa. Un miniport presente ma non avviato, o un binding di protocollo disattivato da un altro software, produce esattamente l'errore di questa fase. Entrambi si riparano senza toccare il resto dello stack. Una reimpostazione completa, al contrario, rimuove indirizzamento e stato del filtro che non avevano nulla a che fare con il guasto.

Fase tre: identità e autorizzazione

691 significa che le credenziali sono state rifiutate. 649 significa che all'account non è consentito comporre, e 812 significa che un criterio di accesso remoto ha rifiutato la connessione. Sono decisioni, non guasti di trasporto, e il client può solo segnalarle.

Le prove sono dall'altra parte. Chiedi all'operatore del gateway il tentativo a quella marca temporale e il criterio che ha corrisposto; chiedi al proprietario della directory se l'account ha l'autorizzazione a comporre e se è nel gruppo richiesto dal criterio. Cambiare il tipo di tunnel o reinstallare il client non può alterare una decisione presa su un'identità.

Un'abitudine utile in questa fase è scrivere nel ticket la stringa esatta dell'account, incluso qualsiasi prefisso di dominio. Un numero sorprendente di casi 691 sono credenziali salvate per il dominio sbagliato, e questo si vede nella stringa dell'account e non nelle impostazioni del protocollo.

Fase quattro: connesso, e niente funziona

Una connessione può completarsi e restare inutile. Ha un indirizzo, il client segnala successo e ogni richiesta dell'applicazione scade. Nulla nella finestra lo riflette, e non c'è alcun codice da cercare. A quel punto la finestra è finita e le prove utili sono altrove.

Get-NetRoute -DestinationPrefix 10.24.0.0/16 | Select-Object DestinationPrefix,NextHop,InterfaceAlias
Resolve-DnsName files.corp.example.internal
Test-NetConnection -ComputerName 10.24.6.15 -Port 445

Se la rotta manca, il server non l'ha spinta o il client l'ha scartata. Se la rotta esiste e il nome fallisce, il problema è la risoluzione. Se entrambi funzionano e l'applicazione fallisce ancora, hai superato il tunnel e sei nella configurazione dell'applicazione stessa.

Mantieni le modifiche a un livello per test. Ogni modifica fatta prima del tentativo successivo diventa parte del contesto del codice successivo, e un codice che descrive la tua ultima modifica è peggio di nessun codice.

Un tentativo, una modifica, un record

Qualunque sia la fase, il record deve contenere il codice, il messaggio, il nome del profilo, la marca temporale e la rete su cui eri. Cinque campi, e ognuno di essi è già davanti a te nella finestra o nel log del client. Quell'insieme è abbastanza piccolo da incollarlo in un ticket e abbastanza specifico perché un'altra persona lo riproduca.

Poi metti quella marca temporale accanto al record dall'altra parte. La tabella vicino alla parte superiore di questa pagina dice quale fase possiede ogni discrepanza. Senza il secondo record il codice restringe solo la ricerca; con esso, la fase è decisa. Il confronto è ciò che trasforma un numero in una diagnosi e non in un'ipotesi.

Quell'abitudine copre quasi ogni guasto VPN nativo di Windows, e nessuno dei rami richiede di reinstallare nulla. La finestra ti diceva sempre quale avevi; il lavoro sta nel rifiutarsi di trattarli tutti come lo stesso problema.

Articoli correlati