Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

nf_conntrack: table full, dropping packet — Решение переполнения таблицы соединений

Обновлено: 18.08.2026  ·  Официальная база знаний

Архитектура ошибки и симптомы сбоя

Сообщение «nf_conntrack: table full, dropping packet» генерируется подсистемой отслеживания сетевых соединений ядра Linux (Netfilter Connection Tracking). При прохождении каждого пакета через NAT или фаервол (iptables/nftables) ядро выделяет запись в хеш-таблице conntrack. Когда суммарное число активных сессий достигает лимита, установленного параметром nf_conntrack_max, ядро сбрасывает (дропает) все новые входящие и исходящие пакеты, приводя к полной потере доступности сервера по сети.

Диагностическая таблица параметров сбоя

ПараметрЗначениеИнженерный смысл сбоя
nf_conntrack_maxInteger (Лимит таблицы)Максимальное число одновременно отслеживаемых сессий в ОЗУ.
nf_conntrack_countInteger (Текущее число)Фактическое количество сессий в памяти на данный момент.
Drop ImpactNetwork Blackhole100% потеря новых TCP SYN пакетов и DNS/UDP запросов.

Пошаговое дерево решений и сценарии траблшутинга

Сценарий 1: Проверка текущей заполненности таблицы conntrack

# Просмотр текущего и максимального лимита сессий:
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max

# Анализ ТОП источников сессий (поиск DDoS или сканирования):
sudo conntrack -L 2>/dev/null | awk '{print $4}' | cut -d '=' -f2 | sort | uniq -c | sort -nr | head -n 10

Сценарий 2: Экстренное увеличение размера таблицы conntrack и хэш-бакетов

Увеличьте лимит conntrack пропорционально объему оперативной памяти (1 миллион сессий занимает около 300MB RAM):

# Увеличение лимита conntrack до 1 048 576 соединений:
sudo sysctl -w net.netfilter.nf_conntrack_max=1048576

# Увеличение хеш-таблицы (buckets = max / 4):
echo 262144 | sudo tee /sys/module/nf_conntrack/parameters/hashsize

Сценарий 3: Агрессивное сокращение таймаутов зависших соединений

# Оптимизация таймаутов в /etc/sysctl.d/99-conntrack.conf:
cat <<EOF | sudo tee /etc/sysctl.d/99-conntrack.conf
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 10
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 10
net.netfilter.nf_conntrack_udp_timeout = 10
EOF
sudo sysctl -p /etc/sysctl.d/99-conntrack.conf
Сервер теряет пакеты под сетевой нагрузкой или DDoS?
ITSTM проводит аудит сетевого стека Linux, тюнинг Netfilter/eBPF (XDP) и защиту высоконагруженных инфраструктур от атак любого типа.
Практический опыт инженера: На пограничных маршрутизаторах и балансировщиках (HAProxy, Nginx) всегда снижайте параметр nf_conntrack_tcp_timeout_established со стандартных 432000 секунд (5 дней!) до 600–1200 секунд.

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

Как отключить conntrack для определенных высоконагруженных сервисов?

Используйте правило raw таблицы iptables: iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK (или target NOTRACK в nftables). Пакеты для этого порта перестанут отслеживаться и не будут забивать таблицу.

Сколько оперативной памяти потребляет таблица conntrack?

Каждая запись conntrack занимает около 320 байт в невыгружаемой памяти ядра (Slab Cache). Таблица на 1 000 000 соединений потребует около 320 МБ ОЗУ.

Почему значение hashsize нужно менять отдельно от nf_conntrack_max?

nf_conntrack_max задает максимальное число записей, а hashsize — количество корзин хеш-таблицы. Если не увеличить hashsize, длина цепочек коллизий возрастет, что приведет к росту задержек CPU при поиске пакетов.

Как установить утилиту conntrack для просмотра соединений?

Установите пакет conntrack-tools: sudo apt-get install conntrack (Debian/Ubuntu) или sudo dnf install conntrack-tools (RHEL/CentOS).