| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Модульный тулкит для VPN/Linux-ноды (заточен под стек Remnawave): диагностика, оптимизация сети, защита, per-IP шейпер полосы, установка ноды/ядра с BBRv3. Диагностика — компактный дашборд с прогресс-баром, сводкой и вердиктом; фиксы вынесены в отдельные модули с явным откатом.
NODE DIAGNOSTIC v4.4.0 · toolkit ───────────────────────────────────────────────────── [ 1/27] ✓ Идентификация host.example.com · Helsinki/FI · ~2ms→Tallinn [ 2/27] ✓ CPU и нагрузка 2c · load 0.05 · idle 94% · steal 0% [ 4/27] ⚠ PSI (давление) cpu 0.1 · mem 0.0 · io 12.3 [ 6/27] ✓ TCP congestion bbr + cake [ 7/27] ⚠ TCP tuning mtu_probing=0 [10/27] ⚠ UDP-ошибки RcvbufErrors 2043 [14/27] ✗ Speed: 1-flow 21 Mbit/s ...
| Команда | Что делает | Применяет? |
|---|---|---|
| diagnose | 27 чеков: система, сеть, скорость, сервисы, репутация IP, Xray/Remnanode | — (только читает) |
| optimize | sysctl-тюнинг, BBR+cake, FD-лимиты, RPS/RFS/XPS, NIC, MSS clamp, irqbalance, journald, zram | да (namespaced drop-in) |
| protect | firewall под Remnawave, fail2ban, SSH-хардненинг, DDoS-хардненинг | нет — только генерирует файлы |
| shape | per-IP шейпер полосы (eBPF/EDT): лимит DL/UL на клиента, whitelist, dynamic-штраф | да (tc clsact + BPF, свой off) |
| bbr3 | ядро XanMod для TCP BBRv3 (mainline даёт только v1) | да, но без автоперезагрузки |
| install | установка ноды Remnawave / Selfsteal / NetBird / мониторинга | да (по подтверждению) |
| rollback | снять всё, что наложил optimize | да |
node-diagnostic.sh точка входа: меню + диспетчер команд install.sh bootstrap-установщик (curl|bash) lib/common.sh палитра, детекторы (virt/psABI/ssh), backup, namespaced drop-in, dry-run, ensure_pkg modules/ diagnose.sh 27 чеков, дашборд, вердикт, рекомендации optimize.sh сетевой/системный тюнинг protect.sh защита ноды (генерация артефактов) bbr3.sh установка XanMod (BBRv3) rollback.sh откат оптимизаций install.sh установка ноды/Selfsteal/NetBird/мониторинга shape.sh per-IP eBPF-шейпер (оркестратор) nd-shaper.bpf.c BPF-программа шейпера (clsact + EDT) shape_ctrl.py программирование BPF-карт через bpftool
Одной командой:
curl -sSL https://raw.githubusercontent.com/Case211/node-diagnostic/main/install.sh | sudo bashСкачивает репозиторий в /opt/node-diagnostic; в терминале сразу открывает меню. Переопределяемо через env: ND_REF (ветка/тег), ND_DEST (каталог).
Или вручную (тулкит модульный — нужен весь репозиторий):
git clone https://github.com/Case211/node-diagnostic
cd node-diagnostic
sudo bash node-diagnostic.sh # интерактивное менюЗависимости диагностики (mtr, dig, ethtool, conntrack, jq и т.д.) ставятся сами через apt/dnf/yum/apk.
sudo bash node-diagnostic.sh # меню (диагностика, если ввод не TTY)
sudo bash node-diagnostic.sh diagnose -q # быстрая диагностика ~1 мин
sudo bash node-diagnostic.sh diagnose --json # машиночитаемый JSON (для агрегации по флоту)
sudo bash node-diagnostic.sh optimize --all # весь тюнинг
sudo bash node-diagnostic.sh optimize --from-findings # только фиксы по находкам диагностики
sudo bash node-diagnostic.sh optimize --dry-run # показать, что применил бы
sudo bash node-diagnostic.sh protect --panel-ip 1.2.3.4 --node-port 2222
sudo bash node-diagnostic.sh bbr3 --install # XanMod (нужен reboot); --level 2 если CPU маскирован
sudo bash node-diagnostic.sh install monitoring # нода/Selfsteal/NetBird/мониторинг
sudo bash node-diagnostic.sh shape on # включить eBPF-шейпер
sudo bash node-diagnostic.sh shape rule 1 443 50 20 # порт 443: 50 Mbit DL / 20 UL на каждый IP
sudo bash node-diagnostic.sh rollback # откат оптимизаций
sudo bash node-diagnostic.sh status # что наложено на систему, ядро, cc/qdiscТиповой поток: diagnose → он сохраняет находки → optimize --from-findings применяет только релевантное. Для флота: diagnose --json на каждой ноде, сводишь в одну картину.
Каждый модуль запускается и самостоятельно: sudo bash modules/optimize.sh --sysctl.
Система — CPU/память/load/softirq, CPU steal (оверселл VPS/шумный сосед), PSI (/proc/pressure — затык ядра под нагрузкой), NIC drops/single-queue, ring buffers, ethtool offloads. Сеть — TCP congestion + qdisc (+ проверка живых bbr-сокетов), буферы, conntrack, UDP RcvbufErrors (дропы до приложения — QUIC/Hysteria2/TUIC), MSS-коллапс по живым сокетам, accept-queue backlog, DNS, PMTU (бинпоиск с защитой от false-negative на лоссе), туннели (WireGuard/NetBird/Tailscale/OpenVPN/IPsec), loss/latency до Google и DNS, MTR с худшим хопом, UDP/QUIC/HTTP-3, IPv6. Производительность — 1-flow (Cachefly), 4-flow, мульти-CDN (детект ASN-троттлинга), bufferbloat (ping под нагрузкой), variance. Сервисы — reachability + TTFB для 19 популярных (YouTube/Netflix/Twitch/TikTok/Telegram/Discord/ChatGPT/Claude/Gemini/Spotify/…); различает 200 / блок (403/429) / unreachable. Репутация IP — Cloudflare colo, гео-кросс-чек по 3 базам, реальная локация по latency до IX, Google CAPTCHA-проба, reverse DNS, «датацентр vs резидентский». Xray/Remnanode — версия, ресурсы контейнера, ошибки в логах, рестарты. Открытые порты — публичные листенеры (ss): docker-API (2375/2376), голые БД (postgres/mysql/redis/mongo/…) и нестандартные порты на 0.0.0.0/[::] — частая дыра, через которую ломают ноду.
Всё пишется в namespaced drop-in (/etc/sysctl.d/99-node-diagnostic-*.conf, node-diagnostic-*.service), поэтому откат детерминированный (rollback), а не восстановление дампа.
optimize --all включает всё выше, кроме zram (он --zram). optimize сам доставляет свои зависимости (iproute2/ethtool/iptables).
Firewall на удалённой ноде может отрезать SSH, поэтому модуль ничего не применяет — пишет готовые артефакты в каталог и даёт пошаговый APPLY.txt с защитой от лок-аута (авто-откат правил через systemd-run таймер).
Генерируется:
sudo bash node-diagnostic.sh protect --panel-ip <IP_панели> --node-port <NODE_PORT>
# → /root/node-diagnostic-protect/ (открыть APPLY.txt)Из меню то же самое без флагов: пункт [3] спросит IP панели и NODE_PORT (Enter — автодетект/плейсхолдер).
Mainline-ядро отдаёт только BBRv1; BBRv3 приходит с кастомным ядром XanMod. Модуль:
sudo bash node-diagnostic.sh bbr3 --status # что сейчас
sudo bash node-diagnostic.sh bbr3 --install --dry-run # план без установки
sudo bash node-diagnostic.sh bbr3 --install # затем reboot вручнуюКаждый клиентский IP получает независимый лимит DL/UL под правилом порта; whitelist обходит шейпинг; опц. dynamic-режим со штраф-рейтом абузеру. BPF-программа (nd-shaper.bpf.c) вешается на tc clsact: download = EDT (skb->tstamp) на egress, upload = token-bucket drop на ingress. Карты программируются через bpftool (shape_ctrl.py).
sudo bash node-diagnostic.sh shape on # собрать BPF + прицепить (+ systemd на boot)
sudo bash node-diagnostic.sh shape rule 1 443,8443 50 20 # порты → 50 Mbit DL / 20 UL на каждый IP
sudo bash node-diagnostic.sh shape rule 2 all 100 50 --dynamic # все порты, штраф абузеру
sudo bash node-diagnostic.sh shape wl 10.0.0.5 # IP без лимита
sudo bash node-diagnostic.sh shape status # активные правила
sudo bash node-diagnostic.sh shape off # снятьТребует ядро Linux ≥5.4 (EDT/clsact) и clang/bpftool/libbpf-dev (ставятся сами). Порт из DonMatteoVPN/Reshala-Remnawave-Bedolaga (MIT). Снимается своим shape off (в rollback не входит).
Пункт меню [7] и команда install. Внешние установщики запускаются только после подтверждения (показ команды + y/N).
sudo bash node-diagnostic.sh install node # нода Remnawave (DigneZzZ/remnawave-scripts)
sudo bash node-diagnostic.sh install selfsteal # Selfsteal
sudo bash node-diagnostic.sh install netbird # NetBird + setup-key (спросит ключ)
sudo bash node-diagnostic.sh install monitoring # cAdvisor + node_exporter + vmagent → VictoriaMetricsМониторинг ставится точно по гайду wiki.egam.es: спрашивает имя инстанса и IP сервера мониторинга (NetBird) для remoteWrite, всё слушает 127.0.0.1.
sudo bash node-diagnostic.sh rollback # снять sysctl drop-in, systemd-юниты, limits, MSS clamp
sudo bash node-diagnostic.sh rollback --dry-run # показать, что снял быНе входит: ядро XanMod (apt purge 'linux-xanmod*' && update-grub && reboot), firewall/fail2ban/sshd (generate-only — откат в их APPLY.txt) и eBPF-шейпер (shape off).
CI гоняет: shellcheck (--severity=warning), компиляцию BPF-шейпера (clang -target bpf), smoke на Ubuntu-runner/22.04/24.04/Debian 12/Alpine 3.19 и integration (реальное optimize→verify→rollback→protect/nft -c) в privileged-контейнерах Ubuntu 24.04 + Debian 12.
MIT.
| Back | FazBrowse Home | New Git URL |