1. База знаний
  2. Сеть и серверы

sysctl, BBR, MTU

Полные наборы тюнинга ядра для нод.

Пруфов: 32Обновлено 17.09.2026Исходник 3 мин чтения

1.1 BBR / congestion control

  • Канон включения BBR:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && sysctl -p

02.11.25, повтор 07.08.26.

  • BBR-скрипт Дмитрия: включает bbr2 при наличии, fq, tcp_fastopen=3, большие буферы, лог /var/log/network-optimize.log 02.11.25.
  • Теория: BBR даёт прирост при потерях/узких местах; при скорости Wi-Fi выше тарифа разницы нет 03.11.25.
  • Вместимость нод с BBR (Ivan-стата, 16.12.2025): 1/2 → BBR1 15–25 / BBR3 20–35 активных; 2/4 → 40–60/60–90; 4/8 → ~100/120–180; 8/16 → 200–250/300–400. BBR3 требует изменения ядра пруф.
  • Внимание: кастомное ядро BBR3 не имеет TC-модулей — шейпер на BBR3 не работает, откатывайте ядро 28.12.25.
  • BBR включать при перегрузе 500+ юзеров (дедик 2 CPU/128 GB уходит в 300% CPU) 26.04.26.
  • Ядро XanMod с BBRv3/BBRv1 — установка с проверкой GPG и подбором сборки под CPU, без автоперезагрузки (в составе node-diagnostic) 20.07.26.
  • Некоторые хостеры дают BBR/AES-NI включёнными: Beget (BBR вкл хостингом) пруф, VPSPay (BBR вкл, IPv6 off) пруф; у других выключено — просить ТП пруф.

1.2 Полные sysctl-наборы для нод

  • Вариант c0mrade (10.11.2025) пруф: disable IPv6, ip_forward=0, rp_filter=1, tcp_syncookies=1, fin_timeout=20, tcp_max_tw_buckets=262144, tcp_fastopen=3, tw_reuse=1, tcp_max_syn_backlog=8192, tcp_rmem/wmem = 4096 87380/65536 16777216, somaxconn=4096, netdev_max_backlog=5000, default_qdisc=fq, congestion_control=bbr, fs.file-max=2097152, vm.swappiness=0.
  • Исправленный вариант Zavulon для VPN-ноды (дословно) 10.11.25:
# IPv6: либо полностью отключить (disable_ipv6=1), либо forwarding=1, accept_ra=0, autoconf=0, redirects=0
net.ipv4.ip_forward = 1            # на маршрутизаторе нужна переадресация
net.ipv4.conf.all.rp_filter = 2    # loose: многосетевость/Docker/VPN, strict режет легитимный трафик
net.ipv4.tcp_fastopen = 1          # только клиент; серверная TFO конфликтует через NAT/прокси
# tcp_max_tw_buckets, tcp_fack, tcp_tw_reuse — удалить (устарело)
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_keepalive_time = 600 / intvl=60 / probes=5
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
kernel.yama.ptrace_scope = 1
kernel.randomize_va_space = 2
fs.suid_dumpable = 0
vm.swappiness = 10
fs.file-max = 2097152
  • Kernel hardening Решалы: rp_filter: 2 (strict) → 0 + src_valid_mark=1 — фикс «WireGuard/WARP handshake есть, но трафик не идёт»; после апдейта переприменить (sysctl -p /etc/sysctl.d/99-reshala-hardening.conf) 12.05.26. rp_filter = 2 (loose) сохраняет защиту от спуфинга и позволяет WG/WARP 07.05.26.
  • eBPF-шейпер не запустится при sysctl -w kernel.unprivileged_bpf_disabled=2 — ставить 0 пруф.
  • Redis в контейнере: WARNING Memory overcommit must be enabled → vm.overcommit_memory = 1 в /etc/sysctl.conf пруф.
  • Warp/WireGuard в контейнере RemnaNode: failed to disable ipv4 rp_filter ... read-only file system → в docker-compose cap_add: - NET_ADMIN 25.06.26; NET_ADMIN также нужен ноде 2.6.0+ для сброса сессий юзера пруф.
  • Сборка кабинета OOM: NODE_OPTIONS="--max-old-space-size=768"; swap: fallocate -l 1G /swapfile; chmod 600 /swapfile; mkswap /swapfile; swapon /swapfile пруф.

1.3 Отключение IPv6

nano /etc/sysctl.d/99-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
sudo sysctl --system

11.12.25; вариант без lo — 22.10.25. Одной строкой:

echo -e "\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf > /dev/null && sudo sysctl -p
  • Для чего: шортсы плохо грузятся пруф; некорректное гео (NL→Украина) пруф; у 90% хостеров кривой IPv6, warp пытается идти через него пруф; геометки IPv6/IPv4 расходятся — грохнуть IPv6 на ноде пруф. IPv6 на нодах в РФ выключать по умолчанию 17.12.25.

1.4 MTU

  • Docker MTU 1350 — рабочее значение в compose бота/панели пруф; driver_opts: com.docker.network.driver.mtu: 1350 пруф.
  • Телега не работает (через раз) — пробовать MTU 1380 пруф; MTU 1440 на активном интерфейсе — «с мобильного ожило» пруф.
  • Hysteria2: минимально допустимый MTU 1308; с 1280 не заведётся, с 1420 заводится 14.07.26.