sysctl - это утилита и механизм управления параметрами ядра в операционных системах на базе BSD (включая FreeBSD) и Linux. Она позволяет изменять параметры ядра во время работы системы без необходимости перезагрузки.
В Linux sysctl используется для чтения и изменения параметров, связанных с сетью, производительностью, безопасностью и другими аспектами работы ядра. Параметры хранятся в виде файлов в виртуальной файловой системе /proc/sys. В BSD FreeBSD sysctl также используется для управления параметрами ядра, но структура и некоторые параметры могут отличаться от Linux. Параметры ядра в FreeBSD хранятся в дереве параметров ядра и имеют аналогичную функциональность.
Для просмотра всех доступных для чтения переменных:
sysctl -a
Чтобы прочитать определённую переменную, например, kern.maxproc, введите:
sysctl kern.maxproc
kern.maxproc: 1044
Изменение параметра ядра из командной строки:
sudo sysctl -w <parameter>=<value>
После редактирования sysctl.conf применить изменения, без перезагрузки ОС, можно командой
# sysctl -p
Показать максимальное количество файлов, которые могут быть открыты в ОС.
$ sysctl fs.file-max fs.file-max = 202019
Для присвоения значения переменной, используйте выражение вида переменная=значение:
# sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000
Изменяемые с помощью sysctl переменные обычно принимают значения либо строкового, либо целого, либо булевого типа. Переменные булевого типа могут принимать два значения (1 (истина) и 0 (ложь)).
Если вы хотите устанавливать некоторые переменные автоматически при каждой загрузке компьютера, добавьте их в файл /etc/sysctl.conf. За дополнительной информацией обращайтесь к странице справочника sysctl.conf.
net.inet.tcp.msl=7500 -- время ожидания ACK в ответ на SYN-ACK или FIN-ACK net.inet.tcp.blackhole=2 -- все пакеты на закрытый порт отбрасываются без отсылки RST net.inet.udp.blackhole=1 -- отбрасывать пакеты для закрытых UDP портов net.inet.icmp.icmplim=50 -- чтобы не флудили по ICMP kern.ipc.somaxconn=32768 -- увеличение числа одновременно открытых сокетов kern.polling.enable=1 -- небольшой тюнинг kern.polling.user_frac=50 -- поллинга net.inet.icmp.drop_redirect=1 -- редиректить нам не надо net.inet.ip.redirect=0 -- запрещаем ответ на часть "лишнего" icmp эти переменные, начиная с 6.0 уже имеют такие значения, но для успокоения души лучше их выставить принудительно net.inet.icmp.maskrepl=0 net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.icmp.bmcastecho=0 net.inet.ip.random_id=1
# sysctl net.ipv4.tcp_ecn net.ipv4.tcp_ecn = 2
Настройка сети:
Управление памятью:
Программа sysctl и файл sysctl.conf предоставляют мощные инструменты для тюнинга и оптимизации работы ядра Linux. Путем изменения параметров ядра, пользователи могут настроить систему в соответствии с их требованиями, повысить ее производительность и обеспечить безопасность. Распространенные примеры тюнинга ядра Linux включают настройку сети, управление памятью и повышение безопасности. Важно помнить, что изменение параметров ядра может повлиять на работу системы, поэтому перед внесением изменений рекомендуется ознакомиться с их значениями и последствиями.