Вики / Сеть
conntrack (отслеживание соединений)
Таблица соединений ядра — что видит 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 # поднять лимит
См. также
- ss (сокеты и порты) — Сеть
- Файрвол (nftables / ufw) — Сеть
- iptables (legacy-файрвол) — Сеть