Ядро отслеживает состояние сетевых соединений (conntrack) — на этом держатся
stateful-правила файрвола (ESTABLISHED,RELATED) и NAT.
conntrack (пакет conntrack-tools) показывает и чистит эту таблицу.
bash
sudo conntrack -L # текущие отслеживаемые соединения
cat /proc/sys/net/netfilter/nf_conntrack_count # сколько записей сейчас
cat /proc/sys/net/netfilter/nf_conntrack_max # лимит
Ключи
11
Ключ
Значение
-L
список соединений (таблица tracking)
-E
поток событий в реальном времени
-S
статистика по CPU (drops, insert_failed)
-D
удалить записи (по фильтру)
-p / --dport / -s / -d
фильтр: протокол / порт / источник / назначение
--state
фильтр по состоянию (ESTABLISHED, TIME_WAIT…)
Ключ
Что делает
Пример
-L--dump
Список отслеживаемых соединений (таблица conntrack).
sudo conntrack -L
-E--event
Поток событий conntrack в реальном времени.
sudo conntrack -E
-S--stat
Статистика по CPU — отброшенные и неудавшиеся вставки записей.
sudo conntrack -S
-C--count
Счётчик записей в таблице (то же, что nf_conntrack_count).
sudo conntrack -C
-D--delete
Удалить записи, подходящие под фильтр (сбрасывает эти соединения). опасно
sudo conntrack -D -s 10.0.0.5
-p--prototcp|udp|icmp
Фильтр по протоколу.
sudo conntrack -L -p tcp
--dportport
Фильтр по порту назначения.
sudo conntrack -L -p tcp --dport 443
-s--srcaddress
Фильтр по адресу источника.
sudo conntrack -L -s 10.0.0.5
--statestate
Фильтр по состоянию соединения (ESTABLISHED, TIME_WAIT…).
sudo conntrack -L --state ESTABLISHED
-F--flush
Очистить всю таблицу соединений сразу. опасно
sudo conntrack -F
-d--dstaddress
Фильтр по адресу назначения.
sudo conntrack -L -d 10.0.0.5
Ничего не найдено. Попробуй запрос короче.
Рецепты
1
Команды
bash
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 # очистить ВСЮ таблицу (осторожно)
Неполадки
5
СимптомПричина и решение
nf_conntrack: table full, dropping packet
Таблица переполнена (нагруженный шлюз/NAT) — новые соединения дропаются. Подними
лимит (sysctl) и проверь, не висят ли тысячи полу-открытых (DoS/утечка клиента):
bash
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.