Вступ
Команди
Закріплення та зміцнення ядра
Висновок
Вступ
Sysctl
дозволяє користувачеві точно налаштувати ядро без необхідності перебудовувати ядро. Він також негайно застосує зміни, тому сервер не потрібно буде перезавантажувати, щоб зміни вступили в силу. У цьому посібнику наведено короткий вступ sysctl
і демонструється, як його використовувати для налаштування окремих частин ядра Linux.
Команди
Щоб почати використовувати sysctl, перегляньте параметри та приклади, наведені нижче.
Параметри
-a : відображаються всі значення, доступні на даний момент в конфігурації sysctl.
-A : Це відобразить усі значення, доступні на даний момент у конфігурації sysctl у вигляді таблиці.
-e : цей параметр ігноруватиме помилки щодо невідомих ключів.
-p : використовується для завантаження певної конфігурації sysctl, за замовчуванням вона буде використовуватися/etc/sysctl.conf
-n : ця опція вимкне відображення назв ключів під час друку значень.
-w : цей параметр призначений для зміни (або додавання) значень до sysctl на вимогу.
Приклади
$ sysctl -a
$ sysctl -n fs.file-max
$ sysctl -w fs.file-max=2097152
$ sysctl -p
Отже, спочатку ми перевіряємо значення за замовчуванням. Якщо ваш /etc/sysctl.conf
порожній, він покаже всі ключі та значення за замовчуванням. По-друге, ми перевіряємо, яке значення fs.file-max
, а потім встановлюємо нове значення на 2097152
. Нарешті, ми завантажуємо новий /etc/sysctl.conf
файл конфігурації.
Якщо вам потрібна додаткова допомога, ви можете скористатися man sysctl
.
Закріплення та зміцнення ядра
Щоб зробити зміни постійними, нам доведеться додати ці значення до файлу конфігурації. Використовуйте файл конфігурації, який CentOS надає за замовчуванням, /etc/sysctl.conf
.
Відкрийте файл за допомогою улюбленого редактора.
За замовчуванням ви повинні побачити щось подібне.
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
Спочатку покращимо управління системною пам’яттю.
Ми збираємося мінімізувати кількість підкачки, яку нам потрібно зробити, збільшити розмір дескрипторів файлів і кешу inode, а також обмежити дамп ядра.
# Minimizing the amount of swapping
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
# Increases the size of file handles and inode cache & restricts core dumps
fs.file-max = 2097152
fs.suid_dumpable = 0
Далі давайте налаштуємо оптимізовану продуктивність мережі.
Ми збираємося змінити кількість вхідних з’єднань і відставання вхідних з’єднань, збільшити максимальну кількість буферів пам’яті та збільшити стандартні та максимальні буфери надсилання/отримання.
# Change the amount of incoming connections and incoming connections backlog
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
# Increase the maximum amount of memory buffers
net.core.optmem_max = 25165824
# Increase the default and maximum send/receive buffers
net.core.rmem_default = 31457280
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
net.core.wmem_max = 67108864
Нарешті, ми збираємося покращити загальну безпеку мережі.
Ми збираємося ввімкнути захист файлів cookie TCP SYN, захист від спуфінгу IP, ігнорувати запити ICMP, ігнорувати запити на широкомовну передачу та реєструвати підроблені пакети, вихідні маршрутизовані пакети та пакети перенаправлення. Разом з цим ми збираємося вимкнути маршрутизацію джерела IP і прийняття перенаправлення ICMP.
# Enable TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter = 1
# Enable ignoring to ICMP requests and broadcasts request
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable logging of spoofed packets, source routed packets and redirect packets
net.ipv4.conf.all.log_martians = 1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route = 0
# Disable ICMP redirect acceptance
net.ipv4.conf.all.accept_redirects = 0
Збережіть і закрийте файл, а потім завантажте файл за допомогою sysctl -p
команди.
Висновок
Зрештою, ваш файл повинен виглядати подібно до цього.
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# Minimizing the amount of swapping
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
# Increases the size of file handles and inode cache & restricts core dumps
fs.file-max = 2097152
fs.suid_dumpable = 0
# Change the amount of incoming connections and incoming connections backlog
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
# Increase the maximum amount of memory buffers
net.core.optmem_max = 25165824
# Increase the default and maximum send/receive buffers
net.core.rmem_default = 31457280
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
net.core.wmem_max = 67108864
# Enable TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter = 1
# Enable ignoring to ICMP requests and broadcasts request
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable logging of spoofed packets, source routed packets and redirect packets
net.ipv4.conf.all.log_martians = 1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route = 0
# Disable ICMP redirect acceptance
net.ipv4.conf.all.accept_redirects = 0