Назад | Перейти на главную страницу

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

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

/proc/sys/net/netfilter/nf_conntrack_max
/proc/sys/net/nf_conntrack_max

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

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

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

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

но если ты убежишь

iptables -t nat -L

или

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

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

Решение:

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

nf_conntrack

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

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

net.netfilter.nf_conntrack_max = 65535

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

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

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