Skip to content

Releases: R17a/Susanin.Keenetic

Susanin.Keenetic v0.3.10

Choose a tag to compare

@github-actions github-actions released this 20 Sep 12:38

Susanin.Keenetic v0.3.10

Установка (первый раз)

opkg update && opkg install ca-certificates ipset iptables conntrack
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

Установщик скачивает готовый архив под вашу архитектуру, определяет LAN/VPN и
(при наличии) OpenConnect, запрашивает подтверждение и запускает демон.
Существующие susanin.conf, vpn_always.txt, vpn_never.txt и кэш сохраняются.

Обновление

sh /opt/susanin/tools/susanin.sh update v0.3.10

update печатает installed → target, делает бэкап susanin.conf и
susanin.state в /opt/susanin/var/backup/, заменяет бинарь и скрипты,
не трогая etc/ и var/, затем перезапускает демон.
Версию после обновления видно первой строкой в susanin-agent status.

Удаление

sh /opt/susanin/tools/susanin.sh uninstall
sh /opt/susanin/tools/susanin.sh uninstall --purge

Что нового

  • Меньше «дёрганья» VPN-списка (ok_evict_misses). Раньше адрес мог
    вылететь из списка «идёт через VPN» после одного плохого наблюдения и тут же
    вернуться — список «мельтешил». Теперь адрес убирается только после нескольких
    сбоев подряд (по умолчанию 3). В логе будет одна сводка раз в ~5 минут, а не
    строка на каждое событие. Хотите как раньше — поставьте ok_evict_misses=1.
  • Быстрее заворачиваем «заглохший» HTTPS. Частая картина: сервер ответил, но
    данные почти не идут — так провайдер замедляет соединение. Теперь такой адрес
    сразу проверяется через VPN, не дожидаясь окна наблюдения. Проверки идут чаще:
    soft_interval по умолчанию снижен до 1 секунды.
  • Ограничитель лишних переводов в VPN (promo_per_min). Чтобы быстрый
    детект не завернул в VPN всё подряд, за минуту делается не больше 30 новых
    проб (настраивается; 0 — без ограничения).
  • Мессенджеры не «выпадают» из VPN. Telegram/WhatsApp держат соединение
    долго; раньше один «тихий» срез мог убрать адрес из списка VPN. Теперь — нет.
  • Диагностика одной командой. sh /opt/susanin/tools/diagnose.sh сам
    проверит, всё ли на месте (пакеты, настройки, правила, списки), и подскажет,
    что поправить.
  • Сменили или удалили VPN — перезапуск не нужен. susanin.sh reload
    перечитывает настройки, susanin.sh rescan заново находит LAN и VPN,
    обновляет конфиг и применяет изменения. Если VPN-интерфейс пропал, программа
    сама переключится на живой; если живых нет — пустит трафик напрямую и напишет
    об этом в лог.
  • Установщик сам предложит доустановить нужное. Если не хватает ipset,
    iptables, conntrack или сертификатов, установщик спросит, поставить ли их
    через opkg (флаг --deps — без вопроса).
  • Меньше строк в логе про списки. Домены без A-записи (частая история у CDN)
    больше не печатаются по строке каждый — будет одна сводка, а повторные неудачи
    проверяются реже (до 1 часа). Если у домена из vpn_always нет A-записи на
    самом домене, программа сама проверит поддомены — так адреса CDN чаще попадают
    в VPN.
  • DNS для разбора списков. Если системный DNS — 127.0.0.1 (NDM) или пуст,
    берётся адрес LAN-моста: в ряде сборок так надёжнее.
  • Правки vpn_always срабатывают сразу. Когда адрес только что переведён в
    VPN, старые прямые соединения к нему разрываются — клиент переподключается уже
    через туннель (для vpn_never так было и раньше).
  • Адрес из vpn_never не «прыгает» в VPN. Если адрес был в списке «всегда
    напрямую» и оттуда убран, какое-то время он не будет выучен в VPN.
  • Документация. Добавлены USER_GUIDE.md (руководство) и
    TROUBLESHOOTING.md (что делать, если не работает).

Диагностика

Если что-то работает не так — сначала запустите диагностику: проверит окружение,
настройки и списки, выдаст рекомендации:

sh /opt/susanin/tools/diagnose.sh

Для отправки полного отчёта (логи, состояние) — соберите и приложите вывод:

sh /opt/susanin/tools/report.sh
# или без установки:
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/v0.3.10/tools/report.sh | sh

Отчёт сохраняется в /opt/susanin/var/report.txt.

