Как устранить ошибку "kernel: nf_conntrack: таблица заполнена, отбрасывание пакета"

Недавно у нас была проблема с одним из наших серверов (Debian Squeeze), который перестал отвечать на запросы при большой нагрузке. Глядя на логи ядра, я думаю, что это причина:

kernel: nf_conntrack: table full, dropping packet

Насколько я понимаю, это модуль conntrack, который выполняет отслеживание соединения с отслеживанием состояния, сообщая, что таблица, используемая для хранения сведений о соединении, заполнена.

Из проведенного мною исследования, кажется, есть два способа смягчить это:

  1. Увеличьте размер таблицы.

  2. Удалить модуль из системы в целом.

Тем не менее, ни /proc/sys/net/ipv4/ip_conntrack_maxни /proc/sys/net/ipv4/netfilter/ip_conntrack_max существуют на этой машине (нет ipv4 каталог под net).

Если я сделаю lsmod Я не получаю результатов.

Итак, я немного растерялся - может, кто-нибудь прояснит ситуацию для меня?

  • Установлен ли conntrack? Если да, где настройки? И почему он не отображается в lsmod?
  • Если conntrack не установлен, что выдаёт в таблице полные сообщения?

Спасибо

2 ответа

Это из опыта - я не проводил исследования, чтобы проверить эту информацию: я видел несколько систем, где та же самая ошибка присутствует в системных журналах, и нет ничего в /proc/sys/net/ipv4/ip_conn* или / proc / SYS / нетто / ipv4 / Netfilter. Я также хотел бы знать, почему - но это не останется очень важным, когда вы найдете решение для первоначальных симптомов.;)

Стратегия смягчения была двоякой: увеличение лимита с помощью sysctl (наивный краткосрочный подход) и выяснение того, почему количество отслеживаемых соединений так велико.

Если пределы по умолчанию превышаются, и рассматриваемый сервер не предназначен для обработки большого количества соединений, то вполне естественно, что ограничения не должны быть достигнуты вообще. Хорошим примером службы, которая будет предъявлять высокие требования к отслеживанию соединений, является "общедоступный" DNS-сервер, обслуживающий более сотни тысяч клиентов.

Меры по снижению риска заключаются в том, чтобы просмотреть журналы, убедиться, что меры по борьбе с DOS/DDOS приняты (например, см. Fail2ban), и убедиться, что у вас установлена ​​разумная конфигурация брандмауэра.

Что касается lsmod, я не сталкивался с ситуацией, когда он кажется активным, но модуль не указан. Я не уверен, как эта ситуация возникает.

Настройки для conntrack часто находятся в /proc/sys/net/netfilter/nf_conntrack_max.

Другие вопросы по тегам