Рейтинг:4

Статистика /proc/net/stat/nf_conntrack отсутствует на сервере Linux

флаг aq

У меня почему-то нет такого файла на моем сервере..

root@serv:~# uname -a
Linux serv 5.4.0-87-generic #98~18.04.1-Ubuntu SMP Ср, 22 сентября, 10:45:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
root@serv:~# cat /proc/net/stat/nf_conntrack
cat: /proc/net/stat/nf_conntrack: Нет такого файла или каталога

Но мой conntrack определенно включен:

root@serv:~# lsmod | grep conntr
xt_conntrack 16384 1
nf_conntrack_netlink 45056 0
nf_conntrack 139264 2 xt_conntrack,nf_conntrack_netlink
nf_defrag_ipv6 24576 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 1 nf_conntrack
nfnetlink 16384 1 nf_conntrack_netlink
x_tables 45056 3 xt_conntrack, iptable_filter, ip_tables

И коннтрек -L работает отлично.
Но lnstat -f ip_conntrack также показывает пустой вывод.
Какова причина? Должен ли я вставить какой-то модуль ядра, чтобы этот файл появился в procfs?

Рейтинг:2
флаг cl
A.B

Соответствующая требуемая конфигурация должна иметь коннтрек доступно в /прок является CONFIG_NF_CONNTRACK_PROCFS:

CONFIG_NF_CONNTRACK_PROCFS: Предоставить список CT в procfs (УСТАРЕЛО)

[...]

Текст справки

Этот параметр позволяет отображать список известных записей conntrack. показан в procfs в net/netfilter/nf_conntrack. Это считается устарел в пользу использования инструмента conntrack(8), который использует Netlink.

Ядро OP, по-видимому, было построено с функциями, описанными в этом пакете: linux-buildinfo-5.4.0-87-универсальный.

Увы содержание /usr/lib/linux/5.4.0-87-общий/config из пакета выше сообщает:

# CONFIG_NF_CONNTRACK_PROCFS не установлен

Итак, два /процесс/ записи обычно предоставлено коннтрек: /proc/net/nf_conntrack и /proc/net/stat/nf_conntrack не будет.

Как говорится в документации, это устарело коннтрек инструмент, который использует сеть(7) вместо этого API ядра.

Большая часть содержания /proc/net/stat/nf_conntrack можно заменить на:

коннтрек --count

который дает количество записей (это первый столбец данных, присутствующих в /proc/net/stat/nf_conntrack) и:

коннтрек --stats
conntrack --stats ожидать

который дает содержимое большинства других столбцов, доступных в /proc/net/stat/nf_conntrack, иногда для (главного) коннтрек стол, иногда для ожидать таблица, по одной на ЦП. Некоторые статистические данные, по-видимому, недоступны таким образом (или могут быть скрыты в другом месте, или могут быть устаревшими...).

Если вам действительно нужно /proc/net/stat/nf_conntrack вам придется переключиться на другое ядро ​​с этой доступной функцией или пересобрать ядро ​​с другими параметрами. Эта опция ядра, похоже, больше не выбирается Ubuntu, в том числе в более новых версиях ядра.


Для справки, вот пример из другого ядра, имеющего эту опцию и работающего с 4 процессорами:

# кошка /proc/net/stat/nf_conntrack | столбец -т
обнаружены коллизии записей новые недействительные игнорировать удалить delete_list вставить insert_failed удалить Early_drop icmp_error expect_new expect_create expect_delete search_restart
0000000A 00000092 00000000 00000000 00000276 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000016 0000000A 000016 00002463
0000000A 00000000 00000000 00000000 00000009 00000000 00000000 00000000 00000000 00000001 00000001 00000000 00000000 00000000 00000004 00000000 000000000000000000 00000000 00000004 00000000 0000000000000000 00000000 0000004 00000000 00000000
0000000A 00000000 00000000 00000000 00000008 00000000 00000000 00000000 00000000 00000007 00000007 00000000 00000000 00000000 00000004 00000000 00000100
0000000A 00000000 00000000 00000000 00000048 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000004 00000000 00000325
# коннтрек -C
10
# коннтрек -S
процессор = 0 найдено = 0 недействительно = 630 вставка = 0 insert_failed = 0 падение = 0 Early_drop = 0 ошибка = 0 search_restart = 9315 
cpu=1 найдено=0 недействительно=9 вставка=0 insert_failed=1 drop=1 Early_drop=0 error=0 search_restart=235 
процессор = 2 найдено = 0 недействительно = 8 вставка = 0 insert_failed = 7 падение = 7 Early_drop = 0 ошибка = 0 search_restart = 256 
процессор = 3 найдено = 0 недействительно = 72 вставка = 0 insert_failed = 0 падение = 0 Early_drop = 0 ошибка = 0 search_restart = 805 
# conntrack -S ожидать
процессор = 0 expect_new = 22 expect_create = 10 expect_delete = 22 
процессор = 1 ожидаемое_новое = 0 ожидаемое_создание = 4 ожидаемое_удаление = 0 
процессор = 2 ожидаемое_новое = 0 ожидаемое_создание = 4 ожидаемое_удаление = 0 
процессор = 3 ожидаемое_новое = 0 ожидаемое_создание = 4 ожидаемое_удаление = 0 
# 
narotello avatar
флаг aq
Спасибо, но где я могу найти "новую" статистику - 4-й столбец "/proc/net/stat/nf_conntrack"? Я думаю, что «новый» — это важная метрика, которую можно использовать для расчета метрики CPS (количество подключений в секунду).
narotello avatar
флаг aq
Кстати, что это значит, что некоторые показатели относятся к процессору? Кажется, что таблица сеансов должна быть общей, т.е. разделяемой между ядрами процессора.
A.B avatar
флаг cl
A.B
Я уже ответил на ваш вопрос, объяснив, почему файл отсутствует и что можно сделать, чтобы вернуть его (сменить ядро) и выйти за его пределы. У меня нет готовых ответов на эти комментарии. За исключением того, что трафик распределяется между процессорами, то же самое происходит и со статистикой.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.