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

Две точки обзора и пакет, который показывает каждая

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

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

Определите уровень до начала захвата

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

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

Что на самом деле содержит разница в размере

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

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

Как читать offload в этих числах

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

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

Где захват перестаёт быть доказательством

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

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

Если приходится делиться доказательствами, делитесь размерами, отметками времени и флагами, а не полезной нагрузкой. Вопрос был о размере пакета, и ответу редко нужны чьи-либо данные.

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