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

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

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

splash.jpg.2ded122f3f6c50fe3ea9f2ef62b40c4c.jpg

MagiTrickle - Маршрутизация трафика на основе DNS запросов для роутеров Keenetic (под управлением Entware).

(Продукт в данный момент находится в состоянии разработки)

Данное программное обеспечение реализует маршрутизацию трафика на основе проксирования через себя DNS запросов. Можно указать список доменных имён, которые нужно маршрутизировать на тот, или иной интерфейс, вместо бесконечного накопления IP адресов.

Особенности, в сравнении с другим ПО:

Spoiler
  1. Не требует отключения встроенного в Keenetic DNS сервера - всё работает методом перенаправления портов.
  2. Работает с любыми туннелями, которые умеют поднимать UNIX интерфейс.
  3. Несколько типов правил - domain, namespace, wildcard и regex.
  4. Не тянет за собой огромное количество сторонних пакетов пакетов. Вся конфигурация находится в одном месте (в одном файле).
  5. Возможность создавать несколько групп на разные сети.
  6. Моментальное бесшовное включение/выключение сервиса.

Roadmap:

Spoiler
  1. CLI интерфейс для добавления/удаления записей в режиме реального времени. (Уже заложен функционал обработки записей в реальном времени, необходимо заняться CLI интерфейсом)
  2. Дружелюбный к пользователю Web-GUI для конфигурации записей.
  3. Поддержка подсетей и диапазона IP адресов.
  4. Поддержка автообновляемых "подпискок" на список доменных имён (готовые списки подключаемые несколькими кликами мышки).

Установка:

Spoiler

Т.к. в данный момент нету никакого дружелюбного к пользователю интерфейсов - данное руководство рассчитано на тех, кому просто нужна маршрутизация на требуемые для него домены без отключения встроенного в Keenetic DNS сервера.

Программа не была досканально протестирована, возможны очень редкие "вылеты". Максимально возможный риск заключается в том, что придётся перезапускать роутер, но шанс этого маловероятен.

  1. Устанавливаем пакет:

    opkg install magitrickle_<version>_<arch>.ipk

     

  2. Копируем конфиг:
    cp /opt/var/lib/magitrickle/config.yaml.example /opt/var/lib/magitrickle/config.yaml

     

  3. Настраиваем конфиг (если не понимаете что делаете - не трогайте группу "app"!):
    configVersion: 0.1.1
    app:                          # Настройки программы - не трогайте, если не знаете что к чему
      httpWeb:
        enabled: true             # Включение HTTP сервера
        host:
          address: '[::]'         # Адрес, который будет слушать программа для приёма HTTP запросов
          port: 8080              # Порт
        skin: default             # Оболочка (по пути /opt/usr/bin/share/magitrickle/skins)
      dnsProxy:
        host:
          address: '[::]'         # Адрес, который будет слушать программа для приёма DNS запросов
          port: 3553              # Порт
        upstream:
          address: 127.0.0.1      # Адрес, используемый для отправки DNS запросов
          port: 53                # Порт
        disableRemap53: false     # Флаг отключения перепривязки 53 порта
        disableFakePTR: false     # Флаг отключения подделки PTR записи (без неё есть проблемы, может быть будет исправлено в будущем)
        disableDropAAAA: false    # Флаг отключения откидывания AAAA записей
      netfilter:
        iptables:
          chainPrefix: MT_        # Префикс для названий цепочек IPTables
        ipset:
          tablePrefix: mt_        # Префикс для названий таблиц IPSet
          additionalTTL: 3600     # Дополнительный TTL (если от DNS пришел TTL 300, то к этому числу прибавится указанный TTL)
      link:                       # Список адресов где будет подменяться DNS
        - br0
        - br1
      logLevel: info              # Уровень логов (trace, debug, info, warn, error)

     

  4. Запускаем сервис:
    /opt/etc/init.d/S99magitrickle start

     

  5. Добавляем адреса в панели сервиса по адресу "http://<IP_Роутера>:8080/"
  6. Если вам нужна отладка, то останавливаем сервис и запускаем "демона" руками:
    /opt/etc/init.d/S99magitrickle stop
    magitrickled

     

Ссылки:

Исходный код: https://github.com/Ponywka/MagiTrickle

Автоматические сборки: https://github.com/Ponywka/MagiTrickle/releases

Telegram канал: https://t.me/MagiTrickle

Telegram чат: https://t.me/MagiTrickleChat

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

Название другое можно было бы придумать)

Но тема интересная - подписался) Буду следить за развитием!

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

Доброго дня

Это здорово, что появляются новые продукты, но прошу Вас убрать в названии слово kvas.

Придумайте пожалуйста свое собственное, ведь это Ваш продукт, и полагаю к оригинальному Квасу, он не имеет никакого отношения - Ваша реализация, другой язык, похож лишь функционалом.

  • Ponywka изменил название на MagiTrickle - Маршрутизация трафика на основе DNS запросов
Опубликовано

Проект был переименован в "MagiTrickle"!

