Распространенным заблуждением является то, что фрагментации IPv6 нет, потому что в заголовке IPv6 нет поля фрагмента-смещения, которое есть в IPv4; однако это не совсем точно. IPv6 не позволяет маршрутизаторам фрагментировать пакеты; однако конечные узлы могут вставлять заголовок фрагментации IPv61.
Как указано в RFC 57222, одна из проблем фрагментации заключается в том, что она создает бреши в системе безопасности. В конце 1990-х годов было совершено несколько известных атак на Windows 95 с использованием перекрывающихся фрагментов IPv43; кроме того, встроенная фрагментация пакетов опасна для того, чтобы попасть в микросхему интернет-маршрутизатора из-за длинного списка проблем, которые необходимо решить. Одна из самых больших проблем заключается в том, что перекрывающиеся фрагменты, буферизованные в маршрутизаторе (ожидающие повторной сборки), потенциально могут привести к уязвимости безопасности на этом устройстве, если с ними неправильно обращаться. Конечным результатом является то, что большинство реализаций маршрутизаторов передают пакеты, требующие фрагментации, программному обеспечению; это не масштабируется на больших скоростях.
Другая проблема заключается в том, что если вы повторно собираете фрагменты, вы должны буферизовать их в течение определенного периода времени, пока не будут получены остальные. Кто-то может использовать эту динамику и отправить очень большое количество незавершенных IP-фрагментов; вынуждая рассматриваемое устройство тратить много ресурсов в ожидании возможности пересборки. Интеллектуальные реализации ограничивают количество ожидающих обработки фрагментов, чтобы предотвратить отказ в обслуживании из-за этого; однако ограничение оставшихся фрагментов может законным образом повлиять на количество допустимых фрагментов, которые могут быть повторно собраны.
Короче говоря, существует слишком много сложных проблем, чтобы маршрутизатор мог справиться с фрагментацией. Если пакеты IPv6 требуют фрагментации, реализации хостов должны быть достаточно умными, чтобы использовать обнаружение MTU пути TCP. Это также подразумевает необходимость сквозного разрешения нескольких сообщений ICMPv6; интересно, что многие администраторы брандмауэров IPv4 блокируют ICMP, чтобы защититься от враждебного сопоставления сети (а затем наивно блокируют все ICMPv6), не понимая, что блокировка всех ICMPv6 незаметно ломает вещи4.
КОНЕЧНЫЕ ПРИМЕЧАНИЯ:
См. раздел 4.5 спецификации Интернет-протокола версии 6 (IPv6).
Из RFC 5722: обработка перекрывающихся фрагментов IPv6:
Обычно используемые брандмауэры используют алгоритм, указанный в [RFC1858], для отсеивания вредоносных пакетов, которые пытаются перезаписать части заголовка транспортного уровня, чтобы обойти проверки входящего соединения. [RFC1858] предотвращает атаку перекрывающихся фрагментов на протокол верхнего уровня (в данном случае TCP), рекомендуя отбрасывать пакеты со смещением фрагмента, равным 1.
Хотя это хорошо работает для фрагментов IPv4, это не сработает для Фрагменты IPv6. Это связано с тем, что фрагментируемая часть пакета IPv6 может содержать заголовки расширения перед заголовком TCP, что делает эту проверку менее эффективной.
См. атака Teardrop (википедия).
См. RFC 4890: рекомендации по фильтрации сообщений ICMPv6 в брандмауэрах.
person
This
schedule
06.06.2011