sysctl, BBR, MTU
Полные наборы тюнинга ядра для нод.
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- BBR-скрипт Дмитрия: включает bbr2 при наличии, fq,
tcp_fastopen=3, большие буферы, лог/var/log/network-optimize.log02.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-composecap_add: - NET_ADMIN25.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 --system11.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.