ansible-bootstrap-rocky9/roles/rocky9/tasks/sysctl_tuning.yml
2026-05-11 15:54:07 +03:00

416 lines
19 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# Remove kernel.panic entry from /etc/sysctl.conf
- ansible.posix.sysctl:
name: kernel.panic
state: absent
sysctl_file: /etc/sysctl.conf
# Отключаем отслеживание ядром нажатие специальных сочетаний клавиш
- ansible.posix.sysctl:
name: kernel.sysrq
value: 0
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Добавление к файлу дампа ядра PID процесса
- ansible.posix.sysctl:
name: kernel.core_uses_pid
value: 1
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Здесь указывается максимальное количество байт в одном сообщении при передачи их между процессами
- ansible.posix.sysctl:
name: kernel.msgmnb
value: 65536
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Здесь определяется максимальный размер сообщения, которое может быть отправлено от одного процесса другому.
- ansible.posix.sysctl:
name: kernel.msgmax
value: 65536
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Максимальный размер (в байтах) на сегменте shared memory.
- ansible.posix.sysctl:
name: kernel.shmmax
value: 68719476736
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Общее количество разделяемой памяти (в страницах), какое все процессы на сервере могут использовать.
- ansible.posix.sysctl:
name: kernel.shmall
value: 4294967296
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Лимит одновременно открытых файлов в системе
- ansible.posix.sysctl:
name: fs.file-max
value: 1000000
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Максимальный размер буфера приема данных для всех соединений.
- ansible.posix.sysctl:
name: net.core.rmem_max
value: 33554432
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Максимальный размер буфера передачи данных для всех соединений.
- ansible.posix.sysctl:
name: net.core.wmem_max
value: 33554432
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Размер буфера приема данных по умолчанию для всех соединений.
- ansible.posix.sysctl:
name: net.core.rmem_default
value: 8388608
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Размер буфера передачи данных по умолчанию для всех соединений.
- ansible.posix.sysctl:
name: net.core.wmem_default
value: 4194394
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# Максимальный размер буфера приема данных для всех соединений.
- ansible.posix.sysctl:
name: net.core.optmem_max
value: 40960
state: present
sysctl_file: /etc/sysctl.d/kernel_tune.conf
# - name: Deploy kernel_tune.conf
# ansible.builtin.template:
# src: kernel_tune.conf.j2
# dest: /etc/sysctl.d/kernel_tune.conf
# mode: "0644"
#- name: Deploy tcp_tune.conf
# ansible.builtin.template:
# src: tcp_tune.conf.j2
# dest: /etc/sysctl.d/tcp_tune.conf
# mode: "0644"
# TCP syncookies - технология, позволяющая не забивать
# TCP стек, пока TCP сессия полностью не установится.
# Защита на случай TCP Syn атак
# Согласно рекомендациям разработчиков ядра, этот режим лучше отключить.
# http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
- ansible.posix.sysctl:
name: net.ipv4.tcp_syncookies
value: 0
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Векторная (минимум, по умолчанию, максимум) переменная в файле tcp_rmem содержит 3 целых числа, определяющих размер буфера сокетов TCP/UDP.
# Минимум: каждый сокет TCP имеет право использовать эту память по факту своего создания. Возможность использования такого буфера гарантируется
# даже при достижении порога ограничения (moderate memory pressure). Размер минимального буфера по умолчанию составляет 8 Кбайт (8192).
# Значение по умолчанию: количество памяти, допустимое для буфера передачи сокета TCP по умолчанию. Это значение применяется взамен параметра
# /proc/sys/net/core/rmem_default, используемого другими протоколами. Значение используемого по умолчанию буфера обычно (по умолчанию)
# составляет 87830 байт. Это определяет размер окна 65535 с заданным по умолчанию значением tcp_adv_win_scale и tcp_app_win = 0, несколько
# меньший, нежели определяет принятое по умолчанию значение tcp_app_win.
# Максимум: максимальный размер буфера, который может быть автоматически выделен для приема сокету TCP. Это значение не отменяет максимума,
# заданного в файле /proc/sys/net/core/rmem_max. При “статическом” выделении памяти с помощью SO_RCVBUF этот параметр не имеет значения.
# На приём TCP пакетов
- ansible.posix.sysctl:
name: net.ipv4.tcp_rmem
value: 4096 8388608 16777216
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf# На передачу TCP пакетов
- ansible.posix.sysctl:
name: net.ipv4.tcp_wmem
value: 4096 4194394 16777216
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Для TCP протокола в целом
- ansible.posix.sysctl:
name: net.ipv4.tcp_mem
value: 8388608 12582912 16777216
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Для UDP протокола в целом
- ansible.posix.sysctl:
name: net.ipv4.udp_mem
value: 8388608 12582912 16777216
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
- ansible.posix.sysctl:
name: net.ipv4.udp_rmem_min
value: 16384
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
- ansible.posix.sysctl:
name: net.ipv4.udp_wmem_min
value: 16384
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Параметр определяет максимальное количество пакетов в очереди на обработку, если интерфейс получает пакеты быстрее, чем ядро может их обработать.
- ansible.posix.sysctl:
name: net.core.netdev_max_backlog
value: 500000
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Максимальное число запоминаемых запросов на соединение (TCP Syn), для которых не было получено подтверждения от подключающегося клиента.
- ansible.posix.sysctl:
name: net.ipv4.tcp_max_syn_backlog
value: 5480000
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Увеличим возможное количество сокетов в состоянии TIME_WAIT.
- ansible.posix.sysctl:
name: net.ipv4.tcp_max_tw_buckets
value: 5480000
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Разрешаем повторное использование TIME-WAIT сокетов в случаях, если протокол считает это безопасным.
- ansible.posix.sysctl:
name: net.ipv4.tcp_tw_reuse
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Разрешаем быструю утилизацию сокетов находящихся в состоянии TIME_WAIT
- ansible.posix.sysctl:
name: net.ipv4.tcp_tw_recycle
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Параметр tcp_fin_timeout определяет время сохранения сокета в состоянии FIN-WAIT-2 после его закрытия локальной стороной.
# Партнер может не закрыть это соединение никогда.
- ansible.posix.sysctl:
name: net.ipv4.tcp_fin_timeout
value: 3
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Разрешить выборочные подтверждения протокола TCP. Опция необходима для эффективного использования всей доступной
# пропускной способности некоторых сетей
- ansible.posix.sysctl:
name: net.ipv4.tcp_sack
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Число попыток повтора передачи пакетов SYNACK для пассивных соединений TCP.
- ansible.posix.sysctl:
name: net.ipv4.tcp_synack_retries
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Определяет максимальное число допустимых в системе сокетов TCP, не связанных каким-либо идентификатором пользовательского файла (user file handle).
- ansible.posix.sysctl:
name: net.ipv4.tcp_max_orphans
value: 65536
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Определяется число неудачных попыток, после которого уничтожается соединение TCP, закрытое на локальной стороне.
- ansible.posix.sysctl:
name: net.ipv4.tcp_orphan_retries
value: 0
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Проверка наличия подключения по средствам keepalive сообщений. Активируется только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE.
# Через какой промежуток времени после установки подключения начать слать keepalive сообщения (в сек)
- ansible.posix.sysctl:
name: net.ipv4.tcp_keepalive_time
value: 600
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Интервал, с которым слать keepalive пакеты (в сек)
- ansible.posix.sysctl:
name: net.ipv4.tcp_keepalive_intvl
value: 20
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# После скольки неудачных пробах считать соединение разорванным
- ansible.posix.sysctl:
name: net.ipv4.tcp_keepalive_probes
value: 2
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Запрещаем технологию slow start (малый размер окна) в TCP подключениях,
# в которых долгое время не было трафика.
- ansible.posix.sysctl:
name: net.ipv4.tcp_slow_start_after_idle
value: 0
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Увеличиваем диапазон локальных портов, доступных для установки исходящих подключений.
- ansible.posix.sysctl:
name: net.ipv4.ip_local_port_range
value: 2000 65000
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Разрешает временные метки протокола TCP. Их наличие позволяет управлять работой протокола в условиях серьезных нагрузок.
- ansible.posix.sysctl:
name: net.ipv4.tcp_timestamps
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Параметр отвечающий за алгоритмы сегментации TCP пакетов при передаче данных.
# Cubic - алгоритм для высоконагруженных систем, но более структурированный, нежели BIC.
# Включён по умолчанию в linux ядре начиная с версии 2.6.19
# BBR - Алгоритм от Гугла, получайте максимальную скорость, если у вас широкий канал
- ansible.posix.sysctl:
name: net.ipv4.tcp_congestion_control
value: bbr
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Параметр определяет дисциплину обработки очередей
# FQ делят пропускную способность между всеми соединениями, даёт лучшую пропускную способность в связке с BBR
- ansible.posix.sysctl:
name: sysctl net.core.default_qdisc
value: fq
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Не сохранять результаты измерений TCP соединения в кеше при его закрытии
- ansible.posix.sysctl:
name: net.ipv4.tcp_no_metrics_save
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Разрешаем динамическое изменение размера окна TCP стека (окно увеличивается, если не было потерь
# пакетов при передаче в рамках TCP подключения)
- ansible.posix.sysctl:
name: net.ipv4.tcp_window_scaling
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Защита от TIME_WAIT атак.
- ansible.posix.sysctl:
name: net.ipv4.tcp_rfc1337
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Не отвечаем на ICMP ECHO запросы, переданные на широковещательный адрес.
- ansible.posix.sysctl:
name: net.ipv4.icmp_echo_ignore_broadcasts
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Не отвечаем на ошибочно сформированные сообщения.
- ansible.posix.sysctl:
name: net.ipv4.icmp_ignore_bogus_error_responses
value: 1
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
# Максимальное число открытых сокетов, ждущих соединения.
# Максимум в CentOS 7
- ansible.posix.sysctl:
name: net.core.somaxconn
value: 65535
state: present
sysctl_file: /etc/sysctl.d/tcp_tune.conf
#- name: Deploy ip_spoofing.conf
# ansible.builtin.template:
# src: ip_spoofing.conf.j2
# dest: /etc/sysctl.d/ip_spoofing.conf
# mode: "0644"
# Активируем защиту от IP-спуфинга.
- ansible.posix.sysctl:
name: net.ipv4.conf.default.rp_filter
value: 1
state: present
sysctl_file: /etc/sysctl.d/ip_spoofing.conf
- ansible.posix.sysctl:
name: net.ipv4.conf.all.rp_filter
value: 1
state: present
sysctl_file: /etc/sysctl.d/ip_spoofing.conf
- ansible.posix.sysctl:
name: net.ipv4.conf.lo.rp_filter
value: 1
state: present
sysctl_file: /etc/sysctl.d/ip_spoofing.conf
#- name: Deploy ip_forward.conf
# ansible.builtin.template:
# src: ip_forward.conf.j2
# dest: /etc/sysctl.d/ip_forward.conf
# mode: "0644"
# Запрет на передачу пакетов через сервер (т.е. работу его как шлюза)
- ansible.posix.sysctl:
name: net.ipv4.ip_forward
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
# Запрет на маршрутизацию на основе соответствующей опции в пакете (безопасность)
- ansible.posix.sysctl:
name: net.ipv4.conf.default.accept_source_route
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
# Если в таблице маршрутизации есть маршрут на сеть, с которой пришёл пакет (src ip)
# и он ссылается на данный интерфейс, то такой пакет будет принят.
# остальные будут отброшены.
- ansible.posix.sysctl:
name: net.ipv4.conf.default.rp_filter
value: 1
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
- ansible.posix.sysctl:
name: net.ipv4.conf.all.rp_filter
value: 1
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
- ansible.posix.sysctl:
name: net.ipv4.conf.lo.rp_filter
value: 1
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
- ansible.posix.sysctl:
name: net.ipv4.all.send_redirects
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
- ansible.posix.sysctl:
name: net.ipv4.all.accept_redirects
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_forward.conf
#- name: Deploy ip_bridge.conf
# ansible.builtin.template:
# src: ip_bridge.conf.j2
# dest: /etc/sysctl.d/ip_bridge.conf
# mode: "0644"
# Отключение фильтрации на br интерфейсах. необходимо в некоторых случаях,
# когда NAT не правильно отрабатывает по таким интерфейсам
- ansible.posix.sysctl:
name: net.bridge.bridge-nf-call-ip6tables
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_bridge.conf
- ansible.posix.sysctl:
name: net.bridge.bridge-nf-call-iptables
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_bridge.conf
- ansible.posix.sysctl:
name: net.bridge.bridge-nf-call-arptables
value: 0
state: present
sysctl_file: /etc/sysctl.d/ip_bridge.conf
#- name: Deploy httpd-tune.conf
# ansible.builtin.template:
# src: httpd-tune.conf.j2
# dest: /etc/sysctl.d/httpd-tune.conf
# mode: "0644"
#limit for using memory
- ansible.posix.sysctl:
name: vm.overcommit_ratio
value: 100
state: present
sysctl_file: /etc/sysctl.d/ip_httpd.conf
- ansible.posix.sysctl:
name: vm.overcommit_memory
value: 2
state: present
sysctl_file: /etc/sysctl.d/ip_httpd.conf