Завантаження виглядає пошкодженим: порівняйте хеші на обох кінцях
Невдале завантаження не доводить, що тунель змінив байти. Порівняйте передбачуваний файл зі збереженим результатом, потім знайдіть першу межу, де вони розходяться.
Отримувачі, які не можуть відкрити завантажений файл, часто чують, що VPN його пошкодив. Це гіпотеза, а не спостереження, і її можна перевірити. Перш ніж торкатися тунелю, встановіть, чи об'єкт, який зараз збережено в пункті призначення, відрізняється від об'єкта, який мав бути надісланий. Усе інше випливає з цієї відповіді.
Почніть із передбачуваних байтів, а не зі скарги
Виберіть нешкідливий файл, який відтворює проблему, або справжній файл, якщо політика дозволяє йому залишити вихідне середовище. Перед передаванням запишіть дві речі: точний розмір у байтах і сучасний хеш вмісту. Імена файлів, часові позначки та попередні перегляди є метаданими, і жодне з них не ідентифікує вміст.
Обчисліть хеш алгоритмом, який можуть запустити обидва кінці, і запишіть, який ви використали. Порівняння між SHA-256 і MD5 не є порівнянням, і порівняння двох різних файлів, які випадково мають однакове ім'я, також.
PS> Get-FileHash -LiteralPath "C:\uploads\report.csv" -Algorithm SHA256
Hash Path
---- ----
9F2C... C:\uploads\report.csv
Довідка Microsoft щодо Get-FileHash описує команду та її параметр алгоритму, саме ту частину, яку люди пропускають, коли порівняння дає безглузду розбіжність.
Один хеш на етап, той самий алгоритм
Тепер обчисліть той самий алгоритм на збереженому об'єкті там, де він зрештою перебуває, дозволеним методом, а не на копії, що пройшла через інший інструмент. Збереження отриманого файлу локально та хешування цієї копії додає крок, який ви не перевіряли.
Якщо сервіс розкриває власне значення цілісності, ставтеся до нього як до окремого спостереження. Контрольна сума, яку повідомляє постачальник, може сказати, що постачальник вважає збереженим, і це не те саме твердження, що надіслав ваш клієнт.
Можливі три результати, і вони вказують у різні боки. Рівні хеші означають, що байти надійшли незмінними. Різні хеші з відомим перетворенням означають, що сервіс навмисно створив новий об'єкт. Різні хеші без перетворення означають, що щось між двома точками змінило вміст, і наступний крок — знайти найранішу межу, де це сталося.
Відокремте збій передавання від перетворення
Часткове завантаження й пошкоджене завантаження виглядають у файловому браузері однаково і є різними несправностями. Перевірте, чи завершилося передавання: журнал застосунку з перерваним запитом, збережений файл, розмір якого є префіксом джерела, або об'єкт, який насправді є сторінкою помилки, збереженою під очікуваним розширенням, усе це вказує на неповне передавання, а не на змінені байти.
Перетворення — інше поширене пояснення. Сервіс, який перестискає зображення, переписує кінці рядків CSV або конвертує документ, законно створить хеш, відмінний від джерела, і це не пошкодження. Порівнюйте етап, який заявляє, що є точною копією, а не остаточний формат подання.
Затримка та втрата належать до третьої категорії. Вони можуть змусити клієнт вийти за тайм-аутом, повторити спробу або здатися, і ніщо з цього не означає, що байти, прийняті сервером, були тихо змінені. Подивіться на результат передавання, перш ніж щось приписувати тунелю.
Спробуйте другий шлях, не змінюючи все
Якщо хеші справді різняться і перетворення немає, повторіть той самий файл, клієнт, протокол і призначення іншим підтримуваним шляхом, наприклад через локальну мережу замість VPN. Змініть одну змінну. Одночасна зміна клієнта, кінцевої точки та інструмента дає результат, який ви не можете нічому приписати.
Тримайте порівняння чесним в обох напрямках. Хеш каже, що дві точки розходяться або збігаються щодо вмісту; він не каже, яка сторона заслуговує довіри, тому тримайте очікуване значення й перевірку всередині моделі довіри, на яку ви справді покладаєтесь.
Завершіть конкретним реченням у заявці: передавання зупинилося рано, застосунок перетворив об'єкт, сховище його змінило, або байти збігаються і читання їх — це збій. Кожен із цих випадків має іншого власника, і жоден із них за замовчуванням не є VPN.