SystemdDoctor
служба не работает сеть ресурсы ядро

nf_conntrack: table full, dropping packet

Ядро отслеживает состояние соединений для преобразования адресов и правил брандмауэра. При заполнении таблицы новые пакеты отбрасываются: службы видят обрывы и таймауты, хотя сами работают нормально.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Таблица мала для нагрузки

    Размер таблицы рассчитан на скромный трафик. Прокси, балансировщик или сервер с контейнерами исчерпывают её быстро.

  2. Записи держатся слишком долго

    Таймауты для состояний соединений по умолчанию велики. При коротких соединениях таблица заполняется устаревшими записями.

  3. Отслеживание соединений включено там, где не нужно

    Для машины без преобразования адресов и без правил состояния отслеживание можно отключить для части трафика — это снимает предел полностью.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Текущее число записей и предел.

cat /proc/sys/net/netfilter/nf_conntrack_count /proc/sys/net/netfilter/nf_conntrack_max

Сообщения ядра о заполнении таблицы.

journalctl -k -b --no-pager | grep -i conntrack | tail -5

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Таблица мала для нагрузки
Почему происходит
Размер таблицы рассчитан на скромный трафик. Прокси, балансировщик или сервер с контейнерами исчерпывают её быстро.
Как проверить
Посмотрите размер таблицы и текущее использование.
sysctl net.netfilter.nf_conntrack_max
cat /proc/sys/net/netfilter/nf_conntrack_count
Как исправить
Поднимите размер таблицы и, при необходимости, размер хеша. Память под таблицу считается заранее: каждая запись занимает около трёхсот байт.
echo "net.netfilter.nf_conntrack_max = 262144" | sudo tee /etc/sysctl.d/99-conntrack.conf && sudo sysctl --system
2. Записи держатся слишком долго
Почему происходит
Таймауты для состояний соединений по умолчанию велики. При коротких соединениях таблица заполняется устаревшими записями.
Как проверить
Посмотрите таймауты.
sysctl -a 2>/dev/null | grep nf_conntrack_tcp_timeout | head
Как исправить
Сократите таймауты для завершённых соединений. Менять их стоит осознанно: слишком малые значения ломают долгие соединения.
3. Отслеживание соединений включено там, где не нужно
Почему происходит
Для машины без преобразования адресов и без правил состояния отслеживание можно отключить для части трафика — это снимает предел полностью.
Как проверить
Посмотрите, нужны ли правила состояния.
sudo nft list ruleset 2>/dev/null | grep -ci "ct state"
Как исправить
Исключите из отслеживания трафик, которому оно не нужно, правилом notrack. Делать это стоит только понимая последствия для правил брандмауэра.

Пример вывода

Таблица отслеживания соединений заполнена. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

kernel: nf_conntrack: nf_conntrack: table full, dropping packet
nginx[1120]: [error] upstream timed out (110: Connection timed out) while connecting to upstream

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация ядра: nf_conntrack документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено нагрузкой на прокси при заниженном размере таблицы.
    собственная проверка, systemd 255
    сверено 15 сентября 2026