linux-labs

Вики / Сеть

conntrack (отслеживание соединений)

Команда Linux · conntrack-tools СетьФайрволТраблшутинг

Таблица соединений ядра — что видит NAT/файрвол, переполнение, отладка.

Ядро отслеживает состояние сетевых соединений (conntrack) — на этом держатся stateful-правила файрвола (ESTABLISHED,RELATED) и NAT. conntrack (пакет conntrack-tools) показывает и чистит эту таблицу.

sudo conntrack -L                 # текущие отслеживаемые соединения
cat /proc/sys/net/netfilter/nf_conntrack_count   # сколько записей сейчас
cat /proc/sys/net/netfilter/nf_conntrack_max     # лимит
Ключ Значение
-L список соединений (таблица tracking)
-E поток событий в реальном времени
-S статистика по CPU (drops, insert_failed)
-D удалить записи (по фильтру)
-p / --dport / -s / -d фильтр: протокол / порт / источник / назначение
--state фильтр по состоянию (ESTABLISHED, TIME_WAIT…)
sudo conntrack -L                          # список соединений
sudo conntrack -L -p tcp --dport 443       # фильтр по протоколу/порту
sudo conntrack -L -s 10.0.0.5              # по источнику
sudo conntrack -L --state ESTABLISHED      # только установленные
sudo conntrack -E                          # события в реальном времени (как watch)
sudo conntrack -E -e NEW                   # только новые соединения
sudo conntrack -S                          # статистика: drops / insert_failed по CPU
sudo conntrack -C                          # счётчик записей (= nf_conntrack_count)
sudo conntrack -D -s 10.0.0.5              # удалить записи источника (сбросить его соединения)
sudo conntrack -F                          # очистить ВСЮ таблицу (осторожно)

nf_conntrack: table full, dropping packet

Таблица переполнена (нагруженный шлюз/NAT) — новые соединения дропаются. Подними лимит (sysctl) и проверь, не висят ли тысячи полу-открытых (DoS/утечка клиента):

sudo sysctl -w net.netfilter.nf_conntrack_max=262144   # временно
echo 'net.netfilter.nf_conntrack_max=262144' | sudo tee /etc/sysctl.d/99-conntrack.conf   # постоянно
sudo conntrack -L | awk '{print $4}' | sort | uniq -c | sort -rn | head   # топ источников

NAT/проброс работает «через раз»

conntrack -L — есть ли запись о соединении и в каком состоянии. Асимметричный роутинг ломает conntrack (ответ идёт мимо узла, что трекает).

Соединение «залипло» после смены правил файрвола

Существующие соединения уже в таблице (ESTABLISHED) и проходят мимо новых правил. Сбрось нужные: sudo conntrack -D -s IP (по адресу/порту).

Высокий insert_failed в conntrack -S

Гонки/переполнение при большом числе одновременных коннектов; смотри лимит и таймауты (/proc/sys/net/netfilter/nf_conntrack_tcp_timeout_*).

Где видно текущие соединения без conntrack

Локальные сокеты приложений — ss; именно tracking ядра (для NAT/файрвола) — conntrack -L.

sudo conntrack -L                 # соединения
sudo conntrack -E                 # события в реальном времени
sudo conntrack -S                 # drops / insert_failed
sudo conntrack -D -s IP           # сбросить соединения источника
cat /proc/sys/net/netfilter/nf_conntrack_{count,max}   # загрузка таблицы
sudo sysctl -w net.netfilter.nf_conntrack_max=262144   # поднять лимит