Сохранение nf_conntrack_max через перезагрузки

В /proc У меня есть две записи для nf_conntrack_max:

/ Труды / системы / нетто / Netfilter/nf_conntrack_max
/ Труды / системы / нетто / nf_conntrack_max

Кажется, что они указывают на то же значение, что и изменение одного и другого. С обоими из них установлены в /etc/sysctl.conf:

net.netfilter.nf_conntrack_max = 65528
net.ipv4.netfilter.ip_conntrack_max = 65535

Значение остается 32764 после перезагрузки, поэтому изменения не работают. Кто-нибудь сталкивался с этим раньше? Я предполагаю, что эти значения применяются до загрузки соответствующих модулей, но я надеялся, что кто-то уже знает решение.

4 ответа

Решение

Это потому что /proc/sys/net/nf_conntrack_max полагаться на модуль nf_conntrack, но этот модуль не будет загружен по умолчанию при запуске системы.

но если вы бежите

iptables -t nat -L

или же

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

этот модуль загрузится автоматически и установит максимальное число, которое поддерживает ваша система (максимальное число - 65536, если у вас больше 4 Гб, но оно отличается в разных системах.) вы можете установить большее значение (например, 6553600) в /etc/sysctl.conf).

Решение:

добавить одну строку в конце файла /etc/modules:

nf_conntrack

эти модули будут загружены при запуске системы до sysctl казнены.

Потому что это должно быть:

net.netfilter.nf_conntrack_max = 65535

И теперь вы можете установить это без перезапуска: sysctl -p /etc/sysctl.conf

Я не использую Ubuntu, но, думая об этом в своем настроении CentOS, я выдвинул ту же гипотезу, что и вы, - sysctl применяются слишком рано. Некоторые поиски показали, что это ошибка с 2006 года.

Похоже, что размещение еще одной символической ссылки с приоритетом> S40 для повторного запуска сценария procps, вероятно, сделает то, что вам нужно. Согласно сводке об ошибках, похоже, что некоторая реорганизация методологии Ubuntu sysctl в порядке (и, что забавно, ошибка была назначена кому-то, кто не знал, что он был назначен и не может помочь с этим).

Ответ Итана Сюй является одним из решений, но если вы не хотите загружать nf_conntrack при загрузке, вы можете установитьnf_conntrack_maxпозже, после загрузки модуля, как описано в sysctl и уже предложено в выпуске systemd :

      # /etc/udev/rules.d/24-nf_conntrack_max.rules

ACTION=="add", SUBSYSTEM=="module", KERNEL=="nf_conntrack", \
  RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/net/netfilter/nf_conntrack_max"
      # /etc/sysctl.d/24-nf_conntrack_max.conf
net.netfilter.nf_conntrack_max=6553600
Другие вопросы по тегам