# Sysctl - Параметры ядра Linux

> Настройка параметров ядра Linux через sysctl в VyOS - оптимизация производительности, сети и безопасности для облачных сред

Source: https://opennix.org/docs/vyos/system/vyos-sysctl/


Данная страница описывает настройку параметров ядра 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/                    # Устройства
```

## Базовая конфигурация

### Синтаксис команды

```bash
set system sysctl parameter <parameter-name> value <value>
```

**Формат параметра:**
- Точечная нотация: `net.ipv4.ip_forward`
- Слэш нотация (в `/proc/sys/`): `/proc/sys/net/ipv4/ip_forward`
- В VyOS используется только точечная нотация

### Основные примеры

#### Включение IP forwarding для роутера

```bash
# 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 (безопасность)

```bash
# Запретить принимать 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)

```bash
# 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 буферов

```bash
# Минимальный, базовый и максимальный размеры (в байтах)
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

```bash
# Включить 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:**

```bash
# Включить 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 16777216
```

**TCP Congestion Control:**

```bash
# Алгоритм 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:**

```bash
# Время до начала 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 3
```

**TCP Timestamps:**

```bash
# Включить TCP timestamps (RFC 1323)
set system sysctl parameter net.ipv4.tcp_timestamps value 1
```

**TCP Fast Open:**

```bash
# Включить TCP Fast Open (TFO)
# 1 = client, 2 = server, 3 = both
set system sysctl parameter net.ipv4.tcp_fastopen value 3
```

#### TCP Security Parameters

**SYN Flood Protection:**

```bash
# Включить 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 2
```

**TCP Reuse and Recycle:**

```bash
# Разрешить повторное использование 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 65536
```

#### ICMP Parameters

```bash
# Игнорировать 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 0
```

#### Reverse Path Filtering (Anti-Spoofing)

```bash
# 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 2
```

#### ARP Parameters

```bash
# Время жизни 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 1024
```

### 2. Сетевые параметры IPv6 (net.ipv6.*)

#### IPv6 Forwarding

```bash
# Включить IPv6 forwarding
set system sysctl parameter net.ipv6.conf.all.forwarding value 1
set system sysctl parameter net.ipv6.conf.default.forwarding value 1
```

#### IPv6 Security

```bash
# Запретить 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 0
```

#### IPv6 Autoconfiguration

```bash
# Отключить 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 (если не используется)

```bash
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 1
```

### 3. Core Network Parameters (net.core.*)

#### Network Buffers

```bash
# Максимальный размер 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 25165824
```

#### Network Device Queue

```bash
# Максимальная длина очереди пакетов для обработки
set system sysctl parameter net.core.netdev_max_backlog value 5000

# Бюджет на обработку пакетов за один poll
set system sysctl parameter net.core.netdev_budget value 600
```

#### Somaxconn

```bash
# Максимальный backlog для listen() системного вызова
# Важно для высоконагруженных веб-серверов
set system sysctl parameter net.core.somaxconn value 4096
```

### 4. Virtual Memory (vm.*)

#### Swappiness

```bash
# Агрессивность использования swap (0-100)
# 0 = минимум swap, 100 = активно использовать swap
# Рекомендуется: 10 для серверов, 60 для desktop

set system sysctl parameter vm.swappiness value 10
```

#### Cache Pressure

```bash
# Давление на освобождение кэша (0-100)
# Меньше значение = больше кэша сохраняется
set system sysctl parameter vm.vfs_cache_pressure value 50
```

#### Dirty Memory

```bash
# Процент памяти для 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 500
```

#### OOM (Out of Memory) Killer

```bash
# 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 0
```

### 5. File System (fs.*)

#### File Descriptors

```bash
# Максимальное количество открытых файлов (system-wide)
set system sysctl parameter fs.file-max value 2097152

# Максимум inotify watches (для мониторинга файлов)
set system sysctl parameter fs.inotify.max_user_watches value 524288
```

#### AIO (Asynchronous I/O)

```bash
# Максимум асинхронных IO requests
set system sysctl parameter fs.aio-max-nr value 1048576
```

### 6. Kernel Parameters (kernel.*)

#### Kernel Panic

```bash
# Автоматическая перезагрузка после panic (секунды)
# 0 = не перезагружаться
set system sysctl parameter kernel.panic value 10

# Panic при kernel oops
set system sysctl parameter kernel.panic_on_oops value 1
```

