Sysctl - Параметры ядра Linux
Sysctl - Параметры ядра Linux
Данная страница описывает настройку параметров ядра Linux в VyOS через интерфейс sysctl. Параметры ядра позволяют изменять поведение системы на низком уровне для оптимизации производительности, безопасности и функциональности сети.
Обзор
Что такое sysctl
Sysctl - это механизм для модификации параметров ядра Linux во время работы системы (runtime) без перезагрузки. В VyOS sysctl используется для:
- Оптимизации сетевой производительности (буферы TCP/UDP, backlog, congestion control)
- Усиления безопасности (защита от spoofing, SYN flood, ICMP redirects)
- Настройки IPv4/IPv6 (forwarding, routing, multicast)
- Управления памятью (swappiness, cache pressure, OOM behavior)
- Файловой системы (максимум открытых файлов, inotify limits)
- Kernel behavior (panic, core dumps, randomization)
Архитектура sysctl в VyOS
VyOS Configuration
|
v
/opt/vyatta/etc/config/scripts/
|
v
/etc/sysctl.d/99-vyos.conf
|
v
/proc/sys/* (kernel runtime parameters)Важно:
- Параметры sysctl в VyOS сохраняются в конфигурации и применяются при каждой загрузке
- Изменения применяются немедленно после commit без перезагрузки
- Не редактируйте
/etc/sysctl.confили/proc/sys/*вручную - используйте VyOS конфигурацию - VyOS автоматически генерирует
/etc/sysctl.d/99-vyos.confиз своей конфигурации
Структура параметров sysctl
Параметры sysctl организованы в иерархическую структуру:
/proc/sys/
├── net/ # Сетевые параметры
│ ├── ipv4/ # IPv4 настройки
│ ├── ipv6/ # IPv6 настройки
│ ├── core/ # Общие сетевые параметры
│ └── netfilter/ # Netfilter/iptables
├── vm/ # Виртуальная память
├── fs/ # Файловая система
├── kernel/ # Ядро системы
└── dev/ # УстройстваБазовая конфигурация
Синтаксис команды
set system sysctl parameter <parameter-name> value <value>Формат параметра:
- Точечная нотация:
net.ipv4.ip_forward - Слэш нотация (в
/proc/sys/):/proc/sys/net/ipv4/ip_forward - В VyOS используется только точечная нотация
Основные примеры
Включение IP forwarding для роутера
# IPv4 forwarding (обязательно для роутера)
set system sysctl parameter net.ipv4.ip_forward value 1
# IPv6 forwarding
set system sysctl parameter net.ipv6.conf.all.forwarding value 1
commit
saveОтключение ICMP redirects (безопасность)
# Запретить принимать ICMP redirects
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.default.accept_redirects value 0
# Запретить отправлять ICMP redirects
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
set system sysctl parameter net.ipv4.conf.default.send_redirects value 0
commit
saveЗащита от IP spoofing (Reverse Path Filtering)
# Strict mode (рекомендуется для большинства случаев)
set system sysctl parameter net.ipv4.conf.all.rp_filter value 1
set system sysctl parameter net.ipv4.conf.default.rp_filter value 1
commit
saveУвеличение размеров TCP буферов
# Минимальный, базовый и максимальный размеры (в байтах)
set system sysctl parameter net.ipv4.tcp_rmem value '4096 87380 16777216'
set system sysctl parameter net.ipv4.tcp_wmem value '4096 65536 16777216'
commit
saveКатегории параметров sysctl
1. Сетевые параметры IPv4 (net.ipv4.*)
IP Forwarding и Routing
# Включить IP forwarding (необходимо для роутера)
set system sysctl parameter net.ipv4.ip_forward value 1
# Разрешить нелокальный bind (для failover/VRRP)
set system sysctl parameter net.ipv4.ip_nonlocal_bind value 1
# Динамический выбор локального порта
set system sysctl parameter net.ipv4.ip_local_port_range value '1024 65535'TCP Performance Tuning
TCP Window Scaling:
# Включить window scaling (RFC 1323)
set system sysctl parameter net.ipv4.tcp_window_scaling value 1
# Размеры буферов TCP read
set system sysctl parameter net.ipv4.tcp_rmem value '4096 87380 16777216'
# Размеры буферов TCP write
set system sysctl parameter net.ipv4.tcp_wmem value '4096 65536 16777216'
# Максимальный размер буфера (16 MB)
set system sysctl parameter net.core.rmem_max value 16777216
set system sysctl parameter net.core.wmem_max value 16777216TCP Congestion Control:
# Алгоритм congestion control (bbr, cubic, reno)
set system sysctl parameter net.ipv4.tcp_congestion_control value 'bbr'
# Доступные алгоритмы
set system sysctl parameter net.ipv4.tcp_allowed_congestion_control value 'bbr cubic reno'TCP Keepalive:
# Время до начала keepalive проверок (секунды)
set system sysctl parameter net.ipv4.tcp_keepalive_time value 600
# Интервал между keepalive пробами
set system sysctl parameter net.ipv4.tcp_keepalive_intvl value 60
# Количество попыток keepalive
set system sysctl parameter net.ipv4.tcp_keepalive_probes value 3TCP Timestamps:
# Включить TCP timestamps (RFC 1323)
set system sysctl parameter net.ipv4.tcp_timestamps value 1TCP Fast Open:
# Включить TCP Fast Open (TFO)
# 1 = client, 2 = server, 3 = both
set system sysctl parameter net.ipv4.tcp_fastopen value 3TCP Security Parameters
SYN Flood Protection:
# Включить SYN cookies (защита от SYN flood)
set system sysctl parameter net.ipv4.tcp_syncookies value 1
# Максимум SYN backlog
set system sysctl parameter net.ipv4.tcp_max_syn_backlog value 8192
# Количество SYN retries
set system sysctl parameter net.ipv4.tcp_syn_retries value 2
set system sysctl parameter net.ipv4.tcp_synack_retries value 2TCP Reuse and Recycle:
# Разрешить повторное использование TIME-WAIT сокетов
set system sysctl parameter net.ipv4.tcp_tw_reuse value 1
# Время жизни orphan соединений (секунды)
set system sysctl parameter net.ipv4.tcp_fin_timeout value 30
# Максимум orphan sockets
set system sysctl parameter net.ipv4.tcp_max_orphans value 65536ICMP Parameters
# Игнорировать ICMP echo requests (ping)
set system sysctl parameter net.ipv4.icmp_echo_ignore_all value 0
# Игнорировать broadcast ping
set system sysctl parameter net.ipv4.icmp_echo_ignore_broadcasts value 1
# Ограничение rate ICMP ответов (для защиты от flood)
set system sysctl parameter net.ipv4.icmp_ratelimit value 100
# Запретить ICMP redirects (безопасность)
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.default.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
set system sysctl parameter net.ipv4.conf.default.send_redirects value 0
# Запретить source routing
set system sysctl parameter net.ipv4.conf.all.accept_source_route value 0
set system sysctl parameter net.ipv4.conf.default.accept_source_route value 0Reverse Path Filtering (Anti-Spoofing)
# rp_filter modes:
# 0 = disabled
# 1 = strict mode (recommended for most cases)
# 2 = loose mode (for asymmetric routing)
# Strict mode (проверяет обратный маршрут)
set system sysctl parameter net.ipv4.conf.all.rp_filter value 1
set system sysctl parameter net.ipv4.conf.default.rp_filter value 1
# Loose mode (для сложной топологии с несимметричным роутингом)
# set system sysctl parameter net.ipv4.conf.all.rp_filter value 2ARP Parameters
# Время жизни ARP записей (секунды)
set system sysctl parameter net.ipv4.neigh.default.gc_stale_time value 120
# Таблица ARP - thresholds
set system sysctl parameter net.ipv4.neigh.default.gc_thresh1 value 128
set system sysctl parameter net.ipv4.neigh.default.gc_thresh2 value 512
set system sysctl parameter net.ipv4.neigh.default.gc_thresh3 value 10242. Сетевые параметры IPv6 (net.ipv6.*)
IPv6 Forwarding
# Включить IPv6 forwarding
set system sysctl parameter net.ipv6.conf.all.forwarding value 1
set system sysctl parameter net.ipv6.conf.default.forwarding value 1IPv6 Security
# Запретить IPv6 router advertisements
set system sysctl parameter net.ipv6.conf.all.accept_ra value 0
set system sysctl parameter net.ipv6.conf.default.accept_ra value 0
# Запретить IPv6 redirects
set system sysctl parameter net.ipv6.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv6.conf.default.accept_redirects value 0
# Запретить source routing
set system sysctl parameter net.ipv6.conf.all.accept_source_route value 0
set system sysctl parameter net.ipv6.conf.default.accept_source_route value 0IPv6 Autoconfiguration
# Отключить IPv6 autoconf (для статической конфигурации)
set system sysctl parameter net.ipv6.conf.all.autoconf value 0
set system sysctl parameter net.ipv6.conf.default.autoconf value 0Полное отключение IPv6 (если не используется)
set system sysctl parameter net.ipv6.conf.all.disable_ipv6 value 1
set system sysctl parameter net.ipv6.conf.default.disable_ipv6 value 1
set system sysctl parameter net.ipv6.conf.lo.disable_ipv6 value 13. Core Network Parameters (net.core.*)
Network Buffers
# Максимальный размер receive buffer
set system sysctl parameter net.core.rmem_max value 16777216
# Максимальный размер send buffer
set system sysctl parameter net.core.wmem_max value 16777216
# Default receive buffer
set system sysctl parameter net.core.rmem_default value 262144
# Default send buffer
set system sysctl parameter net.core.wmem_default value 262144
# Размер буфера для оптимизации памяти
set system sysctl parameter net.core.optmem_max value 25165824Network Device Queue
# Максимальная длина очереди пакетов для обработки
set system sysctl parameter net.core.netdev_max_backlog value 5000
# Бюджет на обработку пакетов за один poll
set system sysctl parameter net.core.netdev_budget value 600Somaxconn
# Максимальный backlog для listen() системного вызова
# Важно для высоконагруженных веб-серверов
set system sysctl parameter net.core.somaxconn value 40964. Virtual Memory (vm.*)
Swappiness
# Агрессивность использования swap (0-100)
# 0 = минимум swap, 100 = активно использовать swap
# Рекомендуется: 10 для серверов, 60 для desktop
set system sysctl parameter vm.swappiness value 10Cache Pressure
# Давление на освобождение кэша (0-100)
# Меньше значение = больше кэша сохраняется
set system sysctl parameter vm.vfs_cache_pressure value 50Dirty Memory
# Процент памяти для dirty pages перед началом записи
set system sysctl parameter vm.dirty_ratio value 10
# Процент памяти для background записи
set system sysctl parameter vm.dirty_background_ratio value 5
# Время жизни dirty data (centiseconds = 1/100 секунды)
set system sysctl parameter vm.dirty_expire_centisecs value 3000
# Интервал wakeup pdflush для записи (centiseconds)
set system sysctl parameter vm.dirty_writeback_centisecs value 500OOM (Out of Memory) Killer
# OOM killer behavior
# 0 = kernel tries to avoid killing
# 1 = kernel kills process more aggressively
# 2 = kernel panics on OOM
set system sysctl parameter vm.panic_on_oom value 0
# Переоценка OOM score
set system sysctl parameter vm.oom_kill_allocating_task value 05. File System (fs.*)
File Descriptors
# Максимальное количество открытых файлов (system-wide)
set system sysctl parameter fs.file-max value 2097152
# Максимум inotify watches (для мониторинга файлов)
set system sysctl parameter fs.inotify.max_user_watches value 524288AIO (Asynchronous I/O)
# Максимум асинхронных IO requests
set system sysctl parameter fs.aio-max-nr value 10485766. Kernel Parameters (kernel.*)
Kernel Panic
# Автоматическая перезагрузка после panic (секунды)
# 0 = не перезагружаться
set system sysctl parameter kernel.panic value 10
# Panic при kernel oops
set system sysctl parameter kernel.panic_on_oops value 1Core Dumps
# Шаблон имени core dump файла
set system sysctl parameter kernel.core_pattern value '/tmp/core-%e-%p-%t'PID Max
# Максимальный PID (Process ID)
set system sysctl parameter kernel.pid_max value 65536SysRq
# Включить SysRq magic keys (для аварийного управления)
# 1 = enabled, 0 = disabled
set system sysctl parameter kernel.sysrq value 1Address Space Layout Randomization (ASLR)
# ASLR для защиты от эксплойтов
# 0 = disabled
# 1 = random stack/vdso/heap
# 2 = full randomization (recommended)
set system sysctl parameter kernel.randomize_va_space value 2Примеры конфигураций для типовых сценариев
Сценарий 1: Базовая безопасность (Security Hardening)
Настройка параметров безопасности для защиты от типовых атак.
configure
# === IPv4 Security ===
# Включить IP forwarding для роутера
set system sysctl parameter net.ipv4.ip_forward value 1
# Защита от IP spoofing (Reverse Path Filtering)
set system sysctl parameter net.ipv4.conf.all.rp_filter value 1
set system sysctl parameter net.ipv4.conf.default.rp_filter value 1
# Запретить source routing
set system sysctl parameter net.ipv4.conf.all.accept_source_route value 0
set system sysctl parameter net.ipv4.conf.default.accept_source_route value 0
# Запретить ICMP redirects
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.default.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
set system sysctl parameter net.ipv4.conf.default.send_redirects value 0
set system sysctl parameter net.ipv4.conf.all.secure_redirects value 0
set system sysctl parameter net.ipv4.conf.default.secure_redirects value 0
# Игнорировать broadcast ping
set system sysctl parameter net.ipv4.icmp_echo_ignore_broadcasts value 1
# Игнорировать bogus ICMP error responses
set system sysctl parameter net.ipv4.icmp_ignore_bogus_error_responses value 1
# SYN flood protection
set system sysctl parameter net.ipv4.tcp_syncookies value 1
set system sysctl parameter net.ipv4.tcp_max_syn_backlog value 8192
# Логировать martian packets (impossible addresses)
set system sysctl parameter net.ipv4.conf.all.log_martians value 1
set system sysctl parameter net.ipv4.conf.default.log_martians value 1
# === IPv6 Security ===
# Запретить IPv6 router advertisements
set system sysctl parameter net.ipv6.conf.all.accept_ra value 0
set system sysctl parameter net.ipv6.conf.default.accept_ra value 0
# Запретить IPv6 redirects
set system sysctl parameter net.ipv6.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv6.conf.default.accept_redirects value 0
# Запретить IPv6 source routing
set system sysctl parameter net.ipv6.conf.all.accept_source_route value 0
set system sysctl parameter net.ipv6.conf.default.accept_source_route value 0
# === Kernel Security ===
# Address Space Layout Randomization
set system sysctl parameter kernel.randomize_va_space value 2
# Ограничить доступ к kernel logs
set system sysctl parameter kernel.dmesg_restrict value 1
# Ограничить доступ к kernel pointers
set system sysctl parameter kernel.kptr_restrict value 2
commit
save
exitСценарий 2: High-Performance TCP Tuning
Оптимизация для высокопроизводительных сетевых приложений (1 Gbps+ links).
configure
# === TCP Buffer Sizes ===
# Увеличенные TCP буферы для высокоскоростных каналов
# Формат: min default max (в байтах)
# TCP receive buffer (4KB, 128KB, 64MB)
set system sysctl parameter net.ipv4.tcp_rmem value '4096 131072 67108864'
# TCP write buffer (4KB, 128KB, 64MB)
set system sysctl parameter net.ipv4.tcp_wmem value '4096 131072 67108864'
# Maximum socket buffer sizes
set system sysctl parameter net.core.rmem_max value 67108864
set system sysctl parameter net.core.wmem_max value 67108864
set system sysctl parameter net.core.rmem_default value 262144
set system sysctl parameter net.core.wmem_default value 262144
# === TCP Performance ===
# TCP window scaling (RFC 1323)
set system sysctl parameter net.ipv4.tcp_window_scaling value 1
# TCP timestamps (RFC 1323)
set system sysctl parameter net.ipv4.tcp_timestamps value 1
# SACK (Selective Acknowledgement)
set system sysctl parameter net.ipv4.tcp_sack value 1
# TCP Fast Open
set system sysctl parameter net.ipv4.tcp_fastopen value 3
# BBR congestion control (best for high-speed links)
set system sysctl parameter net.ipv4.tcp_congestion_control value 'bbr'
set system sysctl parameter net.core.default_qdisc value 'fq'
# === Connection Handling ===
# Повторное использование TIME-WAIT сокетов
set system sysctl parameter net.ipv4.tcp_tw_reuse value 1
# Уменьшить FIN timeout
set system sysctl parameter net.ipv4.tcp_fin_timeout value 15
# Увеличить максимум orphan sockets
set system sysctl parameter net.ipv4.tcp_max_orphans value 131072
# === Network Queue ===
# Увеличить backlog для обработки пакетов
set system sysctl parameter net.core.netdev_max_backlog value 10000
# Увеличить listen backlog
set system sysctl parameter net.core.somaxconn value 8192
# === TCP SYN Queue ===
set system sysctl parameter net.ipv4.tcp_max_syn_backlog value 16384
# === Local Port Range ===
set system sysctl parameter net.ipv4.ip_local_port_range value '10000 65535'
commit
save
exitСценарий 3: Оптимизация памяти для роутера
Настройка параметров виртуальной памяти для сетевого устройства.
configure
# === Swappiness ===
# Минимизировать использование swap
set system sysctl parameter vm.swappiness value 10
# === Cache Pressure ===
# Сохранять больше кэша в памяти
set system sysctl parameter vm.vfs_cache_pressure value 50
# === Dirty Memory ===
# Настройка записи dirty pages
set system sysctl parameter vm.dirty_ratio value 10
set system sysctl parameter vm.dirty_background_ratio value 5
set system sysctl parameter vm.dirty_expire_centisecs value 3000
set system sysctl parameter vm.dirty_writeback_centisecs value 500
# === OOM Killer ===
# Не делать panic при OOM
set system sysctl parameter vm.panic_on_oom value 0
# Минимум свободной памяти (KB)
set system sysctl parameter vm.min_free_kbytes value 65536
commit
save
exitСценарий 4: Увеличение лимитов файловых дескрипторов
Для роутеров с большим количеством одновременных соединений (BGP, VPN, NAT).
configure
# === File Descriptors ===
# Максимум открытых файлов (system-wide)
set system sysctl parameter fs.file-max value 2097152
# === Network Connection Tracking ===
# Увеличить conntrack max (если используется NAT/Firewall)
# Примечание: это модуль netfilter, требует модуля nf_conntrack
set system sysctl parameter net.netfilter.nf_conntrack_max value 524288
# === Inotify ===
# Увеличить лимиты inotify (для мониторинга файлов)
set system sysctl parameter fs.inotify.max_user_watches value 524288
set system sysctl parameter fs.inotify.max_user_instances value 512
commit
save
exitПримеры для облачных платформ
Пример 1: Yandex Cloud - High-Performance TCP для Cloud Workloads
Оптимизация VyOS в Yandex Cloud для высокопроизводительной обработки трафика между VM.
configure
# === Description ===
# Конфигурация для VyOS в Yandex Cloud
# Оптимизация для высокоскоростных внутренних соединений (до 10 Gbps)
# Улучшение latency и throughput для cloud workloads
# === Basic Forwarding ===
set system sysctl parameter net.ipv4.ip_forward value 1
set system sysctl parameter net.ipv6.conf.all.forwarding value 1
# === TCP Performance для Cloud ===
# Увеличенные буферы для высокой пропускной способности
set system sysctl parameter net.ipv4.tcp_rmem value '4096 131072 67108864'
set system sysctl parameter net.ipv4.tcp_wmem value '4096 131072 67108864'
set system sysctl parameter net.core.rmem_max value 67108864
set system sysctl parameter net.core.wmem_max value 67108864
# BBR congestion control (оптимально для облачных сетей)
set system sysctl parameter net.ipv4.tcp_congestion_control value 'bbr'
set system sysctl parameter net.core.default_qdisc value 'fq'
# TCP Fast Open для уменьшения latency
set system sysctl parameter net.ipv4.tcp_fastopen value 3
# Оптимизация TCP window
set system sysctl parameter net.ipv4.tcp_window_scaling value 1
set system sysctl parameter net.ipv4.tcp_timestamps value 1
set system sysctl parameter net.ipv4.tcp_sack value 1
# === Connection Management ===
# Быстрое переиспользование сокетов
set system sysctl parameter net.ipv4.tcp_tw_reuse value 1
set system sysctl parameter net.ipv4.tcp_fin_timeout value 15
# Увеличенные лимиты соединений
set system sysctl parameter net.ipv4.tcp_max_orphans value 131072
set system sysctl parameter net.ipv4.tcp_max_syn_backlog value 16384
# === Network Queue для Cloud NIC ===
# Увеличение backlog (важно для burst трафика в cloud)
set system sysctl parameter net.core.netdev_max_backlog value 10000
set system sysctl parameter net.core.somaxconn value 8192
# === Security для Yandex Cloud ===
# Reverse Path Filtering (strict mode)
set system sysctl parameter net.ipv4.conf.all.rp_filter value 1
set system sysctl parameter net.ipv4.conf.default.rp_filter value 1
# SYN flood protection
set system sysctl parameter net.ipv4.tcp_syncookies value 1
# Запретить ICMP redirects
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.default.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
set system sysctl parameter net.ipv4.conf.default.send_redirects value 0
# === Memory для Cloud VM ===
# Минимизировать swap (cloud VMs обычно имеют достаточно RAM)
set system sysctl parameter vm.swappiness value 10
# Оптимизация dirty pages
set system sysctl parameter vm.dirty_ratio value 10
set system sysctl parameter vm.dirty_background_ratio value 5
# === File Descriptors для Cloud Services ===
set system sysctl parameter fs.file-max value 2097152
commit
save
exitПроверка применения параметров в Yandex Cloud:
# Проверка BBR congestion control
sysctl net.ipv4.tcp_congestion_control
sysctl net.ipv4.tcp_available_congestion_control
# Проверка буферов
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
# Мониторинг TCP статистики
netstat -s | grep -i tcp
# Проверка queue длины
ip -s link show eth0Пример 2: VK Cloud - Security Hardening для DMZ роутера
Усиленная безопасность для VyOS в VK Cloud, работающего как edge router в DMZ.
configure
# === Description ===
# VyOS Edge Router в VK Cloud DMZ
# Максимальная безопасность для защиты от внешних угроз
# Оптимизация для обработки mixed trusted/untrusted traffic
# === Basic Routing ===
set system sysctl parameter net.ipv4.ip_forward value 1
# === Strict Security - IP Spoofing Protection ===
# Reverse Path Filtering - strict mode
set system sysctl parameter net.ipv4.conf.all.rp_filter value 1
set system sysctl parameter net.ipv4.conf.default.rp_filter value 1
# Запретить source routing (защита от routing attacks)
set system sysctl parameter net.ipv4.conf.all.accept_source_route value 0
set system sysctl parameter net.ipv4.conf.default.accept_source_route value 0
# === ICMP Security ===
# Запретить ICMP redirects
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.default.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
set system sysctl parameter net.ipv4.conf.default.send_redirects value 0
set system sysctl parameter net.ipv4.conf.all.secure_redirects value 0
set system sysctl parameter net.ipv4.conf.default.secure_redirects value 0
# Игнорировать broadcast ping (smurf attack protection)
set system sysctl parameter net.ipv4.icmp_echo_ignore_broadcasts value 1
# Игнорировать bogus ICMP responses
set system sysctl parameter net.ipv4.icmp_ignore_bogus_error_responses value 1
# Rate limit ICMP responses
set system sysctl parameter net.ipv4.icmp_ratelimit value 100
# === SYN Flood Protection ===
# Включить SYN cookies
set system sysctl parameter net.ipv4.tcp_syncookies value 1
# Увеличить SYN backlog
set system sysctl parameter net.ipv4.tcp_max_syn_backlog value 8192
# Уменьшить SYN retries (быстрее отбрасывать атаки)
set system sysctl parameter net.ipv4.tcp_syn_retries value 2
set system sysctl parameter net.ipv4.tcp_synack_retries value 2
# === Connection Limits для DMZ ===
# Ограничить orphan sockets
set system sysctl parameter net.ipv4.tcp_max_orphans value 65536
# Быстрое закрытие соединений
set system sysctl parameter net.ipv4.tcp_fin_timeout value 20
# === Logging и Monitoring ===
# Логировать martian packets (подозрительные адреса)
set system sysctl parameter net.ipv4.conf.all.log_martians value 1
set system sysctl parameter net.ipv4.conf.default.log_martians value 1
# === IPv6 Security (если используется) ===
# Запретить IPv6 router advertisements
set system sysctl parameter net.ipv6.conf.all.accept_ra value 0
set system sysctl parameter net.ipv6.conf.default.accept_ra value 0
# Запретить IPv6 redirects
set system sysctl parameter net.ipv6.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv6.conf.default.accept_redirects value 0
# Если IPv6 не используется - отключить полностью
# set system sysctl parameter net.ipv6.conf.all.disable_ipv6 value 1
# set system sysctl parameter net.ipv6.conf.default.disable_ipv6 value 1
# === Kernel Security ===
# Address Space Layout Randomization (полная)
set system sysctl parameter kernel.randomize_va_space value 2
# Ограничить доступ к kernel logs (неавторизованным пользователям)
set system sysctl parameter kernel.dmesg_restrict value 1
# Скрыть kernel pointers
set system sysctl parameter kernel.kptr_restrict value 2
# Panic и перезагрузка при критических ошибках
set system sysctl parameter kernel.panic value 10
set system sysctl parameter kernel.panic_on_oops value 1
# === Network Performance (сбалансированное с безопасностью) ===
# Умеренные буферы
set system sysctl parameter net.ipv4.tcp_rmem value '4096 87380 16777216'
set system sysctl parameter net.ipv4.tcp_wmem value '4096 65536 16777216'
set system sysctl parameter net.core.rmem_max value 16777216
set system sysctl parameter net.core.wmem_max value 16777216
# Backlog для обработки
set system sysctl parameter net.core.netdev_max_backlog value 5000
set system sysctl parameter net.core.somaxconn value 4096
# === Connection Tracking для Firewall/NAT ===
# Увеличить conntrack table для NAT
set system sysctl parameter net.netfilter.nf_conntrack_max value 524288
# Timeout для conntrack (более агрессивный для DMZ)
set system sysctl parameter net.netfilter.nf_conntrack_tcp_timeout_established value 3600
commit
save
exitПроверка безопасности в VK Cloud:
# Проверка rp_filter (должен быть 1)
sysctl net.ipv4.conf.all.rp_filter
# Проверка SYN cookies
sysctl net.ipv4.tcp_syncookies
# Проверка ICMP redirects (должны быть 0)
sysctl net.ipv4.conf.all.accept_redirects
sysctl net.ipv4.conf.all.send_redirects
# Проверка martian packet logging
sysctl net.ipv4.conf.all.log_martians
# Мониторинг SYN flood атак
netstat -s | grep -i syn
# Мониторинг conntrack использования
conntrack -C
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_maxПример 3: Multi-Cloud VPN Gateway (Yandex + VK Cloud)
Конфигурация для VyOS, работающего как VPN шлюз между Yandex Cloud и VK Cloud.
configure
# === Description ===
# Multi-cloud VPN Gateway
# Оптимизация для VPN туннелей (IPsec/WireGuard)
# Балансировка производительности и безопасности
# === Forwarding ===
set system sysctl parameter net.ipv4.ip_forward value 1
set system sysctl parameter net.ipv6.conf.all.forwarding value 1
# === VPN Specific - PMTU Discovery ===
# Включить PMTU discovery (важно для VPN)
set system sysctl parameter net.ipv4.ip_no_pmtu_disc value 0
# === TCP Optimizations для VPN ===
# MTU probing для TCP (автоматическое определение MTU)
set system sysctl parameter net.ipv4.tcp_mtu_probing value 1
# TCP buffers (умеренные для VPN overhead)
set system sysctl parameter net.ipv4.tcp_rmem value '4096 87380 33554432'
set system sysctl parameter net.ipv4.tcp_wmem value '4096 65536 33554432'
set system sysctl parameter net.core.rmem_max value 33554432
set system sysctl parameter net.core.wmem_max value 33554432
# === Congestion Control для VPN ===
# BBR для лучшей работы через туннели
set system sysctl parameter net.ipv4.tcp_congestion_control value 'bbr'
set system sysctl parameter net.core.default_qdisc value 'fq'
# === Security (Moderate для VPN) ===
# Loose rp_filter для VPN туннелей (asymmetric routing)
set system sysctl parameter net.ipv4.conf.all.rp_filter value 2
set system sysctl parameter net.ipv4.conf.default.rp_filter value 2
# SYN flood protection
set system sysctl parameter net.ipv4.tcp_syncookies value 1
set system sysctl parameter net.ipv4.tcp_max_syn_backlog value 8192
# Запретить ICMP redirects
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
# === IPsec Specific ===
# Отключить ICMP redirects на VPN интерфейсах
# (будет применено на конкретных интерфейсах через конфигурацию)
# === Performance для IPsec ===
# Увеличить backlog для обработки зашифрованного трафика
set system sysctl parameter net.core.netdev_max_backlog value 10000
set system sysctl parameter net.core.somaxconn value 8192
# === Memory Optimization ===
set system sysctl parameter vm.swappiness value 10
set system sysctl parameter vm.vfs_cache_pressure value 50
# === Connection Limits ===
set system sysctl parameter net.ipv4.tcp_max_orphans value 131072
set system sysctl parameter fs.file-max value 2097152
commit
save
exitКоманды проверки и мониторинга
Просмотр текущих значений sysctl
# Показать все параметры sysctl
sysctl -a
# Показать конкретный параметр
sysctl net.ipv4.ip_forward
# Показать все параметры в категории
sysctl -a | grep net.ipv4
sysctl -a | grep vm
# Прямое чтение из /proc/sys
cat /proc/sys/net/ipv4/ip_forwardПросмотр VyOS конфигурации sysctl
# Показать все настроенные параметры sysctl в VyOS
show configuration system sysctl
# Показать в формате set commands
show configuration commands | match sysctl
# Показать конкретный параметр
show configuration system sysctl parameter net.ipv4.ip_forwardПрименение параметров вручную (временно)
# Применить параметр без изменения конфигурации (до перезагрузки)
sudo sysctl -w net.ipv4.ip_forward=1
# Применить из файла
sudo sysctl -p /etc/sysctl.d/99-vyos.conf
# Загрузить все конфигурации sysctl
sudo sysctl --systemМониторинг сетевой производительности
# TCP статистика
netstat -s | grep -i tcp
# Показать retransmits
ss -ti
# Показать congestion control algorithm в использовании
ss -ti | grep -i cubic
ss -ti | grep -i bbr
# Проверка buffer sizes для активных соединений
ss -m
# Мониторинг backlog
ss -l | grep -i listenПроверка буферов и очередей
# Текущие размеры буферов
sysctl net.core.rmem_max
sysctl net.core.wmem_max
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
# Статистика сетевых очередей
ip -s link show eth0
# Backlog статистика
cat /proc/net/netstat | grep -i tcpext
# Conntrack статистика (если используется)
conntrack -C
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_maxМониторинг памяти
# Использование памяти
free -h
# Swappiness текущее значение
sysctl vm.swappiness
# Статистика swap
vmstat 1 5
# Dirty pages статистика
cat /proc/meminfo | grep -i dirty
sysctl vm.dirty_ratio
sysctl vm.dirty_background_ratio
# OOM killer logs
dmesg | grep -i oom
journalctl -k | grep -i oomПроверка файловых дескрипторов
# Текущее использование file descriptors (system-wide)
cat /proc/sys/fs/file-nr
# Максимум file descriptors
sysctl fs.file-max
# File descriptors по процессам
lsof | wc -l
# Top процессы по открытым файлам
lsof | awk '{print $1}' | sort | uniq -c | sort -rn | head -10Устранение неполадок (Troubleshooting)
Проблема 1: Параметр sysctl не применяется после commit
Симптомы:
- Команда
show configuration system sysctlпоказывает параметр sysctl <parameter>показывает старое значение- Параметр не применяется в
/proc/sys/
Диагностика:
# Проверить конфигурацию VyOS
show configuration system sysctl parameter net.ipv4.ip_forward
# Проверить текущее значение
sysctl net.ipv4.ip_forward
# Проверить сгенерированный файл
cat /etc/sysctl.d/99-vyos.conf | grep ip_forward
# Проверить логи
journalctl -xe | grep sysctlВозможные причины:
- Некорректное имя параметра
# Неправильно (underscores вместо dots)
set system sysctl parameter net_ipv4_ip_forward value 1
# Правильно
set system sysctl parameter net.ipv4.ip_forward value 1- Параметр не существует в текущем ядре
# Проверить доступность параметра
ls -la /proc/sys/net/ipv4/ | grep ip_forward- Модуль ядра не загружен
# Некоторые параметры требуют модулей
# Например, nf_conntrack для conntrack параметров
lsmod | grep nf_conntrack
# Загрузить модуль если нужно
sudo modprobe nf_conntrackРешение:
# 1. Исправить конфигурацию
configure
delete system sysctl parameter <incorrect-parameter>
set system sysctl parameter <correct-parameter> value <value>
commit
save
exit
# 2. Применить вручную для немедленного эффекта
sudo sysctl -w net.ipv4.ip_forward=1
# 3. Перезагрузить (если параметр критичен)
sudo rebootПроблема 2: Производительность сети не улучшилась после изменения буферов
Симптомы:
- TCP буферы увеличены в sysctl
- Пропускная способность остается низкой
- Latency не улучшается
Диагностика:
# Проверить примененные параметры
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
sysctl net.core.rmem_max
sysctl net.core.wmem_max
# Проверить автотюнинг
sysctl net.ipv4.tcp_moderate_rcvbuf
# Мониторинг активных соединений
ss -ti | head -20
# Проверить congestion control
sysctl net.ipv4.tcp_congestion_control
# Статистика ретрансмитов
netstat -s | grep -i retrans
# Проверить NIC ring buffers
ethtool -g eth0Возможные причины:
- net.core.rmem_max / wmem_max меньше чем tcp_rmem / tcp_wmem максимумы
# Проблема: tcp_rmem max = 67108864, но rmem_max = 212992
sysctl net.ipv4.tcp_rmem # 4096 87380 67108864
sysctl net.core.rmem_max # 212992
# Решение: увеличить core limits
configure
set system sysctl parameter net.core.rmem_max value 67108864
set system sysctl parameter net.core.wmem_max value 67108864
commit
save- Congestion control не оптимизирован
# BBR может быть недоступен
sysctl net.ipv4.tcp_available_congestion_control
# Если BBR не в списке, использовать cubic
configure
set system sysctl parameter net.ipv4.tcp_congestion_control value 'cubic'
commit
save- QDisc не оптимизирован для BBR
# Для BBR требуется fq qdisc
sysctl net.core.default_qdisc
configure
set system sysctl parameter net.core.default_qdisc value 'fq'
commit
save- NIC offloading отключен
# Проверить offloading
ethtool -k eth0 | grep offload
# Включить если выключен
sudo ethtool -K eth0 tso on
sudo ethtool -K eth0 gso on
sudo ethtool -K eth0 gro onПроблема 3: Система не загружается после изменения kernel параметров
Симптомы:
- VyOS не загружается или kernel panic
- Система зависает при загрузке
- Невозможно войти в систему
Решение через GRUB rescue:
- Загрузиться в single user mode:
# При загрузке нажать 'e' в GRUB menu
# Добавить к строке linux:
linux ... single init=/bin/bash
# Загрузиться- Откатить изменения:
# Remount filesystem в read-write
mount -o remount,rw /
# Удалить проблемный параметр из конфигурации
# Отредактировать /config/config.boot
vi /config/config.boot
# Найти и удалить строку с проблемным sysctl параметром
# Или удалить весь sysctl конфиг
rm -f /etc/sysctl.d/99-vyos.conf
# Перезагрузить
reboot- Альтернатива: загрузиться с предыдущей конфигурации:
# При загрузке VyOS выбрать предыдущий commit из boot menu
# VyOS автоматически откатится к предыдущей рабочей конфигурацииПрофилактика:
# Всегда тестировать критичные изменения перед save
configure
set system sysctl parameter <parameter> value <value>
commit
# НЕ ДЕЛАТЬ save сразу!
# Тестировать работоспособность
# Если все работает - сохранить
save
# Если проблемы - откатить
rollbackПроблема 4: Conntrack table переполняется (NAT/Firewall)
Симптомы:
- Сообщение “nf_conntrack: table full, dropping packet”
- Новые соединения не устанавливаются
- Intermittent connectivity issues
Диагностика:
# Проверить текущее использование conntrack
conntrack -C
# Проверить максимум
cat /proc/sys/net/netfilter/nf_conntrack_max
# Проверить kernel logs
dmesg | grep -i conntrack
journalctl -k | grep -i conntrack
# Статистика conntrack
cat /proc/net/nf_conntrack | wc -lРешение:
configure
# Увеличить nf_conntrack_max
set system sysctl parameter net.netfilter.nf_conntrack_max value 524288
# Увеличить hashsize (требует перезагрузки модуля)
# hashsize обычно = nf_conntrack_max / 4
# Уменьшить timeout для established соединений (более агрессивно)
set system sysctl parameter net.netfilter.nf_conntrack_tcp_timeout_established value 3600
# Уменьшить timeout для TIME_WAIT
set system sysctl parameter net.netfilter.nf_conntrack_tcp_timeout_time_wait value 30
commit
save
exit
# Для немедленного эффекта
sudo sysctl -w net.netfilter.nf_conntrack_max=524288Увеличение hashsize (требует перезагрузки):
# Добавить параметр модуля
sudo vi /etc/modprobe.d/nf_conntrack.conf
# Добавить:
options nf_conntrack hashsize=131072
# Перезагрузить модуль (осторожно! Сбросит все существующие соединения)
sudo rmmod nf_conntrack
sudo modprobe nf_conntrack
# Или перезагрузить систему
sudo rebootПроблема 5: OOM Killer убивает процессы
Симптомы:
- Система убивает процессы при нехватке памяти
- В логах сообщения “Out of memory: Kill process”
- Непредсказуемое поведение системы
Диагностика:
# Проверить логи OOM killer
dmesg | grep -i oom
journalctl -k | grep -i oom
# Проверить использование памяти
free -h
# Проверить swap
swapon --show
# Проверить OOM параметры
sysctl vm.panic_on_oom
sysctl vm.oom_kill_allocating_task
# Процессы с высоким OOM score
cat /proc/*/oom_score | sort -n | tail -10Решение:
configure
# Не делать panic при OOM (позволить убить процесс)
set system sysctl parameter vm.panic_on_oom value 0
# Увеличить swappiness если нужен swap
set system sysctl parameter vm.swappiness value 30
# Увеличить min_free_kbytes (резервировать больше памяти)
set system sysctl parameter vm.min_free_kbytes value 131072
commit
save
exitДобавление swap (если недостаточно RAM):
# Создать swap файл (1GB)
sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo chmod 600 /swap
sudo mkswap /swap
sudo swapon /swap
# Сделать постоянным
sudo vi /etc/fstab
# Добавить:
/swap none swap sw 0 0Лучшие практики (Best Practices)
1. Тестирование изменений
Всегда тестируйте перед сохранением:
configure
# Внести изменения
set system sysctl parameter <parameter> value <value>
# Применить
commit
# ТЕСТИРОВАТЬ СИСТЕМУ!
# Проверить:
# - Работоспособность сети
# - Доступность сервисов
# - Производительность
# - Логи на ошибки
# Если все работает - сохранить
save
# Если проблемы - откатить
rollback2. Документирование изменений
Используйте commit comments:
configure
set system sysctl parameter net.ipv4.tcp_rmem value '4096 131072 67108864'
commit comment "Increased TCP receive buffers for high-speed 10G link - Ticket #12345"
saveВедите changelog:
# Просмотр истории изменений
show system commit
show system commit diff 53. Постепенное внедрение
Не меняйте все параметры сразу:
# Плохо: 50 параметров одновременно
# Невозможно определить причину проблемы
# Хорошо: поэтапное внедрение
# Шаг 1: Безопасность (rp_filter, syn_cookies)
# Тест
# Шаг 2: TCP буферы
# Тест
# Шаг 3: Congestion control
# Тест4. Baseline измерения
Измеряйте ДО и ПОСЛЕ:
# Baseline перед изменениями
iperf3 -c server -t 60 > before.txt
netstat -s > netstat-before.txt
# Внести изменения sysctl
# Тест после изменений
iperf3 -c server -t 60 > after.txt
netstat -s > netstat-after.txt
# Сравнить результаты
diff netstat-before.txt netstat-after.txt5. Резервное копирование конфигурации
Backup перед критичными изменениями:
# Сохранить текущую конфигурацию
save /config/backup-before-sysctl-$(date +%Y%m%d).config
# Просмотр доступных backup
ls -lh /config/backup-*
# Восстановление из backup (если нужно)
load /config/backup-before-sysctl-20250115.config
commit
save6. Специфические параметры для сценариев
Не используйте универсальный конфиг для всех сценариев:
| Сценарий | Приоритеты | Ключевые параметры |
|---|---|---|
| Edge Router (DMZ) | Безопасность | rp_filter=1, syn_cookies=1, log_martians=1 |
| Core Router | Производительность | tcp_rmem/wmem (large), bbr, netdev_max_backlog |
| VPN Gateway | Туннелирование | tcp_mtu_probing=1, rp_filter=2, ip_no_pmtu_disc=0 |
| NAT Gateway | Conntrack | nf_conntrack_max (large), tcp_tw_reuse=1 |
| Lab/Testing | Мониторинг | log_martians=1, tcp_timestamps=1 |
7. Мониторинг после внедрения
Установите мониторинг ключевых метрик:
# Скрипт мониторинга sysctl параметров
#!/bin/bash
# /config/scripts/monitor-sysctl.sh
echo "=== Critical sysctl parameters ==="
echo "IP Forwarding: $(sysctl -n net.ipv4.ip_forward)"
echo "SYN Cookies: $(sysctl -n net.ipv4.tcp_syncookies)"
echo "RP Filter: $(sysctl -n net.ipv4.conf.all.rp_filter)"
echo "Conntrack Max: $(sysctl -n net.netfilter.nf_conntrack_max)"
echo "Conntrack Current: $(conntrack -C)"
echo "TCP Retransmits: $(netstat -s | grep -i retrans)"8. Осторожность с опасными параметрами
Параметры, которые могут сломать систему:
# ОПАСНО: Отключение IP forwarding на роутере
# set system sysctl parameter net.ipv4.ip_forward value 0
# ОПАСНО: Отключение всех ICMP (может сломать PMTU discovery)
# set system sysctl parameter net.ipv4.icmp_echo_ignore_all value 1
# ОПАСНО: kernel.panic = 0 (система зависнет при panic вместо reboot)
# set system sysctl parameter kernel.panic value 0
# ОПАСНО: vm.swappiness = 100 (постоянный swap, деградация производительности)
# set system sysctl parameter vm.swappiness value 1009. Соответствие требованиям безопасности
Стандарты безопасности (CIS, NIST):
# Минимальный набор для compliance
configure
# CIS Benchmark - Network Parameters
set system sysctl parameter net.ipv4.conf.all.send_redirects value 0
set system sysctl parameter net.ipv4.conf.default.send_redirects value 0
set system sysctl parameter net.ipv4.conf.all.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.default.accept_redirects value 0
set system sysctl parameter net.ipv4.conf.all.accept_source_route value 0
set system sysctl parameter net.ipv4.conf.default.accept_source_route value 0
set system sysctl parameter net.ipv4.icmp_echo_ignore_broadcasts value 1
set system sysctl parameter net.ipv4.icmp_ignore_bogus_error_responses value 1
set system sysctl parameter net.ipv4.conf.all.rp_filter value 1
set system sysctl parameter net.ipv4.conf.default.rp_filter value 1
set system sysctl parameter net.ipv4.tcp_syncookies value 1
set system sysctl parameter net.ipv4.conf.all.log_martians value 1
# Kernel hardening
set system sysctl parameter kernel.randomize_va_space value 2
set system sysctl parameter kernel.dmesg_restrict value 1
set system sysctl parameter kernel.kptr_restrict value 2
commit
save10. Версионность и совместимость
Учитывайте версию ядра:
# Проверить версию ядра
uname -r
# Некоторые параметры доступны только в новых версиях
# Например, tcp_bbr появился в Linux 4.9+
# Проверить доступность параметра
ls /proc/sys/net/ipv4/tcp_congestion_control
# Проверить доступные congestion control алгоритмы
sysctl net.ipv4.tcp_available_congestion_controlПолезные ресурсы и документация
Официальная документация
TCP/IP Tuning Guides
Security Hardening
Cloud-specific
Заключение
Правильная настройка параметров ядра через sysctl является критически важной частью оптимизации VyOS для конкретных сценариев использования. Основные выводы:
Ключевые принципы:
- Понимание параметров: Не изменяйте параметры, не понимая их влияния
- Тестирование: Всегда тестируйте изменения перед сохранением в production
- Мониторинг: Отслеживайте эффект изменений через метрики
- Документирование: Записывайте причины и результаты изменений
- Постепенность: Вносите изменения поэтапно, а не все сразу
Приоритеты по сценариям:
Edge Router (DMZ):
- Безопасность превыше всего (rp_filter, syn_cookies, no redirects)
- Умеренная производительность
- Логирование подозрительной активности
High-Performance Core Router:
- Максимальная пропускная способность (large buffers, BBR, optimized queues)
- Умеренная безопасность
- Минимальная latency
VPN Gateway:
- PMTU discovery для туннелей
- Loose rp_filter для asymmetric routing
- Оптимизированный congestion control для encrypted traffic
NAT Gateway:
- Максимум conntrack entries
- Fast connection reuse
- Large file descriptor limits
Рекомендации для облачных платформ:
Yandex Cloud:
- Используйте BBR для оптимальной производительности
- Учитывайте burst nature cloud networking
- Настройте large buffers для высокоскоростных каналов
VK Cloud:
- Приоритет на security hardening для DMZ роутеров
- Оптимизация conntrack для NAT workloads
- Баланс производительности и безопасности
Следуйте лучшим практикам, тестируйте изменения и адаптируйте конфигурацию под свои специфические требования для достижения оптимальной производительности и безопасности VyOS в вашей инфраструктуре.