Сборки

  • архивы: susanin-keenetic-deploy-mipsel.tar.gz, …-mips.tar.gz,
    …-aarch64.tar.gz, …-armv7.tar.gz, …-x86_64.tar.gz и SHA256SUMS;
  • контейнер: ghcr.io/r17a/susanin.keenetic:v0.3.10 (+latest).

Проверено: mipsel — Keenetic Viva, KeeneticOS 5.1.4–5.1.5, Entware
(+ клиент OpenConnect). Остальные архитектуры собраны и приложены готовыми
архивами, но на живом железе не тестировались — сообщайте об ошибках в Issues.

OpenWRT openwrt-v0.3.10

Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Sep 12:39

OpenWRT-сборка Susanin.Keenetic openwrt-v0.3.10

Экспериментальная сборка для роутеров Keenetic / Netcraze, перепрошитых на
OpenWRT
. На живом железе не тестировалась — предварительный выпуск для проверки
сообществом. Для штатного KeeneticOS/Entware используйте релиз канала v*.

Установка

Онлайн (архитектура и версия определяются автоматически):

wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt-v0.3.10/install-openwrt.sh | sh -s -- --yes

--deps дополнительно поставит нужные пакеты через opkg (ipset,
conntrack-tools, iptables-legacy, ip-full, ca-bundle и kmods
kmod-ipset kmod-ipt-conntrack kmod-ipt-connmark kmod-ipt-tcp-mss); без него
установите их вручную.

Офлайн: возьмите архив под свою архитектуру (см. ниже), распакуйте и выполните
sh install-openwrt.sh.

Сервис: /etc/init.d/susanin enable && /etc/init.d/susanin start;
проверка: /usr/bin/susanin-agent status; лог: /var/lib/susanin/susanin.log.

Архитектуры

Архив SoC Устройства
susanin-openwrt-mipsel_24kc.tar.gz MT7620 / MT7621 / MT7628 большинство Keenetic/Netcraze (Start, 4G, Omni, Extra, Viva, Giga, Ultra)
susanin-openwrt-aarch64_cortex-a53.tar.gz MT7622 / MT7981 / MT7986 новые модели (ARM/filogic)

Сообщить о проблемах

Диагностика (запустите в момент проблемы, отчёт сохраняется в /tmp/susanin-report.txt):

wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt-v0.3.10/tools/owrt-report.sh | sh

Приложите вывод последней команды ([susanin] report saved: …) целиком.

Проверено: только сборка (компиляция). Поведение на устройстве не проверялось.

Susanin.Keenetic v0.3.9

Choose a tag to compare

@github-actions github-actions released this 17 Sep 14:41

Susanin.Keenetic v0.3.9

Установка (первый раз)

opkg update && opkg install ca-certificates ipset iptables conntrack
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

Установщик скачивает готовый архив под вашу архитектуру, определяет LAN/VPN и
(при наличии) OpenConnect, запрашивает подтверждение и запускает демон.
Существующие susanin.conf, vpn_always.txt, vpn_never.txt и кэш сохраняются.

Обновление

sh /opt/susanin/tools/susanin.sh update
sh /opt/susanin/tools/susanin.sh update v0.3.9

update печатает installed → target, делает бэкап susanin.conf и
susanin.state в /opt/susanin/var/backup/, заменяет бинарь и скрипты,
не трогая etc/ и var/, затем перезапускает демон.
Версию после обновления видно первой строкой в susanin-agent status.

Удаление

sh /opt/susanin/tools/susanin.sh uninstall
sh /opt/susanin/tools/susanin.sh uninstall --purge

