Сохранение 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