Цель урока: Научиться управлять параметрами ядра Linux. Мы узнаем, как изменить поведение сети, памяти и безопасности "на лету" без перезагрузки, и как сохранить эти настройки навсегда.

Часть 1: Теория. Где живут настройки?

В Linux есть специальная виртуальная файловая система /proc/sys/.
Это не файлы на диске. Это прямой интерфейс к оперативной памяти ядра.

Давайте заглянем туда:

ls /proc/sys/

Вы увидите папки net (сеть), vm (виртуальная память), kernel (ядро) и другие.

Если прочитать файл оттуда, вы увидите текущую настройку.
Например, узнаем, разрешен ли "проброс" трафика (превращение сервера в роутер):

cat /proc/sys/net/ipv4/ip_forward
  • 0 - выключено.

  • 1 - включено.

Утилита sysctl - это удобный способ читать и менять эти значения, не лазая по папкам.

Посмотреть ВСЕ доступные настройки (их тысячи):

sysctl -a | more

(Нажимайте Пробел для прокрутки, q для выхода).

Часть 2: Практика. Меняем настройки "на лету"

Представим задачу: вы хотите, чтобы ваш сервер перестал отвечать на ping (стать "невидимым" для сканеров сети).

Шаг 1: Проверка
С вашего домашнего компьютера (или второго окна терминала) запустите пинг сервера:
ping ВАШ_IP
Он должен идти.

Шаг 2: Изменение настройки
Параметр, который за это отвечает, называется net.ipv4.icmp_echo_ignore_all.

Включим игнорирование пингов (поставим 1):

sysctl -w net.ipv4.icmp_echo_ignore_all=1

(Флаг -w означает write - записать).

Шаг 3: Результат
Пинг мгновенно прекратится. Сервер работает, сайты открываются, SSH работает, но на пинги он "молчит".

Важно: Изменения через sysctl -w действуют только до перезагрузки. Если вы перезагрузите сервер, настройки вернутся к стандартным.

Часть 3: Делаем настройки вечными (/etc/sysctl.conf)

Чтобы настройки сохранились после перезагрузки, их нужно записать в файл /etc/sysctl.conf.
При загрузке Linux читает этот файл и применяет всё, что там написано.

Давайте сделаем настройку "анти-пинг" постоянной (или наоборот, уберем её, если она вам не нужна).

  1. Открываем файл:

    nano /etc/sysctl.conf
  2. Листаем в самый конец и добавляем новую строку:

    # Отключить ответ на PING (для скрытности)
    net.ipv4.icmp_echo_ignore_all = 0

    (Я поставил 0, чтобы вернуть пинг обратно, так как для диагностики он полезен. Если хотите скрыть сервер - ставьте 1).

  3. Сохраняем (Ctrl+OEnter) и выходим (Ctrl+X).

  4. Применяем изменения без перезагрузки:
    Чтобы Linux перечитал файл прямо сейчас, используйте команду:

    sysctl -p

    Вы увидите вывод параметров, которые применились.

Часть 4: "Золотой стандарт" настроек для сервера

Что реально полезно прописать в sysctl.conf для боевого сервера?
Вот 3 параметра, которые рекомендуют опытные администраторы.

Откройте /etc/sysctl.conf и добавьте эти строки в конец:

1. Автоматическая перезагрузка при панике

Если ядро "сойдет с ума" (Kernel Panic) - например, из-за сбоя драйвера, - сервер обычно просто зависает и висит вечно, пока вы его не перезагрузите вручную через панель хостинга.
Эта настройка заставит его перезагрузиться самостоятельно через 10 секунд.

# Перезагрузка через 10 секунд после Kernel Panic
kernel.panic = 10

2. Тюнинг использования SWAP (из Урока 66)

Мы уже говорили об этом. Не даем серверу использовать медленный диск, пока есть память.

# Использовать SWAP только в крайнем случае
vm.swappiness = 10

3. Защита от SYN-Flood атак

Простая, но эффективная защита от DoS-атак. Если вас атакуют кучей ложных запросов на соединение, ядро начнет использовать механизм "cookies", чтобы не зависнуть.

# Включить защиту от SYN-flood
net.ipv4.tcp_syncookies = 1

Сохраните файл и примените:

sysctl -p

Часть 5: Увеличение лимитов (Ошибки "Too many open files")

Иногда Nginx или база данных падают с ошибкой Too many open files.
В Linux есть ограничение: одна программа не может открыть больше 1024 файлов одновременно. Для нагруженного сервера это очень мало (каждое соединение с клиентом - это тоже файл!).

Эти лимиты настраиваются в другом месте: /etc/security/limits.conf.

  1. Проверим текущий лимит:

    ulimit -n

    Скорее всего, будет 1024.

  2. Откроем конфиг:

    nano /etc/security/limits.conf
  3. Добавим перед концом файла строки:

    # * означает "для всех пользователей"
    # soft - предупреждение, hard - жесткий потолок
    * soft nofile 65535
    * hard nofile 65535
    root soft nofile 65535
    root hard nofile 65535

Важно: Эти изменения применятся только после следующего входа в систему.
Выйдите из SSH (logout или exit) и зайдите снова.
Проверьте ulimit -n. Теперь должно быть 65535.

Итоги урока

Теперь вы знаете, как тюнинговать "двигатель" вашего сервера.

  1. /proc/sys/ - это панель управления ядром в реальном времени.

  2. sysctl -w параметр=значение - для временных тестов (до перезагрузки).

  3. /etc/sysctl.conf - для вечных настроек.

  4. sysctl -p - команда, чтобы применить настройки из файла.

  5. kernel.panic = 10 - маст-хэв для любого удаленного сервера, чтобы он не зависал намертво при сбоях.

В Уроке 70 мы займемся расследованиями. Мы научимся профессионально читать логи. Не просто открывать файл, а искать события по времени, фильтровать ошибки и использовать мощь journalctl для поиска причин падений.

Перейти к просмотру - УРОК №70.

подарок Промо-код: PROMO15 - скидка 15%! огонь

Введите при оформлении первого заказа на сайте: Hosting-VDS.com

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)