Настройка сетевого стека в Linux - тема специфичная и непростая. В сети полно материалов, но большинство из них просто копируют друг друга, а рекомендации часто устаревшие. Ниже актуальная на сегодня подборка параметров, которые стоит учитывать при настройке сервера. Основной акцент - на управление памятью и таймаутами. Оперативки сейчас много, так что имеет смысл использовать это преимущество.
▪️ Полезные параметры sysctl
📍 Максимум осиротевших сокетов (TCP orphans). Каждый такой сокет съедает ~64 КБ памяти. Увеличиваем лимит, если сервер мощный:
net.ipv4.tcp_max_orphans = 65536
📍 Сокращаем FIN-WAIT-2. Позволяет быстрее очищать соединения, которые "зависли":
net.ipv4.tcp_fin_timeout = 10
📍 Настройка KeepAlive-проверок. Полезно для "выметания" неактивных соединений:
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
📍 Диапазон локальных портов. Расширяем диапазон для исходящих соединений:
net.ipv4.ip_local_port_range = 10240 65535
📍 Увеличиваем очередь входящих соединений. Особенно важно на серверах с высокой нагрузкой:
net.core.somaxconn = 16384
📍 Буферы по умолчанию. Прокачиваем rmem и wmem для эффективной работы сокетов:
net.core.rmem_default = 851968
net.core.wmem_default = 851968
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
📍 Конфигурация TCP Congestion Control. Выбираем алгоритм, подходящий под вашу нагрузку. По умолчанию:
net.ipv4.tcp_congestion_control = cubic
📍 Отключаем TCP syncookies. Если нет необходимости в защите от SYN-флудов, можно отключить:
net.ipv4.tcp_syncookies = 0
📍 Включаем защиту от TIME_WAIT атак. Обязательно при большом количестве соединений:
net.ipv4.tcp_rfc1337 = 1
📍 Безопасность ICMP и redirect’ов. Для серверов, которые не являются маршрутизаторами:
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Дополнительно - игнорировать ICMP echo-запросы (ping):
net.ipv4.icmp_echo_ignore_all = 1
❗️ Стоит учитывать
Параметры вроде tcp_mem, tcp_rmem, tcp_wmem зависят от объема оперативной памяти и автоматически настраиваются при загрузке. Их можно регулировать вручную при необходимости, но в большинстве случаев дефолтных значений достаточно.
#linux #sysctl #TCP
🧑💻 NetworkAdmin