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

Рекомендуемые сообщения

Опубликовано (изменено)

Всем привет!

Проекту нужны желающие поучаствовать в открытом тестировании адаптивной VPN-маршрутизации.
https://github.com/R17a/Susanin.Keenetic

Статус: активная разработка / полевое тестирование. Проверено на Keenetic Viva (MT7621, MIPS), KeeneticOS 5.1.4, Entware, WireGuard/ASCWG-туннель. Основная среда — legacy iptables + ipset (nftables на этом ядре нет).

Проект разработан на основе статьи на Habr и проекта Fiark/susanin (адаптивная VPN-маршрутизация для MikroTik RouterOS), портирован на роутеры Keenetic/Entware.

Адаптивная маршрутизация - автоматически обнаруживает заблокированные направления, пробует их через VPN-туннель, запоминает рабочие пути и возвращается в прямой доступ (fail-open), если туннель недоступен. Дополнительно поддерживает простой список доменов, которые должны идти через VPN всегда (без ручных списков IP — только имена, как в Keenetic). Всё это как- "Маршрутизация DNS" на стероидах.

Не является VPN-клиентом: туннель (WireGuard/ASCWG «Дополнительное подключение») должен уже работать,
IPv6 не поддерживается.


Что делает

  • наблюдает за поведением соединений (conntrack), а не за содержимым;
  • по «тихим» признакам блокировок (TCP SYN без ответа, QUIC/UDP без reply, TCP-stall, late-stall) отправляет IP на проверку через VPN;
  • подтверждает рабочие направления (кэш ok) и запоминает их постоянно (ok_ttl=0, переживает перезагрузки; снимает сам, если маршрут через VPN перестал отвечать);
  • TCP и UDP/QUIC учит раздельно;
  • список доменов «всегда через VPN» (vpn_always.txt): эти направления всегда идут в туннель;
  • список доменов "всегда напрямую) (vpn_never.txt): эти направления всегда НЕ идут в туннель;
  • если сайт ответил по основному каналу, он не заворачивается в VPN (кандидатами становятся только направления без ответа);
  • fail-open: при недоступности туннеля — прямой доступ (DIRECT);
  • автоматически чинит правила, если их снёс NDM (Web-UI change) — reconcile;
  • может маршрутизировать и клиентов OpenConnect-сервера на этом же роутере (интерфейс oc0): установщик находит сервер и предлагает добавить его в маршрутизацию;
  • работает как демон под Entware (/opt), управление — только CLI/SSH.
  • Не является VPN-клиентом: туннель (WireGuard/ASCWG «Дополнительное подключение») должен уже работать. IPv6 в v1 не поддерживается.

Домены, которые всегда через VPN
Адаптивное обучение не требуется для заведомо заблокированных сервисов (например, Devart, Claude/Anthropic в РФ). Список задаётся файлом /opt/susanin/etc/vpn_always.txt (по одному домену / IPv4 / CIDR на строку).

Домены, которые всегда НАПРЯМУЮ (never VPN)
Обратный список — направления, которые никогда не должны уходить в VPN (например, собственный прокси на RU-сервере). Файл /opt/susanin/etc/vpn_never.txt (домен / IPv4 / CIDR), по умолчанию пустой.

OpenConnect VPN на том же роутере
Если на роутере установлено и работает приложение OpenConnect VPN (ocserv), установщик сам находит его интерфейс (oc0) и спрашивает:

Цитата

OpenConnect server detected (oc0). Add it to Susanin routing? [y/N]

Достаточно ответить y (или yes); при запуске с --yes добавление происходит без вопроса. Что делает установщик при согласии:

  • добавляет интерфейс oc0 в lan_interfaces;
  • добавляет подсеть клиентов OpenConnect (например, 172.16.5.0/24) в lan_subnets (значение берётся из ipv4-network в /var/run/ocserv/ocserv.conf или из адреса интерфейса);

    После этого трафик подключённых клиентов (телефон/ноутбук через OpenConnect) обрабатывается Susanin так же, как трафик LAN: заблокированное уходит в VPN, остальное — напрямую; отдельные NAT-правила не требуются.

