nf_conntrack: table full, dropping packet

Смотрим dmesg, чисто в профилактических целях, обнаруживаем массу сообщений вида: nf_conntrack: table full, dropping packet. Из названия видно кто является источником данного косяка — фаервол iptables , если конкретно показывать пальцем, то nf_conntrack. Один из модулей netfilter, отслеживающий состояния соединений и классифицирующий пакеты, этим соединениям, принадлежащие. Например данный модуль netfilter определяет такие состояния как:
  • NEW — syn пакеты, устанавливающие соединение;
  • ESTABLISHED — пакеты, принадлежащие уже установленным соединениям;
  • RELATED — пакеты на создание нового соединения, на основании уже существующего ( пассивный FTP );
  • INVALID — означает что принадлежность пакета к какому-либо типу соединения не установлена;
Например, пара правил штатного фаервола в Linuxiptables, использующие данный модуль:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp -m tcp  --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 20 --connlimit-mask 32 -j DROP
означают — пропускать уже установленные сетевые соединения и соединения инициированные уже установленными соединениями, дропать все что не подпадает под эти категории пакетов и пропускать не более 20 пакетов с флагами FIN,SYN,RST,ACK SYN в момент времени с одного IP адреса. Все свои данные nf_conntrack хранит в таблицах, а вышеупомянутое сообщение говорит о том что эти таблицы переполнены. Смотрим что у нас там по дэфолту: debian:/# sysctl -a | grep conntrack_max net.netfilter.nf_conntrack_max = 65536 net.nf_conntrack_max = 65536 Видимо маловато, немного поправим настройки ядра linux:
debian: /# echo "net.netfilter.nf_conntrack_max=1048576" >> /etc/sysctl.conf  # Увеличили размер таблиц в 8 раз
debian: /# sysctl -p  # Загружаем настройки ядра linux
Проверяем:
debian:/# sysctl -a | grep conntrack_max
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576
Проблема с iptables должна исчезнуть.

Комментарии

Thanks! It works!

Как зделать чтобы echo "net.netfilter.nf_conntrack_max=1048576" >> /etc/sysctl.conf работало после перезагрузки ?

если прописано в sysctl, оно и будет после перезагрузки работать

не работало , но запись в файле была, я зделал так : в файл /etc/rc.local , засунул sysctl -p .

Вот ни разу про автора ничего хорошего не скажу, а именно:
1. принудительный сан-серифный шрифт - я не смог прочитать даже текст - глаза режет.
2. выбор автором шрифта - уже многое говорит о нем

ну, короче, этому человеку я даже гвоздь забить не доверил бы.
человек из серии - "тяп-ляп, и так сойдет!" (халтурщик)

автор, поработай над комментариями, все плохо.

в /etc/modules надо его дописать {nf_conntrack} дабы принудительно подгружать модуль при загрузке ядра тогда параметры из sysctl.conf считаются а иначе будут дефолтные

спасибо, супер!
спасибо!

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

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
       .o.        ooooooo  ooooo  oooooooooooo  oooooo   oooooo     oooo                             
.888. `8888 d8' `888' `8 `888. `888. .8'
.8"888. Y888..8P 888 `888. .8888. .8' oooo d8b oooo oooo ooo
.8' `888. `8888' 888oooo8 `888 .8'`888. .8' `888""8P `88. `88. .8'
.88ooo8888. .8PY888. 888 " `888.8' `888.8' 888 `88..]88..8'
.8' `888. d8' `888b 888 o `888' `888' 888 `888'`888'
o88o o8888o o888o o88888o o888ooooood8 `8' `8' d888b `8' `8'


Введите код, изображенный в стиле ASCII-арт.