Что нового

  • Версия сразу в status. susanin-agent status первой строкой печатает
    версию — отдельно запускать version больше не нужно.
  • Сборщик отчёта для обращений. sh /opt/susanin/tools/report.sh собирает
    диагностику и сохраняет файл /opt/susanin/var/report.txt — его удобно
    приложить в Issues, на форум или в Telegram.
  • Понятные ошибки запуска. Если программе не удалось создать свои правила
    фильтрации, в лог теперь пишется причина (например, «не найден ipset» или
    «не найден интерфейс nwg0»), а не общее «provisioning failed».
  • Проверка при старте. Программа проверяет, что установлены iptables,
    ipset, conntrack, ip и что VPN-интерфейс существует; если чего-то нет —
    пишет подсказку, что доустановить. Это упрощает первый запуск.
  • Меньше лишних повторов. Если правила не создались, попытки повторяются раз
    в минуту (раньше — каждые 15 секунд и с непонятным сообщением про «rebuild»).
  • Несколько VPN-подключений (фейловер). В конфиге можно перечислить несколько
    VPN-интерфейсов через запятую (например, egress_interface=nwg0,nwg1). Если
    активный VPN отключился, трафик автоматически пойдёт через следующий живой;
    если живых не осталось — напрямую.
  • Меньше записей на память роутера (disk_mode). Если программа установлена
    во внутреннюю память (NAND) — в том числе когда Entware/OPKG стоит на встроенном
    разделе — установщик включает режим soft: лог-файл не ведётся, бэкапы/архивы
    не создаются, а список выученных адресов сохраняется редко — раз в 12 часов
    (soft_state_interval). В обычном режиме (normal, обычно при установке на
    USB-флешку) лог ведётся и состояние сохраняется раз в 5 минут.
  • Списки применяются сразу. Если адрес добавлен в vpn_never («всегда
    напрямую»), уже открытые соединения к нему разрываются, чтобы клиент
    переподключился напрямую — иначе такие соединения подолгу оставались бы в VPN.
  • Предупреждение, если домен из vpn_never не разобрался. Список «всегда
    напрямую» работает по IP-адресам: программа находит адреса домена и добавляет
    их в список. Если адреса получить не удалось, правило не сработает и трафик к
    этому домену может уйти в VPN — теперь в лог пишется предупреждение.
  • Меньше мусора в списке выученных адресов (learn_exclude_ports). Для
    служебных портов (22, 23, 445, 554 и т.п.) больше не запоминаем адреса по
    одному неотвеченному запросу — так отсекается сетевой шум и сканирования.
    Обычные сайты (80/443/QUIC) учатся как раньше; если заблокированный сервис
    работает на нестандартном порту — добавьте его домен/IP в vpn_always.txt.

Диагностика

Если что-то не так — соберите отчёт (в момент проблемы) и приложите вывод:

sh /opt/susanin/tools/report.sh
# или без установки:
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/v0.3.9/tools/report.sh | sh

Отчёт сохраняется в /opt/susanin/var/report.txt.

Сборки

  • архивы: susanin-keenetic-deploy-mipsel.tar.gz, …-mips.tar.gz,
    …-aarch64.tar.gz, …-armv7.tar.gz, …-x86_64.tar.gz и SHA256SUMS;
  • контейнер: ghcr.io/r17a/susanin.keenetic:v0.3.9 (+latest).

Проверено: mipsel — Keenetic Viva, KeeneticOS 5.1.4–5.1.5, Entware
(+ клиент OpenConnect). Остальные архитектуры собраны и приложены готовыми
архивами, но на живом железе не тестировались — сообщайте об ошибках в Issues.

OpenWRT openwrt-v0.3.9

Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Sep 14:42

OpenWRT-сборка Susanin.Keenetic openwrt-v0.3.9

Экспериментальная сборка для роутеров Keenetic / Netcraze, перепрошитых на
OpenWRT
. На живом железе не тестировалась — предварительный выпуск для проверки
сообществом. Для штатного KeeneticOS/Entware используйте релиз канала v*.

Установка

Онлайн (архитектура и версия определяются автоматически):

wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt-v0.3.9/install-openwrt.sh | sh -s -- --yes

--deps дополнительно поставит нужные пакеты через opkg (ipset,
conntrack-tools, iptables-legacy, ip-full, ca-bundle и kmods
kmod-ipset kmod-ipt-conntrack kmod-ipt-connmark kmod-ipt-tcp-mss); без него
установите их вручную.

Офлайн: возьмите архив под свою архитектуру (см. ниже), распакуйте и выполните
sh install-openwrt.sh.

Сервис: /etc/init.d/susanin enable && /etc/init.d/susanin start;
проверка: /usr/bin/susanin-agent status; лог: /var/lib/susanin/susanin.log.

Архитектуры

Архив SoC Устройства
susanin-openwrt-mipsel_24kc.tar.gz MT7620 / MT7621 / MT7628 большинство Keenetic/Netcraze (Start, 4G, Omni, Extra, Viva, Giga, Ultra)
susanin-openwrt-aarch64_cortex-a53.tar.gz MT7622 / MT7981 / MT7986 новые модели (ARM/filogic)

Сообщить о проблемах

Диагностика (запустите в момент проблемы, отчёт сохраняется в /tmp/susanin-report.txt):

wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt-v0.3.9/tools/owrt-report.sh | sh

Приложите вывод последней команды ([susanin] report saved: …) целиком.

Проверено: только сборка (компиляция). Поведение на устройстве не проверялось.

