Настройка параметров ядра

Последнее обновление: 21.03.2024

Одной из замечательнных особенностей Linux является то, что мы можем настраивать параметры ядра. Для этого можено записать новые параметры в определенные конфигурационные файлы в каталоге /proc/sys. Этот каталог содержит несколько настроек ядра, а их перезапись немедленно изменит настройку ядра. Однако никогда не пытайтесь изменить настройки в /proc/sys, не зная, что вы делаете, потому что вы можете привести систему в нерабочее состояние и серьезно испортить ее.

Итак, чтобы изменить параметры ядра, необходимо внести новое значение в файл конфигурации из каталога /proc/sys с помощью команды echo. Внутри каталога /proc/sys вся функциональность сгруппирована по папкам:

  • debug: содержит параметры, относящиеся к отладке ядра.

  • dev: содержит параметры, относящиеся к устройствам и их работе.

  • fs: содержит параметры файловой системы.

  • kernel: содержит параметры, связанные с ядром.

  • net: содержит настройки, связанные с сетью.

  • user: содержит настройки, связанные с пользователем.

  • vm: содержит настройки, которые относятся к управлению памятью.

Например, файл конфигурации /proc/sys/net/ipv4/ip_forward указывает, может ли компьютер маршрутизировать пакеты между двумя сетевыми картами. Обычно это не требуется, но вы можете настроить это, например, если хотите использовать свой компьютер в качестве точки беспроводного доступа.

Если мы посмотрим на настройки по умолчанию в этом файле, например, используя команду cat /proc/sys/net/ipv4/ip_forward, то увидим значение 0, что означает, что маршрутизация в настоящее время отключена.

eugene@Eugene:~$ cat /proc/sys/net/ipv4/ip_forward
0

Чтобы включить этот параметр, в этот файле конфигурации необходимо внести значение 1:

eugene@Eugene:~$ echo 1 > ip_forward
eugene@Eugene:~$ cat /proc/sys/net/ipv4/ip_forward
1

Однако подобный метод имеет недостаток - изменения не сохраняются после перезагрузки компьютера, поэтому после перезагрузки придется применить все эти настройки заново. Но существует обходной путь в виде пакета sysctl. Если этот пакет установлен, то он запускается как служба при загрузке системы. При загрузке он считывает свой файл конфигурации /etc/sysctl.conf. Этот файл содержит список всех параметров, которые необходимо применить к каталогу /proc. Посмотрим на его содержание:

eugene@Eugene:~$ cat /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

###################################################################
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
# Magic system request Key
# 0=disable, 1=enable all, >1 bitmask of sysrq functions
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
# for what other values do
#kernel.sysrq=438

eugene@Eugene:~$ 

В /etc/sysctl.conf файлы конфигурации из /proc/sys упоминаются с использованием относительных путей, причем вместо слешей в путях применяется точка. Например, настройка

#net.ipv4.ip_forward=1

применяется к файлу "/proc/sys/net/ipv4/ip_forward". Символ решетки указывает, что строка закомментированна. Мы можем раскомментировать эту строку, и таким образом данная настройка будет применяться при запуске системы.

Некоторые распространенные параметры:

  • /proc/sys/net/ipv4/ip_forward: определяет, должен ли ваш компьютер маршрутизировать пакеты между сетевыми картами. Применяется, если компьютер используется в качестве маршрутизатора в сети.

  • /proc/sys/dev/scsi/logging_level: определяет уровень ведения журнала, который должны использовать устройства SCSI. Более высокий уровень журнала означает более интенсивное ведение журнала. Используйте здесь только значения, которые яыляются степенью двойки: 1, 2, 4, 8, 16, 32, 64, 128, 256... Применяется, если надо больше (или меньше) логгировать события, связанные с SCSI.

  • /proc/sys/fs/file-max: определяет максимальное количество файлов, которые можно открыть одновременно.

  • /proc/sys/kernel/hostname: содержит имя компьютера, известное ядру.

  • /proc/sys/kernel/osrelease: содержит текущую версию ядра. Этот файл считывается при отображении текущей версии в командной строке с помощью команды uname -r.

  • /proc/sys/net/core/rmem_max: устанавливает максимальный объем памяти, который ядро должно зарезервировать для буферизации входящих сетевых пакетов.

  • /proc/sys/vm/laptop_mode: сообщает ядру, должно ли оно работать в режиме ноутбука. При включении со значением 1 будут использоваться более энергоэффективные настройки.

  • /proc/sys/vm/swappiness: сообщает ядру, как быстро оно должно начать свопить (грубо говоря сохранять данные из оперативной памяти на диск при нехватки памяти). Более высокое значение здесь указывает на более высокую готовность вашего ядра начать своп.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850