Анализатор помечает пакет как имеющий неверную контрольную сумму, а скачанный файл выглядит неправильно, поэтому два наблюдения сливаются в одну историю о повреждении на VPN. Это разные измерения, сделанные в разных точках. Одно описывает, что увидел механизм записи до того, как сетевой адаптер завершил свою работу; другое описывает байты, которые сохранило приложение. Установить, какое из них действительно изменилось, — это и есть весь диагноз.

Где находится запись относительно адаптера

Запись пакетов — это снимок в одной точке пути, содержащего несколько преобразований. Между стеком хоста и проводом находятся сегментация, вычисление контрольной суммы и при приёме объединение. Точка записи показывает состояние в этот момент, которое редко совпадает с окончательным кадром на проводе. Читать её так, будто это сам провод, — именно так поле-заполнитель превращается в обвинение.

Поэтому полезный вопрос о любом подозрительном поле — не выглядит ли оно неправильно, а где оно наблюдалось. Запишите рядом с находкой интерфейс записи, версию анализатора и уровень пакета; без этих трёх метку контрольной суммы вообще невозможно истолковать.

Что делает выгрузка при передаче с трассой

Когда выгрузка контрольной суммы при передаче включена, адаптер вычисляет контрольную сумму и заполняет поле после того, как хост поставил пакет в очередь. Поэтому запись на стороне хоста фиксирует заполнитель, и анализатор сообщает о контрольной сумме, которую провод никогда не нёс. Выгрузка сегментации создаёт похожий артефакт, поскольку хост может передать адаптеру один большой буфер, который позже становится несколькими кадрами.

Справка Wireshark по выгрузке описывает оба эффекта и отмечает, что распознавание частичных контрольных сумм зависит от версии анализатора и типа пакета. Поэтому старый инструмент записи и новый могут расходиться во мнениях об одной и той же трассе, хотя оба читают её правильно.

Инкапсуляция добавляет второй объект

VPN вставляет в картину второй пакет. Интерфейс туннеля показывает внутренний пакет, который приложение действительно отправило, а физический интерфейс показывает внешнее инкапсулированное соединение, которое его несёт. Контрольная сумма или длина, взятые из внутреннего пакета, не принадлежат внешнему кадру, и сравнение их так, будто они описывают один объект, даёт бессмыслицу.

Когда нужно сравнивать, сравнивайте подобное с подобным: внутреннее с внутренним, внешнее с внешним, в одной и той же точке пути. Несовпадающая пара полей доказывает лишь то, что измерены два разных объекта. Отметьте, из какого интерфейса пришла каждая трасса, потому что чистая на вид запись туннеля ничего не говорит о том, что выдал адаптер.

Докажите целостность файла хешами

Для самого файла вычислите хеш содержимого из воспроизводимого источника и из сохранённого результата, а затем сравните дайджесты. Это отвечает на другой вопрос, чем любая метка по пакету, и отвечает на него относительно объекта, который действительно важен пользователю.

sha256sum payload.bin
sha256sum /srv/transfer/payload.bin
cmp -l payload.bin /srv/transfer/payload.bin | head

Равные дайджесты закрывают вопрос повреждения для этой передачи. Разные дайджесты открывают более узкий: найдите самый ранний этап, где байты расходятся, и проверьте, не преобразовало ли что-то файл намеренно. Частичное сохранение, перекодированное вложение и страница ошибки, сохранённая под ожидаемым именем файла, меняют байты без какого-либо сетевого дефекта.

Локализуйте путь адаптера, не делая его постоянным

Для воспроизводимой проблемы, связанной с одним доком или адаптером, держите профиль VPN, приложение, тестовый объект и назначение фиксированными, затем повторите передачу через поддерживаемый альтернативный интерфейс. Результат, меняющийся вместе с адаптером, локализует неисправность на этом пути; он ещё не указывает настройку драйвера и не доказывает дефект всей модели.

Глобальное отключение выгрузки — соблазнительный тест и плохое значение по умолчанию. Настройка для всего хоста влияет на трафик далеко за пределами эксперимента и может нести реальные затраты производительности, поэтому считайте любое такое изменение временным, записывайте его и откатывайте. Используйте поддерживаемую производителем диагностику, прежде чем оставлять обходное решение, взятое с другой машины.

В отчёте должно быть указано, какой из трёх результатов изменился: интерпретация пакета анализатором, завершённые байты приложения или воспроизводимость одного пути адаптера. Они ведут к трём разным следующим действиям, и только одно из них касается шифрования.

Похожие статьи