Przesyłanie wygląda na uszkodzone: porównaj skróty po obu stronach
Nieudane przesłanie nie jest dowodem, że tunel zmienił bajty. Porównaj zamierzony plik z zapisanym wynikiem, a potem znajdź pierwszą granicę, na której się różnią.
Odbiorcy, którzy nie mogą otworzyć przesłanego pliku, często słyszą, że VPN go uszkodził. To hipoteza, a nie obserwacja, i można ją sprawdzić. Zanim dotkniesz tunelu, ustal, czy obiekt przechowywany teraz w miejscu docelowym różni się od obiektu, który miał zostać wysłany. Wszystko inne wynika z tej odpowiedzi.
Zacznij od zamierzonych bajtów, nie od skargi
Wybierz nieszkodliwy plik, który odtwarza problem, albo rzeczywisty plik, jeśli zasady pozwalają mu opuścić środowisko źródłowe. Przed przesłaniem zapisz dwie rzeczy: dokładny rozmiar w bajtach i nowoczesny skrót zawartości. Nazwy plików, znaczniki czasu i podglądy to metadane, i żadne z nich nie identyfikuje zawartości.
Oblicz skrót algorytmem, który może uruchomić obie strony, i zapisz, którego użyłeś. Porównanie między SHA-256 a MD5 nie jest porównaniem, a porównanie dwóch różnych plików, które przypadkiem dzielą nazwę, też nim nie jest.
PS> Get-FileHash -LiteralPath "C:\uploads\report.csv" -Algorithm SHA256
Hash Path
---- ----
9F2C... C:\uploads\report.csv
Dokumentacja Microsoftu dotycząca Get-FileHash opisuje polecenie i jego parametr algorytmu, dokładnie tę część, którą ludzie pomijają, gdy porównanie daje bezsensowną rozbieżność.
Jeden skrót na etap, ten sam algorytm
Teraz oblicz ten sam algorytm na przechowywanym obiekcie tam, gdzie ostatecznie się znajduje, metodą autoryzowaną, a nie na kopii, która przeszła przez inne narzędzie. Zapisanie otrzymanego pliku lokalnie i skrócenie tej kopii dodaje krok, którego nie sprawdziłeś.
Jeśli usługa udostępnia własną wartość integralności, traktuj ją jako osobną obserwację. Suma kontrolna podana przez dostawcę może powiedzieć, co dostawca uważa, że zapisał, i to nie jest to samo twierdzenie co to, co wysłał twój klient.
Możliwe są trzy wyniki i wskazują w różnych kierunkach. Równe skróty oznaczają, że bajty dotarły niezmienione. Różne skróty ze znaną konwersją oznaczają, że usługa celowo utworzyła nowy obiekt. Różne skróty bez konwersji oznaczają, że coś między dwoma punktami zmieniło zawartość, a następnym krokiem jest znalezienie najwcześniejszej granicy, na której to nastąpiło.
Oddziel błąd przesyłania od przekształcenia
Częściowe przesłanie i uszkodzone przesłanie wyglądają identycznie w przeglądarce plików i są różnymi usterkami. Sprawdź, czy przesyłanie się zakończyło: dziennik aplikacji pokazujący przerwane żądanie, zapisany plik, którego rozmiar jest prefiksem źródła, albo obiekt, który w rzeczywistości jest stroną błędu zapisaną pod oczekiwanym rozszerzeniem, wszystko to wskazuje na niekompletne przesłanie, a nie na zmienione bajty.
Przekształcenie to drugie częste wyjaśnienie. Usługa, która ponownie kompresuje obrazy, przepisuje końce wierszy CSV lub konwertuje dokument, zgodnie z prawem wytworzy skrót różny od źródła, i to nie jest uszkodzenie. Porównuj etap, który twierdzi, że jest wierną kopią, a nie końcowy format prezentacji.
Opóźnienie i utrata należą do trzeciej kategorii. Mogą sprawić, że klient przekroczy limit czasu, ponowi próbę albo się podda, i nic z tego nie oznacza, że bajty przyjęte przez serwer zostały po cichu zmienione. Spójrz na wynik przesyłania, zanim cokolwiek przypiszesz tunelowi.
Wypróbuj drugą ścieżkę, nie zmieniając wszystkiego
Jeśli skróty naprawdę się różnią i nie ma konwersji, powtórz ten sam plik, klienta, protokół i miejsce docelowe inną obsługiwaną ścieżką, na przykład przez sieć lokalną zamiast VPN. Zmień jedną zmienną. Zmiana klienta, punktu końcowego i narzędzia naraz daje wynik, którego nie możesz przypisać.
Utrzymuj porównanie uczciwe w obu kierunkach. Skrót mówi, że dwa punkty nie zgadzają się lub zgadzają co do zawartości; nie mówi, która strona jest godna zaufania, więc trzymaj oczekiwaną wartość i weryfikację w modelu zaufania, na którym naprawdę polegasz.
Zakończ konkretnym zdaniem w zgłoszeniu: przesyłanie zatrzymało się wcześnie, aplikacja przekształciła obiekt, magazyn go zmienił, albo bajty się zgadzają i to odczyt jest usterką. Każdy z tych przypadków ma innego właściciela, i żaden z nich nie jest domyślnie VPN.