В связи с переименованием пакета, тем, кто успел установить его со старым именем, перед обновлением нужно будет провести миграцию:

/opt/etc/init.d/S99kvas2 stop
opkg remove kvas2
opkg install magitrickle_<version>_<arch>.ipk
mv /opt/var/lib/kvas2/config.yaml /opt/var/lib/magitrickle/config.yaml
/opt/etc/init.d/S99magitrickle start

 

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

Попросили убрать схожий нейминг: 

 

Ну и правильно сделал, индивидуальности добавил)

Опубликовано
51 минуту назад, Ponywka сказал:

Версия 0.1.0-9: https://gitea.20101010.xyz/Ponywka/MagiTrickle/actions/runs/38

Исправлены часть правил для IPTables

Вам бы ещё в телеге канал создать, поддержку и траблшутинг своего продукта организовать) цены бы не было)

Опубликовано
Just now, FLK said:

Вам бы ещё в телеге канал создать, поддержку и траблшутинг своего продукта организовать) цены бы не было)

Так-то могу, прост вряд-ли будет время этим всем заниматься. Всё же делается всё на энтузиазме, который имеет свойство пропадать

 

Опубликовано
Только что, Ponywka сказал:

Так-то могу, прост вряд-ли будет время этим всем заниматься. Всё же делается всё на энтузиазме, который имеет свойство пропадать

 

Ну никто не заставляет там висеть целыми сутками, я просто идею подкинул) не более

Опубликовано (изменено)
19 minutes ago, FLK said:

Ну никто не заставляет там висеть целыми сутками, я просто идею подкинул) не более

Ну... Адреса занял - а там посмотрю что да как...
https://t.me/MagiTrickle
https://t.me/MagiTrickleChat

Изменено пользователем Ponywka
Опубликовано
2 hours ago, FLK said:

web-ui в планах я так понимаю?

Ну... Сейчас я делаю API HTTP для CRUD записей + CLI. Условно когда доделаю API - подключится другой разработчик, который будет фронт (WebUI) делать. Сроков не дам, но предположительно уже скоро.

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

Ну... Сейчас я делаю API HTTP для CRUD записей + CLI. Условно когда доделаю API - подключится другой разработчик, который будет фронт (WebUI) делать. Сроков не дам, но предположительно уже скоро.

Ну будем ждать)

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

Для v0.1.3 появится тестовый WebUI, как только я смогу убедиться, что в релизе нет критических багов.

 

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

v0.1.3 (GitHub Release)

  • Добавлен HTTP сервер
  • Добавлен API (Swagger документация находится в файле docs/swagger.yaml)
  • Реализован базовый WebUI
  • Исправлены некоторые ошибки
  • Произведён частичный рефакторинг кода
Изменено пользователем Ponywka
Опубликовано (изменено)

v0.1.4 (GitHub Release)

  • Исправлен `config.yaml.example`
  • Исправлено падение приложения при существующем интерфейсе в `DOWN` состоянии
Изменено пользователем Ponywka
Опубликовано (изменено)
On 2/24/2025 at 7:36 PM, Granite said:

Прошу включить комментарии в телеге.

Проблемка в том, что в Telegram нельзя к каналу привязать чат с топиками, а следить за двумя чатами я не очень хочу... В закреплённом сообщении есть ссылка на чат - можно там обсудить что да как.

Изменено пользователем Ponywka
Опубликовано
2 hours ago, pegakmop said:

А в чем проблема основной чат привязать до канала?)

 

On 2/25/2025 at 12:14 PM, Ponywka said:

Проблемка в том, что в Telegram нельзя к каналу привязать чат с топиками

 

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

Проблемка в том, что в Telegram нельзя к каналу привязать чат с топиками

Та их и сейчас нету🫣

Опубликовано
1 hour ago, Андрей Волосков said:

Подскажите, если ставить на внутреннюю память роутера, проблем не будет? 

Ну проблема максимум в том, что пакет весит 9 мегабайт в расжатом виде, а так можно.

На счёт веса - будет исправлено в будущем, сейчас пока не до этого.

Опубликовано

417838997-dda9139b-3c27-4512-ad54-6be63d860ec6(1).thumb.png.6e1dad422fc0398099e724c7312760ff.png

v0.1.5 (GitHub Release)

  • Добавлен полноценный WebUI (спасибо @shevernitskiy)
  • Старый WebUI переименован в "legacy" (указать в app.httpWeb.skin)
  • Добавлена возможность отключать обработку правил для IPv6/IPv4 (app.netfilter.disableIPv6 и app.netfilter.disableIPv4 соответственно)
  • Группам теперь можно задавать цвета
  • Был возвращён назад пакет socat вместо тяжелого бинарника, а также основной бинарник был сжат с помощью upx[1]

[1] Могут быть проблемы на некоторых архитектурах. Мной было проверено на mipsel - полёт нормальный. Как на других роутерах, увы, неизвестно!

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

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

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

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

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

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

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

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

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

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

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

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