Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

UDP_FRAG_BLOCKED Сетевое оборудование и VPN

Диагностика проблем прохождения фрагментированных UDP-пакетов через Firewall

Обновлено: 25.08.2026 · Официальная документация ↗
  • Большие DNS-ответы с DNSSEC записями (EDNS0 > 512 байт) завершаются по таймауту, в то время как стандартные короткие A-записи резолвятся мгновенно.
  • Потеря части сообщений Syslog или метрик SNMP при передаче больших пакетов через межсетевые экраны.
  • Сетевая файловая система NFS по протоколу UDP зависает при операциях чтения/записи файлов большого размера.
  • Межсетевой экран генерирует ошибки Fragmented packet dropped: non-initial fragment without state.

1. Анатомия фрагментации UDP и проблема Stateful Firewalls

В отличие от TCP, протокол UDP не имеет встроенных механизмов согласования размера сегмента (MSS). Если UDP-датаграмма превышает MTU интерфейса (например, 1500 байт), она разбивается на 2 или более IP-фрагмента:

  • Первый фрагмент (Initial Fragment / Offset = 0): содержит IP-заголовок и UDP-заголовок с номерами портов источника и назначения.
  • Последующие фрагменты (Non-initial Fragments / Offset > 0): содержат только IP-заголовок и тело данных. В них ОТСУТСТВУЮТ UDP-порты!

Межсетевой экран с контролем состояния (Stateful Firewall) не может определить порт назначения для второго фрагмента и сбрасывает его, если отключен механизм виртуальной реассемблирования (Virtual IP Reassembly).

2. Настройка виртуальной сборки фрагментов на Firewall

# Разрешение сборки фрагментов на Cisco ASA
fragment chain 24 GigabitEthernet0/0
fragment timeout 5 GigabitEthernet0/0

# Настройка FortiGate (включение Virtual IP Reassembly)
config system global
 set ip-reassembly enable
end

# Linux iptables: правильная обработка фрагментов в Connection Tracking
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -f -j ACCEPT   # Разрешение фрагментов, прошедших conntrack

3. Ограничение размера DNS-пакетов (EDNS0 Buffer Size)

Для предотвращения фрагментации ответов DNS настройте буфер EDNS0 на DNS-серверах (BIND9 / Unbound / PowerDNS) в безопасное значение 1220–1232 байта:

# /etc/bind/named.conf.options (BIND9)
options {
    edns-udp-size 1232;
    max-udp-size 1232;
};

4. Захват фрагментированных UDP-пакетов в tcpdump

# Захват IP-пакетов с установленным флагом More Fragments (MF) или Offset > 0
tcpdump -nnvv -i eth0 'ip[6:2] & 0x3fff != 0'
💡 Практика специалистов: Установка значения EDNS0 Buffer Size = 1232 байта является общепринятым мировым стандартом (DNS Flag Day), гарантирующим прохождение DNS-пакетов через любые IPv6 (MTU 1280) и туннельные сети без риска фрагментации и блокировок фаерволами.

Частые вопросы (FAQ)

Почему фрагментация UDP пакетов считается уязвимостью безопасности?

Злоумышленники используют фрагментацию для атак обхода межсетевых экранов (Tiny Fragment Attack, Overlapping Fragments/Teardrop), подменяя смещения смежных фрагментов и скрывая вредоносный код от систем сигнатурного анализа (IPS).

Что делает DNS-сервер, если фрагментированный UDP-ответ от авторитативного сервера блокируется?

Если клиент или резолвер не получает ответ по UDP, он сбрасывает размер буфера и переходит в режим fallback, отправляя запрос по протоколу TCP через порт 53 (флаг TC=1 / Truncated).

Как тайм-аут сборки IP-фрагментов (ipfrag_time) влияет на производительность ядра Linux?

Если в сети теряются отдельные фрагменты, ядро Linux держит неполные пакеты в оперативной памяти в течение 'ipfrag_time' (по умолчанию 30 сек). При высокой нагрузке это может вызвать исчерпание лимита 'ipfrag_high_thresh' и сброс легитимного трафика.

Почему NFS v3/v4 рекомендуется использовать строго поверх TCP?

NFS генерирует блоки данных размером 32–64 КБ (rsize/wsize). Поверх UDP один такой блок разбивается на 20–40 фрагментов. Потеря ВСЕГО ОДНОГО фрагмента приводит к необходимости полной повторной передачи всех 64 КБ.

Полезные материалы
Рекомендуем