Skip to content

v3.6 — node-stack observability + supply-chain hardening - #14

Merged
jestivald merged 11 commits into
mainfrom
v3.6-node-observability
Jul 1, 2026
Merged

v3.6 — node-stack observability + supply-chain hardening#14
jestivald merged 11 commits into
mainfrom
v3.6-node-observability

Conversation

@jestivald

Copy link
Copy Markdown
Owner

v3.6 — наблюдаемость стека ноды + supply-chain-хардинг

Read-only-сенсоры и релиз-гигиена. Поведение защиты/тюнинга по умолчанию не меняется; все тяжёлые новшества opt-in. Впервые репозиторий получает теги/релизы (v2.0…v3.6) и подписи модулейNA_REF=<тег> из README теперь рабочий, а не пример.

Релиз-гигиена

  • Аннотированные теги v2.0…v3.5 проставлены задним числом по merge-коммитам + GitHub Releases с выдержками из CHANGELOG. NA_REF=v3.6 в README/install.sh — рабочий.
  • minisign-подписи модулей (.minisig в дереве). NA_REQUIRE_SIG=1 + NA_MINISIGN_PUBKEY теперь реально применимы; публичный ключ в README. Добавлен RELEASING.md.

Supply-chain

  • CrowdSec из пиннингованного APT-репо (packagecloud) с проверкой полного отпечатка ключа вместо curl install.crowdsec.net | bash. Фоллбэк suite (debian→bookworm, ubuntu→noble для отсутствующих trixie/26.04), last-resort — официальный установщик с громким warn. CROWDSEC_PROBE=1 для CI/ops.
  • XanMod-репо переведён на https.
  • [security] Закрыт обход проверки GPG-подписи в install.sh: NA_REQUIRE_SIG=1 в gpg-режиме судил по человекочитаемому выводу (grep <fpr>), а не по --status-fd/VALIDSIG — BAD-подпись с валидной .asc настоящего ключа проходила бы. minisign-режим не затронут.

Наблюдаемость (diagnose + --json для na-panel)

  • Сенсор remnanode: статус/RestartCount/SPAWN_ERROR за час (ловит коллизию node-address в панели).
  • Сроки TLS-сертификатов (LE/acme.sh/NA_CERT_PATHS), warn <14 дн / fail <7 дн.
  • Свежесть fleet-sync/blocklist (штамп времени успешного синка → протухший токен больше не молчит за last-known-good).
  • IPv6 default-route и UDP RcvbufErrors (QUIC/Hysteria2).
  • --json дополнен: na_version, hostname, uptime_s, load1, mem_used_pct, WAN rx/tx-байты, ipv6_default, udp_rcvbuf_errors, remnanode_*, fleet_sync_age_s, blocklist_age_s, cert_min_days.

Тюнинг и защита

  • QDISC=fq|fq_codel|cake (opt-in) — cake против bufferbloat; дефолт fq не меняется.
  • LRO off в NIC-тюнинге (ломает форвардинг на bare-metal).
  • REMNAWAVE_NODES_URL — fleet-sync без API-токена на ноде (blast-radius): статический список нод за basic-auth.
  • NA_VERSION — единый источник версии во всех --json (version-drift по флоту).
  • Авто-ремонт dpkg в apt_install (битый dpkg — частый кейс на чужих нодах).

Фиксы (из ревью)

  • detect_virt возвращал none\nnone на bare-metal → битый diagnose --json на дедиках.
  • Team Cymru ASN-обогащение было мёртвым (guard матчил только заголовок) → top_asn/гео всегда пустые.
  • DRY_RUN=1 в оптимизаторе молча выполнял реальные мутации → теперь честно отказывает.
  • Датчик whitelist в diagnose считал только v4 (ложное «whitelist пуст» на v6-only).
  • Мелочи: ulimit=unlimited не ломает JSON; шапка protect.sh показывала старые дефолты.

CI

Матрица +ubuntu:26.04; CROWDSEC_PROBE; jq-валидность всех --json; na-report --proxyware --json — одна строка; na_version присутствует; DRY_RUN fleet-sync через NODES_URL.

🤖 Generated with Claude Code

jestivald added a commit that referenced this pull request Jul 1, 2026
@jestivald
jestivald merged commit 363ab25 into main Jul 1, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant