Der Upload wirkt beschädigt: Hashes an beiden Enden vergleichen
Ein fehlgeschlagener Upload ist kein Beweis dafür, dass der Tunnel Bytes verändert hat. Vergleichen Sie die beabsichtigte Datei mit dem gespeicherten Ergebnis und suchen Sie dann die erste Grenze, an der sie auseinanderlaufen.
Empfänger, die eine hochgeladene Datei nicht öffnen können, hören oft, der VPN habe sie beschädigt. Das ist eine Hypothese, keine Beobachtung, und sie ist prüfbar. Bevor Sie den Tunnel anfassen, stellen Sie fest, ob das jetzt am Ziel gespeicherte Objekt von dem Objekt abweicht, das gesendet werden sollte. Alles Weitere folgt aus dieser Antwort.
Beginnen Sie mit den beabsichtigten Bytes, nicht mit der Beschwerde
Wählen Sie eine harmlose Datei, die das Problem reproduziert, oder die tatsächliche Datei, wenn die Richtlinie es erlaubt, dass sie die Quellumgebung verlässt. Notieren Sie zwei Dinge vor der Übertragung: die genaue Größe in Bytes und einen modernen Inhalts-Hash. Dateinamen, Zeitstempel und Vorschauen sind Metadaten, und keines davon identifiziert den Inhalt.
Berechnen Sie den Hash mit einem Algorithmus, den beide Enden ausführen können, und schreiben Sie auf, welchen Sie verwendet haben. Ein Vergleich zwischen SHA-256 und MD5 ist kein Vergleich, und ein Vergleich zwischen zwei verschiedenen Dateien, die zufällig denselben Namen tragen, ebenso wenig.
PS> Get-FileHash -LiteralPath "C:\uploads\report.csv" -Algorithm SHA256
Hash Path
---- ----
9F2C... C:\uploads\report.csv
Microsofts Get-FileHash-Referenz dokumentiert den Befehl und seinen Algorithmusparameter, genau den Teil, den Leute überspringen, wenn ein Vergleich eine sinnlose Abweichung ergibt.
Ein Hash pro Stufe, derselbe Algorithmus
Berechnen Sie nun denselben Algorithmus auf dem gespeicherten Objekt, wo es schließlich liegt, mit einer autorisierten Methode statt mit einer Kopie, die durch ein anderes Werkzeug gelaufen ist. Die empfangene Datei lokal zu speichern und diese Kopie zu hashen, fügt einen Schritt hinzu, den Sie nicht getestet haben.
Wenn der Dienst einen eigenen Integritätswert bereitstellt, behandeln Sie ihn als separate Beobachtung. Eine vom Anbieter gemeldete Prüfsumme kann Ihnen sagen, was der Anbieter glaubt gespeichert zu haben, und das ist nicht dieselbe Aussage wie die, was Ihr Client gesendet hat.
Drei Ergebnisse sind möglich, und sie weisen in verschiedene Richtungen. Gleiche Hashes bedeuten, dass die Bytes unverändert ankamen. Unterschiedliche Hashes mit einer bekannten Konvertierung bedeuten, dass der Dienst absichtlich ein neues Objekt erzeugt hat. Unterschiedliche Hashes ohne Konvertierung bedeuten, dass etwas zwischen den beiden Punkten den Inhalt verändert hat, und der nächste Schritt ist, die früheste Grenze zu finden, an der das geschah.
Übertragungsfehler von Transformation trennen
Ein teilweiser Upload und ein beschädigter Upload sehen im Dateibrowser identisch aus und sind verschiedene Fehler. Prüfen Sie, ob die Übertragung abgeschlossen wurde: ein Anwendungsprotokoll mit einer abgebrochenen Anfrage, eine gespeicherte Datei, deren Größe ein Präfix der Quelle ist, oder ein Objekt, das tatsächlich eine Fehlerseite ist, die unter der erwarteten Erweiterung gespeichert wurde, deuten alle auf eine unvollständige Übertragung hin statt auf veränderte Bytes.
Transformation ist die andere häufige Erklärung. Ein Dienst, der Bilder neu komprimiert, CSV-Zeilenenden umschreibt oder ein Dokument konvertiert, erzeugt legitim einen Hash, der von der Quelle abweicht, und das ist keine Beschädigung. Vergleichen Sie die Stufe, die behauptet, die getreue Kopie zu sein, nicht das endgültige Präsentationsformat.
Verzögerung und Verlust gehören zu einer dritten Kategorie. Sie können einen Client in einen Timeout, einen erneuten Versuch oder ein Aufgeben treiben, und nichts davon bedeutet, dass vom Server angenommene Bytes still verändert wurden. Sehen Sie sich das Übertragungsergebnis an, bevor Sie etwas dem Tunnel zuschreiben.
Einen zweiten Weg versuchen, ohne alles zu ändern
Wenn die Hashes wirklich abweichen und keine Konvertierung im Spiel ist, wiederholen Sie dieselbe Datei, denselben Client, dasselbe Protokoll und dasselbe Ziel über einen anderen unterstützten Weg, etwa ein lokales Netzwerk statt des VPN. Ändern Sie eine Variable. Client, Endpunkt und Werkzeug auf einmal zu ändern liefert ein Ergebnis, das Sie nicht zuordnen können.
Halten Sie den Vergleich in beide Richtungen ehrlich. Ein Hash sagt Ihnen, dass zwei Punkte über den Inhalt übereinstimmen oder nicht; er sagt Ihnen nicht, welche Seite vertrauenswürdig ist, also halten Sie den erwarteten Wert und die Prüfung innerhalb des Vertrauensmodells, auf das Sie sich tatsächlich verlassen.
Schließen Sie mit einem konkreten Satz im Ticket: die Übertragung brach früh ab, die Anwendung hat das Objekt transformiert, der Speicher hat es verändert, oder die Bytes stimmen überein und das Lesen ist der Fehler. Jedes davon hat einen anderen Eigentümer, und keines davon ist standardmäßig der VPN.