Chi non riesce ad aprire un file caricato sente spesso dire che la VPN lo ha corrotto. È un’ipotesi, non un’osservazione, ed è verificabile. Prima di toccare il tunnel, stabilite se l’oggetto ora memorizzato a destinazione differisce dall’oggetto che doveva essere inviato. Tutto il resto deriva da quella risposta.

Partite dai byte previsti, non dalla lamentela

Scegliete un file innocuo che riproduce il problema, o il file reale se la policy ne consente l’uscita dall’ambiente di origine. Annotate due cose prima del trasferimento: la dimensione esatta in byte e un hash del contenuto moderno. Nomi di file, timestamp e anteprime sono metadati, e nessuno di essi identifica il contenuto.

Calcolate l’hash con un algoritmo che entrambi i lati possono eseguire, e annotate quale avete usato. Un confronto tra SHA-256 e MD5 non è un confronto, e nemmeno lo è un confronto tra due file diversi che condividono un nome per caso.

PS> Get-FileHash -LiteralPath "C:\uploads\report.csv" -Algorithm SHA256
Hash                                                        Path
----                                                        ----
9F2C...                                                      C:\uploads\report.csv

La documentazione Get-FileHash di Microsoft descrive il comando e il suo parametro di algoritmo, proprio la parte che le persone saltano quando un confronto produce una discrepanza priva di senso.

Un hash per fase, lo stesso algoritmo

Ora calcolate lo stesso algoritmo sull’oggetto memorizzato dove vive infine, con un metodo autorizzato anziché con una copia passata attraverso un altro strumento. Salvare localmente il file ricevuto e calcolare l’hash di quella copia aggiunge un passaggio che non avete testato.

Se il servizio espone un proprio valore di integrità, trattatelo come un’osservazione separata. Il checksum riportato dal fornitore può dirvi cosa il fornitore ritiene di aver memorizzato, e non è la stessa affermazione di ciò che ha inviato il vostro client.

Sono possibili tre esiti, e puntano in direzioni diverse. Hash uguali significano che i byte sono arrivati invariati. Hash diversi con una conversione nota significano che il servizio ha prodotto intenzionalmente un nuovo oggetto. Hash diversi senza conversione significano che qualcosa tra i due punti ha alterato il contenuto, e il passo successivo è trovare il confine più precoce in cui è accaduto.

Separate l’errore di trasferimento dalla trasformazione

Un caricamento parziale e un caricamento corrotto sembrano identici in un file browser e sono guasti diversi. Verificate se il trasferimento è terminato: un log dell’applicazione che mostra una richiesta interrotta, un file memorizzato la cui dimensione è un prefisso della sorgente, o un oggetto che in realtà è una pagina di errore salvata con l’estensione attesa, tutti indicano un trasferimento incompleto anziché byte alterati.

La trasformazione è l’altra spiegazione comune. Un servizio che ricomprime immagini, riscrive i fine riga di un CSV o converte un documento produrrà legittimamente un hash diverso da quello di origine, e non è corruzione. Confrontate la fase che dichiara di essere la copia fedele, non il formato di presentazione finale.

Ritardo e perdita appartengono a una terza categoria. Possono far scadere un client, farlo riprovare o desistere, e nulla di ciò implica che i byte accettati dal server siano stati modificati in silenzio. Guardate l’esito del trasferimento prima di attribuire qualcosa al tunnel.

Provate un secondo percorso senza cambiare tutto

Se gli hash differiscono davvero e non c’è conversione, ripetete lo stesso file, client, protocollo e destinazione su un altro percorso supportato, come una rete locale invece della VPN. Cambiate una variabile. Cambiare client, endpoint e strumento insieme vi dà un risultato che non potete attribuire.

Mantenete il confronto onesto in entrambe le direzioni. Un hash vi dice che due punti sono in disaccordo o d’accordo sul contenuto; non vi dice quale lato sia affidabile, quindi tenete il valore atteso e la verifica dentro il modello di fiducia su cui contate davvero.

Chiudete con una frase precisa nel ticket: il trasferimento si è fermato presto, l’applicazione ha trasformato l’oggetto, la memoria lo ha modificato, oppure i byte coincidono e leggerli è il guasto. Ognuna di queste ha un proprietario diverso, e nessuna di esse è la VPN per impostazione predefinita.

Articoli correlati