Susanin.Keenetic v0.3.8

Choose a tag to compare

@github-actions github-actions released this 14 Sep 03:15

Susanin.Keenetic v0.3.8 — restore late-stall detection; CI fixes; list hysteresis; status counters

Что нового в этой версии

  • Откат кода по rate/late-stall-детект: потоки, которым DPI ТСПУ РКН
    отдал ответ снова уходят в VPN (SOFT TCP-LATE-STALL, QUIC-LATE-STALL);
    Пороги TCP-CLOSE/TCP-STALL снова rp <= 2 && rb < 256. Это возвращает
    автообучение CDN-поддоменов, из-за чего переставали работать превью/видео
    YouTube, а также медиа x.com/Insta — включая клиентов OpenConnect (oc0),
    где трафик к Fastly/Akamai-EDGE уходил DIRECT и тормозил.
    На vpn_always/vpn_never и wildcard-зоны не влияет;
  • hysteresis списков (vpn_always/vpn_never) считает интервалы, а не
    вызовы va_refresh/vn_refresh: раньше порог «2 обновления подряд»
    достигался за доли секунды (функция зовётся многократно за интервал) и churn
    не подавлялся;
  • vpn_never.txt: имена приводятся к нижнему регистру (как в vpn_always.txt) —
    дедуп и сравнение зон больше не зависят от регистра;
  • datapath.sh status: правильные размеры наборов (раньше показывало 125 вместо
    2682 — счётчик учитывал не все адреса);
  • susanin-agent status: размеры наборов верны и на больших объёмах (раньше могли
    занижаться), и в выводе виден набор susanin_never.

Установка (первый раз)

opkg update && opkg install ca-certificates
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

Обновление

sh /opt/susanin/tools/susanin.sh update
/opt/susanin/bin/susanin-agent version

OpenWRT openwrt-v0.3.8

Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Sep 10:08

OpenWRT-сборка Susanin.Keenetic openwrt-v0.3.8

Экспериментальная сборка для роутеров Keenetic / Netcraze, перепрошитых на
OpenWRT
. На живом железе не тестировалась — предварительный выпуск для проверки
сообществом.

Установка

Онлайн (архитектура и версия определяются автоматически):

wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt-v0.3.8/install-openwrt.sh | sh -s -- --yes

--deps дополнительно поставит нужные пакеты через opkg (ipset,
conntrack-tools, iptables-legacy, ip-full, ca-bundle, kmod-ipset kmod-ipt-conntrack kmod-ipt-connmark kmod-ipt-tcp-mss);
без него установите их вручную.

Сервис: /etc/init.d/susanin enable && /etc/init.d/susanin start;
проверка: /usr/bin/susanin-agent status; лог: /var/lib/susanin/susanin.log.

Офлайн: возьмите архив под свою архитектуру (см. ниже), распакуйте и выполните
sh install-openwrt.sh.

Архитектуры

Архив SoC Устройства
susanin-openwrt-mipsel_24kc.tar.gz MT7620 / MT7621 / MT7628 большинство Keenetic/Netcraze (Start, 4G, Omni, Extra, Viva, Giga, Ultra)
susanin-openwrt-aarch64_cortex-a53.tar.gz MT7622 / MT7981 / MT7986 новые модели (ARM/filogic)

Сообщить о проблемах

Диагностика (запустите в момент проблемы, отчёт сохраняется в /tmp/susanin-report.txt):

wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt-v0.3.8/tools/owrt-report.sh | sh

Приложите вывод последней команды ([susanin] report saved: …) целиком.

Проверено: только сборка (компиляция). Поведение на устройстве не проверялось.

Susanin.Keenetic v0.3.7

Choose a tag to compare

@github-actions github-actions released this 13 Sep 16:09

Susanin.Keenetic v0.3.7 — обновление информации и документации

Что нового

  • Изменения текстовые — код и поведение демона не менялись (относительно v0.3.6).

Установка (первый раз)

opkg update && opkg install ca-certificates
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

Обновление

sh /opt/susanin/tools/susanin.sh update
/opt/susanin/bin/susanin-agent version

Susanin.Keenetic v0.3.6

Choose a tag to compare

@github-actions github-actions released this 13 Sep 09:17

Susanin.Keenetic v0.3.6 — wildcard-зоны, конфликты, обслуживание, стабильные списки