#### Core Dumps

```bash
# Шаблон имени core dump файла
set system sysctl parameter kernel.core_pattern value '/tmp/core-%e-%p-%t'
```

#### PID Max

```bash
# Максимальный PID (Process ID)
set system sysctl parameter kernel.pid_max value 65536
```

#### SysRq

```bash
# Включить SysRq magic keys (для аварийного управления)
# 1 = enabled, 0 = disabled
set system sysctl parameter kernel.sysrq value 1
```

#### Address Space Layout Randomization (ASLR)

```bash
# 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)

Настройка параметров безопасности для защиты от типовых атак.

```bash
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).

```bash
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: Оптимизация памяти для роутера

Настройка параметров виртуальной памяти для сетевого устройства.

```bash
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).

```bash
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.

```bash
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:**

```bash
# Проверка 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.

```bash
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:**

```bash
# Проверка 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.

```bash
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

```bash
# Показать все параметры 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

```bash
# Показать все настроенные параметры sysctl в VyOS
show configuration system sysctl

# Показать в формате set commands
show configuration commands | match sysctl

# Показать конкретный параметр
show configuration system sysctl parameter net.ipv4.ip_forward
```

### Применение параметров вручную (временно)

```bash
# Применить параметр без изменения конфигурации (до перезагрузки)
sudo sysctl -w net.ipv4.ip_forward=1

# Применить из файла
sudo sysctl -p /etc/sysctl.d/99-vyos.conf

# Загрузить все конфигурации sysctl
sudo sysctl --system
```

### Мониторинг сетевой производительности

```bash
# 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
```

### Проверка буферов и очередей

```bash
# Текущие размеры буферов
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
```

### Мониторинг памяти

```bash
# Использование памяти
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
```

### Проверка файловых дескрипторов

```bash
# Текущее использование 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/`

**Диагностика:**

```bash
# Проверить конфигурацию 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
```

**Возможные причины:**

1. **Некорректное имя параметра**

```bash
# Неправильно (underscores вместо dots)
set system sysctl parameter net_ipv4_ip_forward value 1

# Правильно
set system sysctl parameter net.ipv4.ip_forward value 1
```

2. **Параметр не существует в текущем ядре**

```bash
# Проверить доступность параметра
ls -la /proc/sys/net/ipv4/ | grep ip_forward
```

3. **Модуль ядра не загружен**

```bash
# Некоторые параметры требуют модулей
# Например, nf_conntrack для conntrack параметров
lsmod | grep nf_conntrack

# Загрузить модуль если нужно
sudo modprobe nf_conntrack
```

**Решение:**

```bash
# 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 не улучшается

**Диагностика:**

```bash
# Проверить примененные параметры
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
```

**Возможные причины:**

1. **net.core.rmem_max / wmem_max меньше чем tcp_rmem / tcp_wmem максимумы**

```bash
# Проблема: 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
```

2. **Congestion control не оптимизирован**

```bash
# BBR может быть недоступен
sysctl net.ipv4.tcp_available_congestion_control

# Если BBR не в списке, использовать cubic
configure
set system sysctl parameter net.ipv4.tcp_congestion_control value 'cubic'
commit
save
```

3. **QDisc не оптимизирован для BBR**

```bash
# Для BBR требуется fq qdisc
sysctl net.core.default_qdisc

configure
set system sysctl parameter net.core.default_qdisc value 'fq'
commit
save
```

4. **NIC offloading отключен**

```bash
# Проверить 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:**

1. **Загрузиться в single user mode:**

```bash
# При загрузке нажать 'e' в GRUB menu
# Добавить к строке linux:
linux ... single init=/bin/bash

# Загрузиться
```

2. **Откатить изменения:**

```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
```

3. **Альтернатива: загрузиться с предыдущей конфигурации:**

```bash
# При загрузке VyOS выбрать предыдущий commit из boot menu
# VyOS автоматически откатится к предыдущей рабочей конфигурации
```

**Профилактика:**

```bash
# Всегда тестировать критичные изменения перед 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

**Диагностика:**

```bash
# Проверить текущее использование 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
```

**Решение:**

```bash
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 (требует перезагрузки):**

```bash
# Добавить параметр модуля
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"
- Непредсказуемое поведение системы

**Диагностика:**

```bash
# Проверить логи 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
```

**Решение:**

```bash
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):**

