Ошибка nf_conntrack: table full, dropping packet

Смотрим dmesg, чисто в профилактических целях, обнаруживаем массу сообщений вида: nf_conntrack: table full, dropping packet.

Из названия видно кто является источником данного косяка — фаервол iptables , если конкретно показывать пальцем, то nf_conntrack. Один из компонентов 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

Видимо маловато, делаем:

debian: /# echo "net.netfilter.nf_conntrack_max=1048576" >> /etc/sysctl.conf  # Увеличили размер таблиц в 8 раз
debian: /# sysctl -p  # Загружаем настройки ядра

Проверяем:

debian:/# sysctl -a | grep conntrack_max
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576

Проблема с iptables должна исчезнуть.

Комментарии

Thanks! It works!

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

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
                    .o8                 .o8              .o8            
"888 "888 "888
oooo ooo .oooo888 oooo ooo 888oooo. .oooo888 .oooo.o
`88b..8P' d88' `888 `88. .8' d88' `88b d88' `888 d88( "8
Y888' 888 888 `88..8' 888 888 888 888 `"Y88b.
.o8"'88b 888 888 `888' 888 888 888 888 o. )88b
o88' 888o `Y8bod88P" .8' `Y8bod8P' `Y8bod88P" 8""888P'
.o..P'
`Y8P'
Введите код, изображенный в стиле ASCII-арт.