Что нового в этой версии

  • wildcard-зоны *.example.com в vpn_always.txt и vpn_never.txt:
    покрывают домен и поддомены.
    Точная строка example.com по-прежнему означает только сам домен —
    поддомены обрабатываются адаптивно;
  • конфликт зон: если зона есть в обоих файлах или зоны пересекаются
    (например *.keenetic.ru и forum.keenetic.ru), приоритет у «напрямую»
    (vpn_never), в лог пишется предупреждение;
  • обслуживание: ротация лога (susanin.log >5 МБ →
    susanin.log.1.gz..3.gz) и архивация старых каталогов datapath-*
    в /opt/susanin/var/archive/;
  • меньше «дрожания» списков: адрес убирается из наборов только если он
    отсутствует 2 обновления подряд; per-IP записи pin/unpin перенесены в
    DEBUG (в INFO — только итоговая строка).

Установка (первый раз)

opkg update && opkg install ca-certificates
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

Обновление

sh /opt/susanin/tools/susanin.sh update
/opt/susanin/bin/susanin-agent version

Susanin.Keenetic v0.3.5

Choose a tag to compare

@github-actions github-actions released this 12 Sep 09:38

Susanin.Keenetic v0.3.5 — never-VPN список, forget, точнее обучение, исправлена работа с OpenConnect приложением

Логика

  • сайты, ответившие по основному каналу, больше не переводятся в VPN:
    убраны срабатывания TCP-CLOSE / TCP-STALL / QUIC-LATE-STALL для потоков,
    которые уже получили ответ. Кандидатами остаются только направления без
    ответа
    ; vpn_always.txt по-прежнему всегда через VPN.

Новое

  • список «всегда напрямую» (never VPN): /opt/susanin/etc/vpn_never.txt
    (домен / IPv4 / CIDR). Адреса попадают в ipset susanin_never, для которого в
    цепочке SUSANIN стоит RETURN до правил маркировки — они не попадают в
    ok/test и всегда идут напрямую (пример: px1.rapo.dev);
  • команда sh /opt/susanin/tools/susanin.sh forget <ip> — убрать адрес из кэша
    и наборов;
  • install.sh/update не перезаписывают существующие vpn_always.txt и
    vpn_never.txt.

OpenConnect

  • установщик находит работающий OpenConnect-сервер (ocserv, интерфейс oc0) и
    предлагает добавить его в маршрутизацию Susanin; при согласии добавляет
    интерфейс в lan_interfaces, а подсеть клиентов — в lan_subnets. Трафик
    клиентов обрабатывается как LAN; отдельные NAT-правила не нужны.

Установка (первый раз)

opkg update && opkg install ca-certificates
wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

или 

curl -fsSL https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh

Установщик скачивает готовый архив под вашу архитектуру, определяет LAN/VPN и
(при наличии) OpenConnect, запрашивает подтверждение и запускает демон.
Существующие susanin.conf, vpn_always.txt, vpn_never.txt и кэш сохраняются.

Обновление

Посмотреть текущую версию: /opt/susanin/bin/susanin-agent version
Автоматические обновление до актуальной версии: sh /opt/susanin/tools/susanin.sh update
Обновление до версии 0.3.5: sh /opt/susanin/tools/susanin.sh update v0.3.5

Проверено: mipsel — Keenetic Viva, KeeneticOS 5.1.4–5.1.5, Entware
(+ клиент OpenConnect). Остальные архитектуры уже собраны и приложены готовыми
архивами, но на живом железе не тестировались — сообщайте об ошибках в Issues.

Susanin.Keenetic v0.3.4

Choose a tag to compare

@github-actions github-actions released this 12 Sep 00:34

Susanin.Keenetic v0.3.4 — поддержка OpenConnect-сервера

Новое

  • установщик автоматически определяет OpenConnect-сервер (ocserv, интерфейс oc0)
    и спрашивает: OpenConnect server detected (oc0). Add it to Susanin routing? [y/N];
    при --yes добавляет без вопроса;
  • при добавлении в маршрутизацию попадают интерфейс (lan_interfaces) и подсеть
    клиентов (lan_subnets; берётся из ipv4-network или адреса oc0).

Проверено

  • Keenetic Viva, KeeneticOS 5.1.5, ocserv (родной Keenetic OpenConnect): телефон по
    сотовой сети подключается к роутеру, получает адрес из 172.16.5.0/24, и весь
    заблокированный трафик уходит в nwg0 через Susanin (в логе AUTO-SUSANIN … src=172.16.5.x,
    в conntrack mark=0x20000000);
  • отдельные NAT-правила для подсети OpenConnect не требуются — хватает штатного
    masquerade NDM.

Обновление

sh /opt/susanin/tools/susanin.sh update v0.3.4