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

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

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

Добрый день. 

Возникла задача управления трафиком в политиках, через WEB интерфейс и без использования DNS.
И так за пару дней с помощью ИИ и чей то матери родилось следующее решение.

В архиве сам вэб интерфейс и php скрипты для бэкэнда и cron.

Из доп пакетов потребуется, nginx, php в моем случае (php8-fpm + php8-cli), SQLite3 и cron.

Для функционирования потребуется:

  1. Настраиваем связку nginx + php.
  2. В config.php прописываем: пароль от учетки, путь к файлам, в моем случае ('/opt/share/www/'), если путь другой то в php скриптах в первой строчке кода, надо тоже поменять.
  3. Создаем базу через create_db.php
  4. Если есть желание запихиваем sync_policies.php и update_route.php в крон. Если политики часто не создаете то sync_policies.php можно не прописывать в cron, а синхронизировать через WEB интерфейс.

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

Принцип работы:

  1. Скрипт дергает из кинетика список политик 'http://127.0.0.1:79/rci/show/ip/policy';
  2. Для каждой политики есть своя маркировка трафика к примеру 0xffffaaa;
  3. Создается БД с политиками и доменами+информация о маршрутах;
  4. Для каждой политики в БД можно добавить запись: Домен + интерфейс + маршрут;
  5. Скрипт получает список IP для каждого домена и собирает для каждой политики свою дополнительную таблицу маршрутизации (стартовый номер отсчета можно изменить в config.php, но выше 1000 создать не дает);
  6. После чего добавляет данные таблицы к нужному маркеру.
  7. Через WEB интерфейс или по крону можно обновлять IP для доменов и перестраивать таблицы маршрутизации.

Что это все дает:

  1. Возможность маршрутизировать трафик по доменам, при этом кинетику не обязательно быть DNS сервером, перехватывать запросы и все вот это;
  2. Интеграция с политиками доступа от кинетика. Можно гибко управлять кому куда в самом кинетике. К примеру в моем варианте (скриншот 2), мне требовалось жестко прописать домен детского мира мимо КВН. Но только для одной политики.
  3. Работает с использованием штатном функционале кинетика (за исключением описанных выше пакетов), скрипт только рулит маршрутами.

P.S.

Делал для себя, если что не так не сердчайте, глюки обеспечены))

Screenshot_16.png

Screenshot_15.png

Screenshot_14.png

KDR.zip

Изменено пользователем Vinni37
Изменил описание
  • 3 месяца спустя...
Опубликовано (изменено)

UPD. Погонял ИИ ещё по кругу, накопилось достаточно изменений. 

Что поменялось:

Безопасность, много чего пофикшено

Стабильность

  1. Вынес всю логику в lib.php, чтобы веб-интерфейс и крон-скрипты не расходились между собой (up дублировался код, где-то уже начало отличаться);
  2. Добавил busyTimeout на SQLite - крон и веб могли одновременно писать в базу и получать "database is locked";
  3. PHP warning/notice больше не ломает JSON-ответ на фронте (было такое - падало с "Unexpected token '<'" если DNS резолв где-то споткнулся);
  4. Убрал filter_var() - на минимальных сборках PHP для Entware этого расширения может не быть, падало с "undefined function".

Функционал

  1. Теперь можно добавлять не только домен, а ещё голый IP или CIDR (10.0.0.0/24) - если это IP/подсеть, DNS не резолвится, оно сразу идёт в таблицу маршрутизации как есть;
  2. Кнопки переделал: Sync policies / Check & apply (резолв + применение одним кликом, то же что крон делает) / Apply routes (на всякий случай, без резолва, просто переприменить то что есть в базе);
  3. Уведомления по-человечески - тосты с реальными цифрами (сколько политик добавилось/обновилось, сколько маршрутов применилось), вместо системных alert/confirm.

Морда
Перерисовал полностью - тёмная тема, статусы доменов через LED-индикаторы (как на самом кинетике), стало гораздо контрастнее. Заодно починил вёрстку под телефон - раньше на мобиле всё в кашу превращалось, теперь нормальные карточки, и в ландшафтной ориентации таблица не обрезается за край экрана.

В архиве теперь ещё и README с шагами установки и отдельно config.example.php - переименуйте в config.php и впишите свой пароль, реальный конфиг с паролем я из архива убрал, чтоб случайно не расшарить.

Как и в прошлый раз - тестил только на своей связке, глюки не исключены, если что не заводится - пишите, разберёмся.

screenshot_gateway_redacted.png

keenetic-dns-router.zip

Изменено пользователем Vinni37

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

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

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

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

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

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

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

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

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

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

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

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