Перейти к содержанию

R17a

Участники форума
  • Постов

    25
  • Зарегистрирован

  • Посещение

Весь контент R17a

  1. Если я правильно прочитал, то "душат CDN Cloudflare", поэтому у нас
  2. Что-то в первый раз про такую проблему слышу.
  3. Мой проект остаётся на чистом С(Си), во благо ресурсов железа. Кому что удобнее, ждём и Ваших решений. Не зря в "соседней теме" писали, что "Конкуренция это хорошо".
  4. Релиз Susanin.Keenetic v0.4.0 Что нового Релиз 0.4.0: Xray/VLESS как egress, веб-панель, профили маршрутизации, резервный egress, DNS-снифинг и .ipk-пакеты. Критичные исправления Клиенты серверных VPN (OpenConnect oc+, qWDTT) снова доходят до туннеля. Политика Keenetic filter/FORWARD — DROP, а разрешения в интерфейс «Дополнительного подключения» у них нет: метка ставилась, но пакет умирал в FORWARD (в POSTROUTING на egress — 0). Теперь datapath.sh добавляет filter FORWARD -m mark --mark <ok|test|профиль>/<mask> -j ACCEPT (снимает в down), а backend_ready() проверяет это правило. Режим датаплейна больше не «съезжает» на старте. При egress_type=tproxy и первом интерфейсе в egress_interface агент трактовал это как смену режима и снимал tproxy-правила; backend_ready() при этом требовал их по конфигу — бесконечный цикл data plane missing каждые 5–13 с, с resync_sets()/flush (ok_tcp 507↔252, ok_net 19↔6) и окном без пинов vpn_always. Теперь режим берётся из фактического состояния, при tunnel_up восстанавливается default dev <iface> в таблице, а на re-provisioning нет flush. Отключение VPN-подключения не вызывает цикл re-provisioning. backend_ready() больше не требует default в таблице, когда ни одного интерфейса-кандидата нет (ядро удаляет маршрут вместе с интерфейсом): быстрая проверка и NDM-сверка работают только при tunnel_up, маршрут возвращается сам при восстановлении туннеля. Новое от 0.3.10 Xray/VLESS+REALITY как egress (egress_type=tproxy): TCP — REDIRECT, UDP — собственный релей (TPROXY + SOCKS5 UDP ASSOCIATE); tproxy — полноправный кандидат в egress_interface с SOCKS-пробой и fail-safe. Веб-панель в агенте: статус, конфиг, списки (drag&drop и Memo-редактор), профили, действия reload/rescan/restart/reset; мобильная вёрстка, токен/cookie. Профили маршрутизации: до 4, profiles.d/<name>.conf, geo_url, авто-пин, failover на профиль. Master/Slave с failback, независимый health по каждому egress, race-пробинг, watchdog и лимиты памяти Xray. Автообучение: DPI-RST/DPI-STALL, класс media (IPTV), CDN-агрегация, «мягкое прямо» (auto_direct), пресет precision, port_aware (эсперементал). Списки: DNS-снифинг, wildcard-зоны и CIDR, сброс conntrack, backoff для «глухих» apex, готовые наборы Telegram/OpenAI/Anthropic/YouTube/IPTV. dns_hijack — DNS клиентов серверных VPN (oc+/wdtt+ и lan_server_interfaces) заворачивается на резолвер роутера (DNAT 53): лечит NXDOMAIN/«сайты не открываются» на Android. vpn_always_cdn_prefix — для адресов ALWAYS из cdn_ranges_file пинится CDN-префикс (клиент получает другой edge того же CDN). dns_sniff слушает ВСЕ LAN-интерфейсы (br0, br1, oc+), а не только первый. Совместимость: qWDTT/WDTT как LAN, discover_exclude, OpenConnect oc+, реальный discover/rescan без popen. Сеть: MSS/PMTU-кламп (профили, оба направления), ipv6_block, quic_block, kernel-offload. Поставка: .ipk для 5 архитектур, bootstrap.sh одной строкой, merge списков и ключей при апгрейде, короткая команда susanin. CI: -Werror, make test, shellcheck, сборка .ipk, check-shipping; хост-тесты (conntrack, web, classifier, state, config). Обновлена документация: USER_GUIDE.md, XRAY.md, разделы TROUBLESHOOTING (IPTV, Cloudflare, 403 по IP, «all egress DOWN», qWDTT, OpenConnect), DEPLOY.md. Выявлено и устранено ошибок: 68 Веб-панель (только LAN) В агенте есть встроенный мини-HTTP-сервер — отдельный процесс susanin-agent web, внешний httpd/lighttpd не нужен. По умолчанию выключен. Включение Веб-панели # /opt/susanin/etc/susanin.conf web_enable=1 web_listen=192.168.1.1 # только LAN-адрес роутера, не 0.0.0.0 web_port=8087 web_token= # пусто = вход без пароля (доступ только из LAN) sh /opt/susanin/tools/susanin.sh web restart # затем в браузере: http://192.168.1.1:8087/ # с токеном: http://192.168.1.1:8087/?token=ВАШ_ТОКЕН (ставит cookie) Что умеет: статус (egress/health, размеры наборов, профили, память), правка конфига, списки vpn_always/vpn_never (drag&drop и Memo-редактор всего файла), профили, действия Reload/Rescan/Restart/Reset. Токен сравнивается за постоянное время; ?token= принимается только для первого GET; без TLS — при необходимости ставьте панель за своим прокси или не выставляйте её в недоваренный сегмент. Установка вариант 1 - из архива opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh Установщик скачивает готовый архив под вашу архитектуру, определяет LAN/VPN и (при наличии) OpenConnect, запрашивает подтверждение и запускает демон. Существующие susanin.conf, vpn_always.txt, vpn_never.txt и кэш сохраняются. Установка вариант 2 - пакетом Entware (.ipk) Начиная с 0.4.0 есть пакет .ipk: ставится и обновляется штатным opkg, конфиг, списки и состояние при обновлении не перезаписываются. Проще всего — дать установщику скачать пакет под вашу архитектуру и сверить SHA256: opkg update && opkg install ca-certificates wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh -s -- --ipk Установка вариант 3 -Вручную В Assets лежат пакеты susanin-keenetic_0.4.0_<arch>.ipk и общий SHA256SUMS. Свою архитектуру показывает opkg print-architecture (например, mipsel-3.4): opkg print-architecture cd /opt/tmp wget https://github.com/R17a/Susanin.Keenetic/releases/download/v0.4.0/susanin-keenetic_0.4.0_mipsel-3.4.ipk wget https://github.com/R17a/Susanin.Keenetic/releases/download/v0.4.0/SHA256SUMS sha256sum -c SHA256SUMS 2>/dev/null | grep mipsel-3.4 # ожидаем: ...: OK opkg install susanin-keenetic_0.4.0_mipsel-3.4.ipk Обновление # если ставили пакетом (версия новее установленной, --force не нужен): opkg install susanin-keenetic_0.4.0_<arch>.ipk # если ставили архивом: sh /opt/susanin/tools/susanin.sh update v0.4.0 update печатает installed → target, делает бэкап susanin.conf и susanin.state в /opt/susanin/var/backup/, заменяет бинарь и скрипты, не трогая etc/ и var/, затем перезапускает демон. Версию после обновления видно первой строкой в susanin status. Диагностика Если что-то работает не так — сначала запустите диагностику: проверит окружение, настройки и списки, выдаст рекомендации: sh /opt/susanin/tools/diagnose.sh Для отправки полного отчёта (логи, состояние) — соберите и приложите вывод: sh /opt/susanin/tools/report.sh # или без установки: wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/v0.4.0/tools/report.sh | sh Отчёт сохраняется в /opt/susanin/var/report.txt. Удаление Вариант 1 opkg remove susanin-keenetic # если ставили пакетом, данные остаются Вариант 2 sh /opt/susanin/tools/susanin.sh uninstall Вариант с полной очисткой sh /opt/susanin/tools/susanin.sh uninstall --purge Благодарности Спасибо людям, которые помогали проекту — тестированием на своих роутерах, отчётами с логами, разбором проблем и предложениями по улучшению: Gave_Karen pegakmop NJmist Их отчёты (conntrack, iptables, diagnose.sh) — то, без чего большинство исправлений в этом репозитории просто не нашлось бы. Спасибо!
  5. Не понимаю и что вам C(си) плохого сделал, как язык программирования?
  6. В момент первого подключения Susanin.Keenetic строит правила и маршруты, при повторном подключении, всё происходит корректно. То-же касается и видео звонков.
  7. День добрый! Попробовать включить блокировки и перегрузить. Я отдельно проверю т.к. сам не пользуюсь им.
  8. Обновление Susanin.Keenetic 0.4.0-dev4 [FIX] Restart больше не отваливает веб-панель. Web — отдельный процесс; раньше при остановке демона били по всем susanin-agent сразу, поэтому /api/restart убивал процесс, обслуживающий сам запрос, и панель не возвращалась. Теперь демон и web разведены; добавлены susanin.sh web {start|stop|restart|status}, строка web: в status; start/restart поднимают web при web_enable=1. [FIX] Пины vpn_always больше не теряются. На восстановлении туннеля resync_sets() чистит ipset'ы — теперь списки помечаются «грязными» и пины возвращаются; желаемые адреса/сети передобавляются каждый проход (ipset -exist), так что внешняя потеря пина само-исправляется. Это лечит случаи «сайт из списка ходил через VPN, а после переключения — напрямую». [FIX] Автообучение больше не заворачивает российские сервисы. Яндекс (в т.ч. uniproxy.alice.yandex.net, 213.180.193.76): long-poll/keepalive выглядел как «клиент шлёт — сервер молчит» → SOFT LATE-STALL → CONFIRMED → VPN. В список «всегда напрямую» добавлены Яндекс и VK/OK/Mail.ru (домены и сети). [FIX] Уровень логов Xray (xray_loglevel) — полноценный ключ конфига: больше не теряется при сохранении настроек и правится из панели (раньше в панели показывалось «нет в файле»). [FIX] rescan стал безопаснее: обновляет только сетевые параметры (egress_*, lan_*) и по умолчанию не затирает вручную заданный egress_interface (--force — переопределить), с отчётом об изменениях. [FIX] Установка/обновление дописывают больше недостающих ключей (fast_syn_min_op, ok_max_entries, ok_evict_misses, promo_per_min, soft_state_interval, learn_exclude_ports, vpn_always_*, vpn_never_*); дефолты новых ключей — уже числами без букв. [NEW] Веб-панель: редактор конфигурации и статус. Базовая разработка, будет доработка юзабилити. Раздел «Конфигурация агента» — параметры сгруппированы по темам, значения читаются и сохраняются через агента (GET/POST /api/config). Списки vpn_always/vpn_never правятся перетаскиванием между колонками; появились верхняя панель (Reload/Rescan/Restart, индикатор связи, версия) и раздел «Статус» (наборы ipset, Reset адреса/домена). [NEW] Единый и понятный формат настроек времени. Раньше длительности писались по-разному (1s, 5m, 3h). Теперь все временные параметры задаются просто числом, а единица (секунды/минуты/часы) указана в описании к каждому параметру. Генерируемый susanin.conf печатает описание к каждому ключу — файл стал самодокументируемым. Старые записи с буквами (5m, 3h) по-прежнему читаются, править руками ничего не нужно. [NEW] Авто-детект блокировки по SNI (ТСПУ/DPI). Новый сигнал FAST/DPI-RST — «TCP-рукопожатие прошло, ClientHello отправлен, ответа нет, соединение сброшено». Такие блокировки старые проверки не ловили (нужен rp==0, а SYN-ACK уже приходил) — теперь адрес автоматически уводится в VPN и проверяется туннелем. Установка без клиента XRay. Обновиться с уже установленной версии: opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes Первая установка (Entware уже стоит) — ставим полный набор зависимостей: opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes Нужен режим REALITY — добавьте --with-xray (Xray качается отдельно, в архив не входит): opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes --with-xray
  9. Обновление Susanin.Keenetic 0.4.0-dev3 [FIX] Очередная корректировка "Пересканирование сети". Внутренний вызов ломался, поэтому после смены или удаления VPN сеть не пересканировалась и продолжал использоваться старый, уже несуществующий интерфейс. Теперь Susanin.Keenetic сам находит актуальный VPN-интерфейс и его адрес — править настройки вручную не нужно (src/discover.c переписан без popen()). [FIX] Предупреждение, если у выученных адресов отключён срок хранения. Susanin.Keenetic запоминает адреса, которым нужен VPN, на ограниченное время (по умолчанию — 6 часов), а затем забывает их. Если поставить ok_ttl=0, адреса не забываются никогда: список растёт, и в VPN начинает уходить всё больше лишнего. Теперь при таком значении в логе появляется явное предупреждение. [FIX] Установка и обновление сами добавляют новые параметры. install.sh и update.sh дописывают в существующий susanin.conf недостающие ключи (существующие значения не перезаписываются), а список сетей CDN (cdn_ranges.txt) ставится, если его ещё нет. Ручной merge не нужен. [NEW] Универсальное лечение сайтов за Cloudflare и другими CDN — без ручных списков. Раньше «заблокированные» сайты за CDN (у которых много быстро меняющихся адресов) приходилось заносить в списки вручную, и всё равно часть соединений «проскакивала» напрямую и зависала. Теперь Susanin.Keenetic сам знает диапазоны популярных CDN, автоматически обновляет их раз в сутки и, поняв, что адрес из такого диапазона нужно вести через VPN, запоминает не один адрес, а всю ближайшую подсеть — на час. Следующие адреса той же CDN сразу идут через VPN, и зависаний становится меньше. Настройки: cdn_ranges_file, cdn_ranges_url, cdn_ranges_interval, cdn_prefix_learn, cdn_prefix_ttl, cdn_prefix_max. [NEW] Ловим не только полный обрыв, но и «медленный интернет». Раньше срабатывало, только если данные почти полностью вставали. Теперь, если ответ идёт еле-еле (типичное замедление провайдером) и адрес относится к CDN, такой поток тоже отправляется на проверку через VPN. [NEW] Меньше ложных переводов в VPN. Ужесточены пороги, по которым адрес считается «заблокированным»: теперь нужен заметный объём обмена, а не пара пакетов. Пороги настраиваются параметрами: learn_min_op — минимум пакетов к адресу, learn_min_bytes — минимум байт обмена, confirm_min_bytes — минимум ответных байт для подтверждения, что VPN помог, а learn_strict=1 делает пороги ещё строже (вдвое). [NEW] Управление IPv6. Susanin.Keenetic работает только по IPv4, поэтому IPv6-трафик уходил мимо него. По умолчанию (ipv6_block=1) IPv6 для домашних устройств закрывается, и они переходят на IPv4, снова попадая под управление Susanin.Keenetic. ipv6_block=0 — не трогать IPv6. [NEW] Зависания YouTube из-за QUIC устранены. Приложения сначала пробуют QUIC (UDP 443), а через UDP-релей он ненадёжен: поток «висит» без ответов, и только потом приложение переходит на TCP (это и есть пауза). По умолчанию (quic_block=1) QUIC из LAN запрещается, и приложения сразу идут по TCP — через туннель стабильно. quic_block=0 — не трогать QUIC. [NEW] Видно «само-восстановление» перехвата. Когда роутер после обновления или перезагрузки сбрасывает правила перенаправления, Susanin.Keenetic возвращает их сам. Теперь это видно в статусе: когда и почему правила возвращались. [NEW] Встроенная диагностика для IPTV и сайтов «то грузится, то нет». В команде диагностики появился раздел, который проверяет наличие IPv6, показывает, когда и почему возвращались правила, и подсказывает, что смотреть при зависаниях (какой адрес резолвит плеер и идёт ли поток через VPN): sh /opt/susanin/tools/diagnose.sh [NEW] Предупреждение о подмене DNS. Если провайдер подменяет адреса (домены «резолвятся» в 127.0.0.1), диагностика замечает это и печатает заметное «DNS WARNING»: пока адрес подменён, завернуть его в VPN нельзя; лечится переключением DNS-over-TLS (порт 853 часто глушат) на DoH или обычный DNS. Проверяется той же командой — в разделе «Списки» появится строка «ПОДМЕНА DNS …» и ниже сам «DNS WARNING». Новые параметры конфигурации (файл /opt/susanin/etc/susanin.conf) learn_min_op — по умолчанию 10 — минимум пакетов к адресу, чтобы считать его «заблокированным». learn_min_bytes — по умолчанию 2000 — минимум байт обмена до обучения. confirm_min_bytes — по умолчанию 512 — минимум ответных байт для подтверждения, что VPN помог. learn_strict — по умолчанию 0 — 1 делает пороги обучения ещё строже (вдвое). cdn_ranges_file — по умолчанию /opt/susanin/etc/cdn_ranges.txt — файл с сетями CDN. cdn_ranges_url — по умолчанию https://www.cloudflare.com/ips-v4 — откуда автоматически обновлять список CDN. cdn_ranges_interval — по умолчанию 86400 — период обновления, сек (0 — не обновлять). cdn_prefix_learn — по умолчанию 1 — включать агрегацию по подсети CDN. cdn_prefix_ttl — по умолчанию 3600 — на сколько секунд запоминать подсеть CDN. cdn_prefix_max — по умолчанию 24 — не агрегировать шире, чем /24 (ограничивает «радиус»). ipv6_block — по умолчанию 1 — 1 закрыть IPv6 для домашних устройств, 0 — не трогать. Установка без клиента XRay. Обновиться с уже установленной версии: opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes Первая установка (Entware уже стоит) — ставим полный набор зависимостей: opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes Нужен режим REALITY — добавьте --with-xray (Xray качается отдельно, в архив не входит): opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes --with-xray
  10. Обновление Susanin.Keenetic 0.4.0-dev2 [FIX] Меньше обращений к флешке. Логи Xray почти не пишутся (access-лог выключен), для бэкапов правил введён разумный лимит — носитель работает спокойнее. [FIX] Само-восстановление перехвата. Если после перезагрузки или обновления прошивки KeeneticOS сбросит правила перенаправления в Xray, Susanin.Keenetic сам это замечает и возвращает правила за ~15 секунд. [FIX] Соединения идут строго по заданному правилу. Если домен включён в список «всегда через VPN», но соединение успело открыться напрямую (например, до применения правила/адреса), Susanin.Keenetic мягко закрывает этот устаревший прямой поток — и следующее соединение к домену идёт уже через VPN, как задано. [FIX] Устойчивость к занятым таблицам iptables. «Замок» iptables — это встроенный механизм «по одному»: менять правила может только один процесс за раз. Если таблицы в этот момент правит, например, сама KeeneticOS, Susanin.Keenetic дожидается своей очереди и не выдаёт ошибку. [FIX] Корректное сосуществование. Susanin.Keenetic учитывает только свои метки и не мешает меткам других сервисов — схемы «как с OpenConnect» работают и для qWDTT/WireGuard. (для этого достаточно указать нужные интерфейсы и подсети в lan_interfaces/lan_subnets.) [FIX] rescan теперь полноценный. Он пересканирует сеть, сам подбирает актуальный VPN-интерфейс и его адрес (например, заменит устаревшее имя интерфейса на рабочий nwg…). [FIX] enable сообщает о готовности по факту. Сначала поднимает Xray, дожидается готовности и лишь затем пишет «включено». Ускорение VPN для списка vpn_always [NEW] Параллельный разбор списка. До 12 доменов резолвятся одновременно — самый первый проход заметно быстрее. [NEW] VPN для доменов из списка работает сразу после перезагрузки. Адреса сохраняются и мгновенно восстанавливаются — ждать не нужно. [NEW] Быстрее и «чище» разбор списка: меньше таймаут на DNS, «пустые» домены не тормозят процесс и не перепроверяются заново при каждом старте. [NEW] enable дожидается прогрева списка и подсказывает, если он ещё дополняется. Установка без клиента XRay. Обновиться с уже установленной версии: opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes Первая установка (Entware уже стоит) — ставим полный набор зависимостей: opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes Нужен режим REALITY — добавьте --with-xray (Xray качается отдельно, в архив не входит): opkg update && opkg install ca-certificates ipset iptables conntrack wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/develop/bootstrap.sh | sh -s -- --yes --with-xray
  11. Всем привет! Бан сервера по IP от ТСПУ РКН, с последующим отказом работы "Другого подключения asc 2.0", подтолкнул сесть за код. На обкатку предлагаю версию Susanin.Keenetic 0.4.0-dev1 (Develop). Всем миром собираем замечания/предложения и потом в Release. Главное в сборке : 1. Веб-панель (по умолчанию выключена) Включение: в /opt/susanin/etc/susanin.conf: web_enable=1 web_listen=192.168.1.1 # LAN-адрес вашего роутера web_port=8087 web_token=ПРИДУМАЙТЕ_ПАРОЛЬ Запуск: /opt/etc/init.d/S95susanin-web start web_token — пароль, который вы придумываете сами. Если оставить пусто, вход без пароля (доступ только из вашей сети). Проверка в браузере: http://192.168.1.1:8087/?token=ПАРОЛЬ Это НЕ полноценное решение - это обкатка демона, поэтому по умолчанию выключена. Далее bootstrap и функционал. 2. qWDTT_Server_Keenetic Это совместимость, а не интеграция: клиентами qWDTT Susanin.Keenetic не занимается. серверные туннели qWDTT (wdtt0/wdttraw0) не должны попадать в lan_interfaces/lan_subnets/egress_interface — они в discover_exclude; подсеть Susanin.Keenetic (egress_address) не должна пересекаться с сетями qWDTT (10.66.66.0/24, 10.70.66.0/16). Пример: # --- Сосуществование с qWDTT_Server_Keenetic --- # Не брать серверные туннели qWDTT как LAN/egress (это дефолт): discover_exclude=wdtt0,wdttraw0,tun0,tap0 # Наши LAN — только домашние мосты Keenetic (без wdtt*): lan_interfaces=br0 lan_subnets=192.168.1.0/24 # Наш egress — VPN-интерфейс (nwg*), НЕ wdtt*: egress_interface=nwg0 egress_address=10.8.1.1 # подсеть Susanin — вне 10.66.66.0/24 и 10.70.66.0/16 Проверка: sh /opt/susanin/tools/diagnose.sh | sed -n '/qWDTT/,/^$/p' # ожидаем "qWDTT: обнаружен" и без предупреждений про wdtt* в egress/lan 3. Профили маршрутизации Профиль — это список (домены / IP / CIDR), который идёт в свой туннель. Профилей до 4, включаются ключами profile1_* … profile4_*; профиль работает, только если задан profileN_name. Если профилей нет — ничего не меняется. В /opt/susanin/etc/susanin.conf: profile1_name=cdn profile1_egress=nwg1 profile1_list=/opt/susanin/etc/profiles/cdn.txt profile2_name=social profile2_egress=nwg2 profile2_list=/opt/susanin/etc/profiles/social.txt Список — файл /opt/susanin/etc/profiles/<имя>.txt: по строке домен, IP или CIDR, # — комментарий. profileN_table / profileN_mark можно не задавать. Проверка sh /opt/susanin/tools/profiles.sh up sh /opt/susanin/tools/profiles.sh status Адрес обрабатывается первым совпавшим профилем. 4. XRay (REALITY) XRay подключается как egress: Susanin.Keenetic помечает нужные соединения, TCP уходит в Xray через REDIRECT, UDP — через релей в демоне Susanin.Keenetic. TUN не нужен. Тесты показали стабильную работу только на Xray 1.8.24 Настройка Положить бинарь Xray: cp xray/xray.mipsel /opt/sbin/xray && chmod +x /opt/sbin/xray # mips/mipsel # или: cp xray/xray.aarch64 /opt/sbin/xray && chmod +x /opt/sbin/xray Положить конфиг клиента и подставить свои данные: cp /opt/susanin/etc/xray-tproxy.json.example /opt/susanin/etc/xray-tproxy.json # в файле заменить SERVER/UUID/SNI/PBK/SID Включить боевой режим (после установки Susanin.Keenetic 0.4.0-dev1) : sh /opt/susanin/tools/xray-egress.sh enable Ключи (egress_type=tproxy, udp_relay=1 и др.) прописываются сами. Логи Xray — отдельным ключом xray_loglevel (по умолчанию warning): enable/run применяют его и перезапускают Xray. Не ставьте info — иначе Xray пишет строку на каждое соединение (from … accepted …) и грузит Flash носитель. Проверка Безопасно проверить один адрес (в туннель уйдёт только он): sh /opt/susanin/tools/xray-egress.sh run 1.1.1.1 both С компьютера в вашей сети: # Windows: nslookup ya.ru 1.1.1.1 nslookup -class=chaos -type=txt whoami.cloudflare. 1.1.1.1 # должен быть IP вашего VPN сервера # Linux/macOS: curl -s https://1.1.1.1/cdn-cgi/trace | grep '^ip=' # должен быть IP вашего VPN сервера На роутере: sh /opt/susanin/tools/xray-egress.sh status # ожидаем: redirect: port=12345 rules=2 ; udp-relay: port=1081 rules=2 sh /opt/susanin/tools/xray-egress.sh default # вернуть всё в DIRECT Выключить боевой режим: sh /opt/susanin/tools/xray-egress.sh disable. Важно: UDP проверяйте с компьютера, а не с роутера — трафик самого роутера в этот механизм не попадает. Если Xray не запущен, Susanin.Keenetic сам не поднимает tproxy-правила и пускает трафик напрямую (fail-open) — в status это видно как (Xray NOT LISTENING). Поднять Xray: /opt/etc/init.d/S93xray-tproxy start Если что-то не так sh /opt/susanin/tools/susanin.sh status sh /opt/susanin/tools/diagnose.sh sh /opt/susanin/tools/report.sh # отчёт: /opt/susanin/var/report.txt Логи и информацию просьба оставлять на форуме или в Телеге Установка c XRay клиентом mkdir -p /opt/tmp/sus-dist && cd /opt/tmp/sus-dist wget -O susanin-dev.tar.gz \ https://github.com/R17a/Susanin.Keenetic/raw/main/develop/susanin-keenetic-0.4.0-dev.tar.gz tar -xzf susanin-dev.tar.gz cd susanin-keenetic-0.4.0-dev sh install.sh --yes Если установлен и настроен XRay (REALITY) sh /opt/susanin/tools/xray-egress.sh enable sh /opt/susanin/tools/susanin.sh status
  12. День добрый! Включено в план.
  13. Susanin.Keenetic v0.3.10 Что нового Меньше «дёрганья» 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. Установка (первый раз) opkg update && opkg install ca-certificates ipset iptables conntrack wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh Обновление (конфиг и состояние сохраняются) sh /opt/susanin/tools/susanin.sh update v0.3.10 Удаление sh /opt/susanin/tools/susanin.sh uninstall # остановить и снять правила/автозапуск, конфиг и состояние оставить sh /opt/susanin/tools/susanin.sh uninstall --purge # удалить /opt/susanin полностью
  14. Susanin.Keenetic v0.3.9 Что нового в этой версии Версия сразу с 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. Установка (первый раз) opkg update && opkg install ca-certificates ipset iptables conntrack wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh Обновление (конфиг и состояние сохраняются) sh /opt/susanin/tools/susanin.sh update # до последнего релиза sh /opt/susanin/tools/susanin.sh update v0.3.9 # конкретная версия Удаление sh /opt/susanin/tools/susanin.sh uninstall # остановить и снять правила/автозапуск, конфиг и состояние оставить sh /opt/susanin/tools/susanin.sh uninstall --purge # удалить /opt/susanin полностью p.s. инструкции обновил, чтобы стало более понятно p.s.s. вопрос с .ipk в проработке. Entware: https://github.com/R17a/Susanin.Keenetic/releases#release-v0.3.9 openWRT: https://github.com/R17a/Susanin.Keenetic/releases#release-openwrt-v0.3.9
  15. Спасибо! Замечание принимается, зависимости пропишем в следующем релизе.
  16. По хорошему лучше иметь под монтированную flash + OPKG. install.sh по умолчанию ставит в /opt/susanin т.е. на флэшку и тут как бы не выскочить в память. Принято, для актуализации инструкции. т.е. Чтобы в # Egress (VPN/WireGuard tunnel) interface and its tunnel IPv4 address. egress_interface=nwg0 egress_address=10.8.1.1 Было так-же разнообразно как и в LAN # LAN ingress interfaces and their networks (comma-separated). lan_interfaces=br0,br1,oc0 lan_subnets=192.168.1.0/24,10.1.30.0/24,172.16.5.0/24 программа мониторила Egress и считала, правила дня них одинаковыми и балансировала, при падении одного из них. Принято в работу.
  17. Не понял. Чтобы устанавливалась не в /opt ? Уточни пожелания, допилим .. 😇 В целом, в отличии от тех же Тайцев (nfqws2) хранить бэкап настроек/правил не нужно. Ну форматнули/переустановили, ну потерялись /opt/susanin/var/datapath-*-* - ip-route.txt - ip-rule.txt - mangle.txt - nat.txt Установил с нуля и пусть начнёт жизнь с чистого листа.
  18. data plane: chain SUSANIN MISSING PREROUTING jump MISSING ip rule test->table MISSING ip rule ok->table MISSING route default in table MISSING Информация говорит, что скорей всего не выполнено условие наличие ipset или iptables или conntrack. Выполни и скинь результат из bash: command -v iptables ipset ip conntrack ip link show nwg1; ip -4 addr show nwg1 sh -x /opt/susanin/tools/datapath.sh up 2>&1 | tail -40 После отчёта выполни: opkg update && opkg install ipset iptables conntrack /opt/susanin/tools/susanin.sh restart /opt/susanin/tools/susanin.sh status Ожидаемый результат, через минуту рыботы: Data plane - все OK. Ipset sizes - не равны 0. data plane: chain SUSANIN OK PREROUTING jump OK ip rule test->table OK ip rule ok->table OK route default in table OK ipset sizes: susanin_test_tcp = 0 susanin_test_udp = 0 susanin_ok_tcp = 4309 susanin_ok_udp = 420 susanin_ok_net = 9 susanin_never = 1 vpn_always (always-VPN list): file: /opt/susanin/etc/vpn_always.txt (present) domains: 211 (refresh every 300s, resolver: auto) cache: state file OK В следующую сборку включу "Проверка на наличие всех нужных компонентов, до запуска демона + детализация в логах".
  19. Я за любой кипишь в коде и инструкциях, лишь бы был feedback от желающих. У меня на Viva (KN-1910)/Entware/5.1.5 - работает, будем разбираться и с другими железяками. 1. Что говорит? /opt/susanin/bin/susanin-agent status config file: /opt/susanin/etc/susanin.conf (present) egress=nwg0 table=100 lan=br0,br1,oc0 data plane: chain SUSANIN OK PREROUTING jump OK ip rule test->table OK ip rule ok->table OK route default in table OK ipset sizes: susanin_test_tcp = 0 susanin_test_udp = 0 susanin_ok_tcp = 4347 susanin_ok_udp = 453 susanin_ok_net = 9 susanin_never = 0 vpn_always (always-VPN list): file: /opt/susanin/etc/vpn_always.txt (present) domains: 211 (refresh every 300s, resolver: auto) cache: state file OK 2. Отключено в "Подключения к интернету по Ethernet-кабелю" -> "Игнорировать DNSv4 интернет провайдера? 3. Включены DoT и DoH, как я показал в первом посте? (сервера могут быть свои). 4. Можно в ответ в архиве вложить? /opt/susanin/etc/susanin.conf /opt/susanin/var/susanin.log Если Вы "счастливый" обладатель настроек у провайдера по блокировкам DoT и DoH, тогда да - всё тлен или пробовать другие DoT и DoH сервера... =( Поведение DNS (пока) похоже на ваше https://t.me/whackdoor/30961, но лучше ответом дайте логи. p.s. залил скрипт сбора данных и для Entware. Entware: wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/tools/report.sh | sh на выходе /opt/susanin/var/report.txt OpenWRT: wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt/tools/owrt-report.sh | sh на выходе /tmp/susanin-report.txt
  20. Требуются смелые и отзывчивые на тест Susanin.Keenetic под OpenWRT. https://github.com/R17a/Susanin.Keenetic/releases/tag/openwrt-v0.3.8 - OpenWRT - сборка Susanin.Keenetic openwrt-v0.3.8 Экспериментальная сборка для роутеров Keenetic / Netcraze, перепрошитых на OpenWRT. На живом железе не тестировалась — предварительный выпуск для проверки сообществом. Установка Онлайн (архитектура и версия определяются автоматически): --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. 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) Сообщить о проблемах Issues: https://github.com/R17a/Susanin.Keenetic/issues Форум: т.е. тут Telegram: https://t.me/Susanin_Keenetic Проверено: только сборка (компиляция). Поведение на устройстве не проверялось. Диагностика (запустите в момент проблемы, отчёт сохраняется в /tmp/susanin-report.txt): wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/openwrt/tools/owrt-report.sh | sh
  21. Susanin.Keenetic v0.3.8 Что нового в этой версии Откат кода по 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`; `vpn_never.txt`: имена приводятся к нижнему регистру (как в `vpn_always.txt`) — дедуп и сравнение зон больше не зависят от регистра; `datapath.sh status`: правильные размеры ipset-наборов в ядре (раньше показывало 125 вместо 2682 — счётчик учитывал не все адреса); `susanin-agent status`: размеры ipset-наборов верны и на больших объёмах (раньше могли занижаться), и в выводе виден ipset-набор 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
  22. Susanin.Keenetic v0.3.6 Что нового в этой версии wildcard-зоны *.example.com в vpn_always.txt и vpn_never.txt: покрывают домен и поддомены. Точная строка example.com по-прежнему означает только сам домен — поддомены обрабатываются адаптивно; конфликт зон: если зона есть в обоих файлах (vpn_always.txt / vpn_never.txt) или зоны пересекаются (например *.keenetic.ru и forum.keenetic.ru), приоритет у «напрямую» (vpn_never), в лог пишется предупреждение; обслуживание: ротация лога (susanin.log >5 МБ → susanin.log.1.gz..3.gz) и архивация старых каталогов datapath-* в /opt/susanin/var/archive/; меньше «дрожания» списков в tail -n 40 /opt/susanin/var/susanin.log: адрес убирается из наборов только если он отсутствует 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
  23. Задача с одной неизвестной. Дано: работающее VPN подключение в "Другие подключения" Маршрутизация > Маршруты DNS > Правила маршрутизации (выбрано активное VPN подключение) Как роутеру объяснить, что мне 57.144.0.0/14, 157.240.0.0/16, 185.60.216.0/22, 31.13.64.0/18 и т.д. нужно заворачивать в работающий VPN ? Если описанной информации в первом сообщении или на GitHub мало, предлагаю ознакомится со статьёй на Habr (держа в голове, что я портировал с MikroTik на Keenetic всё, кроме специфики RouterOS). Если вся переписка это просто хейт, предлагаю уйти в личные сообщения. «Колхоз — дело добровольное: хочешь — иди, хочешь — со стороны гляди» (С) Шолохов
  24. Штатное решение "Маршрутизация DNS": - особо не обучается (добавления новых адресов ноль) - поддержки подсетей ноль Про други проекты сказать не могу т.к. н использовал и какие у них колёса нет знаю. Воросты про маршрутизацию VPN вижу как тут, так и в https://t.me/Netcraze - если есть у людей вопросы, в том числе и не отвечэеэные - вопрос актуален или все не знают про "проверенные временем проекты типа MagiTrickle и другие"..
  25. Всем привет! Проекту нужны желающие поучаствовать в открытом тестировании адаптивной VPN-маршрутизации. https://github.com/R17a/Susanin.Keenetic Статус: активная разработка / полевое тестирование. Проверено на Keenetic Viva (MT7621, MIPS), KeeneticOS 5.1.5, Entware, WireGuard/ASCWG-туннель. Основная среда — legacy iptables + ipset (nftables на этом ядре нет). Проект разработан на основе статьи на Habr и проекта Fiark/susanin (адаптивная VPN-маршрутизация для MikroTik RouterOS), портирован на роутеры Keenetic/Entware. Адаптивная маршрутизация - программа смотрит, какие соединения «не работают» из-за блокировок, пробует их через VPN, запоминает рабочие и дальше держит их в VPN. Если VPN недоступен — всё идёт напрямую. Есть и простой список доменов, которые должны идти через VPN всегда (без ручных списков IP — только имена, как в Keenetic). Не является VPN-клиентом: туннель (WireGuard/ASCWG «Дополнительное подключение») должен уже работать, IPv6 не поддерживается. Что делает наблюдает за поведением соединений (conntrack), а не за содержимым; по «тихим» признакам блокировок (TCP SYN без ответа, QUIC/UDP без reply, TCP-stall, late-stall, DPI-RST) отправляет IP на проверку через VPN; подтверждает рабочие направления (кэш ok) и держит их в VPN с TTL: по умолчанию 6 часов, срок продлевается, пока идёт трафик (ok_ttl=0 — бессрочно); если маршрут через VPN перестал отвечать — снимает сам; TCP и UDP/QUIC учит раздельно; список доменов «всегда через VPN» (vpn_always.txt): домены, *.example.com, IP и CIDR — всегда идут в туннель; список «всегда напрямую» (vpn_never.txt): домены, *.example.com, IP и CIDR — никогда не идут в туннель (приоритет выше VPN); если сайт ответил по основному каналу, он не заворачивается в VPN (кандидатами становятся только направления без ответа); fail-open: при недоступности туннеля — прямой доступ (DIRECT); несколько VPN-подключений: при падении трафик уходит на резервный туннель (failover), а когда приоритетный вернулся — автоматически возвращается на него (failback); здоровье проверяется по каждому туннелю отдельно; Xray/VLESS+REALITY как egress: egress_type=tproxy (TCP — REDIRECT, UDP — свой релей); tproxy может быть и резервным кандидатом; профили маршрутизации (до 4): список «домены/IP/CIDR → свой туннель», в том числе скачиваемые CIDR-списки (geo_url); профиль приоритетнее основной схемы; веб-панель в самом агенте (только LAN): статус, конфиг, списки, профили, reload/rescan/restart/reset; по умолчанию выключена; автоматически чинит правила, если их снёс NDM (Web-UI change) — reconcile; может маршрутизировать клиентов OpenConnect-сервера на этом же роутере (шаблон oc+): установщик находит сервер и предлагает добавить; dns_hijack заворачивает DNS этих клиентов на резолвер роутера (лечит DNS_PROBE_FINISHED_NXDOMAIN на Android), br0/br1 при этом не трогаются; клиенты qWDTT тоже могут идти через Susanin (lan_server_interfaces); DNS-снифинг (домен → IP), CDN-агрегация, media-класс для IPTV/видео, «мягкое прямо» (auto_direct); MSS/PMTU-кламп (в том числе для профилей), блокировка IPv6 из LAN и QUIC (UDP 443), чтобы клиенты шли по IPv4/TCP; работает как демон под Entware (/opt), управление — CLI/SSH и веб-панель. Как это устроено (кратко) Смотрим на соединения, а не на содержимое. Программа читает /proc/net/nf_conntrack — там видно состояние TCP, сколько пакетов и байт ушло и пришло, метки. Правила фильтрации. Своя цепочка SUSANIN в mangle PREROUTING (после правил Keenetic). Нужные адреса помечаются через CONNMARK/MARK и уходят в отдельную таблицу маршрутизации (по умолчанию 100; номер должен быть маленьким — busybox ip не понимает большие). Адреса хранятся в наборах ipset susanin_{test,ok}_{tcp,udp}. Плюс отдельное разрешение в filter FORWARD по нашим меткам — иначе политика Keenetic (DROP) не пускает клиентов серверных VPN в туннель. Таймеры. Проверки идут по расписанию: FAST 1 с, SOFT 1 с, JUDGE 1 с, HEALTH 5 с. «Зависшие» соединения удаляются из conntrack, чтобы клиент подключился заново — уже через VPN. Пороги взяты из проекта Susanin.MikroTik. Требования Keenetic с установленным Entware; пакеты Entware: ipset, conntrack, busybox, iptables (legacy); работающий VPN-туннель (WireGuard/AmneziaWG) — его интерфейс будет egress; LAN-интерфейсы (обычно br0, br1); в Keenetic выключена «Маршрутизация DNS» (доменные маршруты, которые уводят домены в туннель) — иначе Keenetic и Susanin мешают друг другу; настроен шифрованный DNS (DoH/DoT) — на роутере или на клиентах: иначе провайдер может подменить ответы DNS, и клиент не получит настоящий адрес сайта даже при рабочем VPN (частая причина «YouTube/Devart не открывается»); Указано как пример. root-доступ по SSH. Важно: «Приоритеты подключений» Keenetic Keenetic умеет сам направлять устройства и сегменты в VPN (Web → «Приоритеты подключений»). Это отдельный механизм: его правила идут с приоритетом 100–107, а правила Susanin — 2000/2001 (у профилей — авто-приоритет, тоже ниже Keenetic). Поэтому для клиента, привязанного к политике Keenetic, весь трафик идёт по решению Keenetic (в VPN или напрямую — зависит от политики), а списки, профили и обучение Susanin на него не действуют. Простое правило: у каждого клиента должен быть один «решающий» механизм. Хотите, чтобы решал Susanin (что через VPN, что напрямую) — у клиента или сегмента не должно быть назначено никакой политики (оставьте системную «по умолчанию»). Это про любую политику: названия задаёте вы сами, и любая назначенная политика перекрывает Susanin. Например, при политике «только напрямую» заблокированный сайт не откроется, и Susanin не сможет завернуть его в VPN. Хотите «всё и всегда через VPN» — можно назначить политику Keenetic, но тогда списки и обучение Susanin для этого клиента не работают. Смешивать оба для одного клиента нельзя. То же касается клиентов серверных VPN (OpenConnect oc+, qWDTT): если такой клиент привязан к политике Keenetic, Susanin его не обрабатывает — ни обучение, ни vpn_always. При этом dns_hijack (DNAT 53) привязан к интерфейсу, а не к метке, и продолжит заворачивать DNS такого клиента на резолвер роутера. Проверить привязки: ndmc -c "show running-config" | grep -i "ip policy" (или Web → «Приоритеты подключений»). Ещё можно посмотреть ip rule show — правила Keenetic идут первыми (100–107), наши ниже. Как понять по conntrack, кто управляет клиентом: mark=0xffffaXX — клиент под политикой Keenetic, Susanin его не обрабатывает; mark=0x10000000 (268435456) — Susanin проверяет направление через VPN; mark=0x20000000 (536870912) — Susanin подтвердил и держит в VPN; mark=0x40000000 / 0x08000000 / 0x04000000 / 0x02000000 — трафик профилей 1–4; mark=0 — Susanin пропускает напрямую (не заблокировано или в vpn_never). Установка вариант 1 - из архива Установщик скачивает готовый архив под вашу архитектуру, определяет LAN/VPN и (при наличии) OpenConnect, запрашивает подтверждение и запускает демон. Существующие susanin.conf, vpn_always.txt, vpn_never.txt и кэш сохраняются. Установка вариант 2 - пакетом Entware (.ipk) Начиная с 0.4.0 есть пакет .ipk: ставится и обновляется штатным opkg, конфиг, списки и состояние при обновлении не перезаписываются. Проще всего — дать установщику скачать пакет под вашу архитектуру и сверить SHA256: opkg update && opkg install ca-certificates wget-ssl wget -qO- https://raw.githubusercontent.com/R17a/Susanin.Keenetic/main/install.sh | sh -s -- --ipk Установка вариант 3 -Вручную В Assets лежат пакеты susanin-keenetic_0.4.0_<arch>.ipk и общий SHA256SUMS. Свою архитектуру показывает opkg print-architecture (например, mipsel-3.4): opkg print-architecture cd /opt/tmp wget https://github.com/R17a/Susanin.Keenetic/releases/download/v0.4.0/susanin-keenetic_0.4.0_mipsel-3.4.ipk wget https://github.com/R17a/Susanin.Keenetic/releases/download/v0.4.0/SHA256SUMS sha256sum -c SHA256SUMS 2>/dev/null | grep mipsel-3.4 # ожидаем: ...: OK opkg install susanin-keenetic_0.4.0_mipsel-3.4.ipk Демо Обновление sh /opt/susanin/tools/susanin.sh update # до последнего релиза sh /opt/susanin/tools/susanin.sh update v0.4.0 # конкретная версия Итого результат Работают: Youtube, X.com, DevArt, Claude и т.п. Телеграм работает без прокси Если на роутере установлено приложении OpenConnect, а на телефоне OpenConnect клиент - у Вас на сотовом телефоне "Весь интернет работает" Система сама обучается и строит рабочие маршруты Страница проекта тут https://github.com/R17a/Susanin.Keenetic Вопросы и пожелания в этой теме или в Телеграм https://t.me/Susanin_Keenetic
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.