```bash
# Создать 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. Тестирование изменений

**Всегда тестируйте перед сохранением:**

```bash
configure

# Внести изменения
set system sysctl parameter <parameter> value <value>

# Применить
commit

# ТЕСТИРОВАТЬ СИСТЕМУ!
# Проверить:
# - Работоспособность сети
# - Доступность сервисов
# - Производительность
# - Логи на ошибки

# Если все работает - сохранить
save

# Если проблемы - откатить
rollback
```

### 2. Документирование изменений

**Используйте commit comments:**

```bash
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:**

```bash
# Просмотр истории изменений
show system commit
show system commit diff 5
```

### 3. Постепенное внедрение

**Не меняйте все параметры сразу:**

```bash
# Плохо: 50 параметров одновременно
# Невозможно определить причину проблемы

# Хорошо: поэтапное внедрение
# Шаг 1: Безопасность (rp_filter, syn_cookies)
# Тест
# Шаг 2: TCP буферы
# Тест
# Шаг 3: Congestion control
# Тест
```

### 4. Baseline измерения

**Измеряйте ДО и ПОСЛЕ:**

```bash
# 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.txt
```

### 5. Резервное копирование конфигурации

**Backup перед критичными изменениями:**

```bash
# Сохранить текущую конфигурацию
save /config/backup-before-sysctl-$(date +%Y%m%d).config

# Просмотр доступных backup
ls -lh /config/backup-*

# Восстановление из backup (если нужно)
load /config/backup-before-sysctl-20250115.config
commit
save
```

### 6. Специфические параметры для сценариев

**Не используйте универсальный конфиг для всех сценариев:**

| Сценарий | Приоритеты | Ключевые параметры |
|----------|------------|-------------------|
| 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. Мониторинг после внедрения

**Установите мониторинг ключевых метрик:**

```bash
# Скрипт мониторинга 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. Осторожность с опасными параметрами

**Параметры, которые могут сломать систему:**

```bash
# ОПАСНО: Отключение 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 100
```

### 9. Соответствие требованиям безопасности

**Стандарты безопасности (CIS, NIST):**

```bash
# Минимальный набор для 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
save
```

### 10. Версионность и совместимость

**Учитывайте версию ядра:**

```bash
# Проверить версию ядра
uname -r

# Некоторые параметры доступны только в новых версиях
# Например, tcp_bbr появился в Linux 4.9+

# Проверить доступность параметра
ls /proc/sys/net/ipv4/tcp_congestion_control

# Проверить доступные congestion control алгоритмы
sysctl net.ipv4.tcp_available_congestion_control
```

## Полезные ресурсы и документация

### Официальная документация

- [VyOS Documentation - Sysctl](https://docs.vyos.io/en/latest/configuration/system/sysctl.html)
- [Linux Kernel Documentation - sysctl](https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt)
- [Red Hat - Tuning Network Performance](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-networking-configuration_tools)

### TCP/IP Tuning Guides

- [Linux TCP Tuning Guide](https://fasterdata.es.net/host-tuning/linux/)
- [BBR Congestion Control](https://queue.acm.org/detail.cfm?id=3022184)
- [High Performance Browser Networking](https://hpbn.co/)

### Security Hardening

- [CIS Benchmark for Linux](https://www.cisecurity.org/benchmark/distribution_independent_linux)
- [NIST Security Configuration Checklist](https://www.nist.gov/programs-projects/security-configuration-checklists-program)
- [Linux Kernel Security Subsystem](https://www.kernel.org/doc/html/latest/admin-guide/security.html)

### Cloud-specific

- [Yandex Cloud Network Performance](https://cloud.yandex.ru/docs/compute/concepts/performance-levels)
- [VK Cloud Networking](https://mcs.mail.ru/docs/networks)

## Заключение

Правильная настройка параметров ядра через sysctl является критически важной частью оптимизации VyOS для конкретных сценариев использования. Основные выводы:

### Ключевые принципы:

1. **Понимание параметров**: Не изменяйте параметры, не понимая их влияния
2. **Тестирование**: Всегда тестируйте изменения перед сохранением в production
3. **Мониторинг**: Отслеживайте эффект изменений через метрики
4. **Документирование**: Записывайте причины и результаты изменений
5. **Постепенность**: Вносите изменения поэтапно, а не все сразу

### Приоритеты по сценариям:

**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 в вашей инфраструктуре.