Требования

  • KeeneticOS с установленным Entware;
  • пакеты Entware: ipset, conntrack, busybox, iptables (legacy);
  • работающий VPN/туннель (WireGuard/AmneziaWG) — интерфейс egress;
  • LAN-интерфейсы (обычно br0, br1);
  • в KeeneticOS отключена «Маршрутизация DNS» (доменные маршруты/профили DNS, уводящие домены в туннель) — иначе NDM и Susanin конфликтуют;
    DNS_Route.png
     
  • настроен шифрованный DNS (DoH/DoT) — на роутере: провайдер может подменять/резать DNS для части доменов (YouTube и др.), и тогда клиент не получит реальный IP даже при рабочем VPN;

    Указано как пример.
    DNS.png
     
  • root-доступ по SSH.


Установка

Цитата

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

или

Цитата

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

Демо
demo.png

Обновление

sh /opt/susanin/tools/susanin.sh update            # до последнего релиза
sh /opt/susanin/tools/susanin.sh update v0.3.5     # конкретная версия

Демо
demo2.png


Итого результат

  • Работают: Youtube, X.com, Claude и т.п.
  • Телеграм работает без прокси
  • Если на роутере установлено приложении OpenConnect, а на телефоне OpenConnect клиент - у Вас на сотовом телефоне "Весь интернет работает"
  • Система сама обучается и строит рабочие маршруты


Страница проекта тут https://github.com/R17a/Susanin.Keenetic
Вопросы и пожелания в этой теме или в Телеграм https://t.me/Susanin_Keenetic

 

 

 

Изменено пользователем R17a
Опубликовано (изменено)

У меня только 1 вопрос. А зачем это все? Зачем выдумывать велосипед да еще и с квадратными колесами, если уже давно (в том числе здесь на форуме) есть достаточно успешные и проверенные временем проекты типа MagiTrickle и другие?

Изменено пользователем FLK
Опубликовано

Штатное решение "Маршрутизация DNS":

- особо не обучается (добавления новых адресов ноль)

- поддержки подсетей ноль

Про други проекты сказать не могу т.к. н использовал и какие у них колёса нет знаю.

Воросты про маршрутизацию VPN вижу как тут, так и в https://t.me/Netcraze - если есть у  людей вопросы, в том числе и не отвечэеэные - вопрос актуален или все не знают про "проверенные временем проекты типа MagiTrickle и другие"..

Опубликовано
1 час назад, FLK сказал:

У меня только 1 вопрос.

Вопрос только в размещении темы не в том разделе, а народное творчество всегда на пользу. Тут вроде самообучающийся маршрутизатор, в МТ такого нет, как и в других маршрутизаторах. Такой велосипед ещё не ездил.  

Опубликовано (изменено)
1 час назад, R17a сказал:

Штатное решение "Маршрутизация DNS":

- поддержки подсетей ноль

В каком смысле 0?)

Цитата
  • по «тихим» признакам блокировок (TCP SYN без ответа, QUIC/UDP без reply, TCP-stall, late-stall) отправляет IP на проверку через VPN;

Это в принципе и все "самообучение"? Я правильно понимаю?

 

Изменено пользователем FLK
Опубликовано
6 часов назад, FLK сказал:

В каком смысле 0?)

Задача с одной неизвестной.
Дано:

  • работающее VPN подключение в "Другие подключения"
  • Маршрутизация > Маршруты DNS > Правила маршрутизации (выбрано активное VPN подключение)

Как роутеру объяснить, что мне 57.144.0.0/14, 157.240.0.0/16, 185.60.216.0/22, 31.13.64.0/18 и т.д. нужно заворачивать в работающий VPN ?

 

6 часов назад, FLK сказал:

Это в принципе и все "самообучение"? Я правильно понимаю?

Если описанной информации в первом сообщении или на GitHub мало, предлагаю ознакомится со статьёй на Habr (держа в голове, что я портировал с MikroTik на Keenetic всё, кроме специфики RouterOS).

Если вся переписка это просто хейт, предлагаю уйти в личные сообщения.

«Колхоз — дело добровольное: хочешь — иди, хочешь — со стороны гляди» (С) Шолохов

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   1 пользователь онлайн

×
×
  • Создать...

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

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