-
Постов
114 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Тип контента
Профили
Форумы
Галерея
Загрузки
Блоги
События
Весь контент Ponywka
-
Здравствуйте! В продолжение темы "Keenetic NDMS очищает IPTables во время запуска программы" хотел бы дополнить свои хотелки на счёт событий "/opt/etc/ndm/***". Так получилось, что мой софт не является Bash скриптом, и чтобы ловить события "netfilter.d" - мне пришлось написать небольшой костыль, который тянет за собой пакет "socat" и с помощью него "пробрасывает" это событие в мою программу: https://github.com/MagiTrickle/MagiTrickle/blob/0cc26dd0762e69294476a173502068e3359cb2c3/opt/etc/ndm/netfilter.d/100-magitrickle #!/bin/sh SOCKET_PATH="/opt/var/run/magitrickle.sock" [ -S "$SOCKET_PATH" ] || exit BODY="{\"type\":\"$type\",\"table\":\"$table\"}" LENGTH=$(printf "%s" "$BODY" | wc -c) socat - UNIX-CONNECT:"$SOCKET_PATH" >/dev/null 2>&1 <<EOF POST /api/v1/system/hooks/netfilterd HTTP/1.1 Host: Content-Type: application/json Content-Length: $LENGTH $BODY EOF Очень хотелось бы обойтись без подобных костылей и вместо этого получать эти события по тем же UNIX-сокетам или же любым другим способом, удобным на команды разработки Keenetic NDMS.
-
Здравствуйте! Я являюсь разработчиком пакета MagiTrickle. В чате по моей программе неоднократно жаловались на проблему с автоматическим запуском программы после перезагрузки роутера. В свою очередь у меня же такой проблемы не наблюдалось и очень долго для меня было загадкой такое странное поведение программы. Добавив скрипт на автоматический перезапуск роутера и также собирая логи, в один из перезапусков я получил от своей программы следующие ошибки: Здесь сервис успел запуститься, а "error while fixing iptables in group" возникает на событие "/opt/etc/ndm/netfilter.d/***". Здесь по дублирующимся логам (вторая и третья ошибка) можно понять, что очистка IPTables вызывалась несколько раз за короткий промежуток времени, что и вызывало ошибку "iptables: No chain/target/match by that name", однако учитывая, что софт по итогу в любом случае получал событие "/opt/etc/ndm/netfilter.d/***" - я закрывал на это глаза. По итогу, когда мне предоставили логи, возникающие во время запуска моей программы, до меня наконец дошло по какой причине моя программа не запускается должным образом: Так совпало, что очистка IPTables со стороны Keenetic NDMS вызывалась в тот момент, когда моя программа только-только запускалась, т.е. по временной линии это выглядит как: MagiTrickle создаёт цепочку в IPTables с названием MT_xxxxxxxx. MagiTrickle наполняет цепочку MT_xxxxxxxx. Keenetic NDMS в этот же момент очищает IPTables. MagiTrickle упал в ошибку, ибо он все ещё наполнял цепочку, которой уже не стало. Ошибки во время запуска я игнорировать не могу, ибо неправильное заполнение IPTables (когда iptables возвращает статус 1) подразумевает неправильную работу IPTables требующего постороннего вмешательства (например, если пакет установлен на другой роутер, предположим на AsusWRT, где может не быть какого-то модуля ядра Linux расширяющего функционал IPTables - Entware всё-таки не привязан к Keenetic; а собственно мой софт тоже). Следует также помнить, что мой софт не является Bash скриптом - это исполняемый бинарный файл, который вызывается (автоматически) только один раз - во время запуска службы ("/opt/etc/init.d/***"). Из всего вышесказанного хотелось бы получить какое-то решение со стороны команды разработчиков Keenetic по поводу данной проблемы. Одни из вариантов: В Keenetic NDMS перестать очищать IPTables (предположительно требует очень много работы со стороны команды разработчиков Keenetic, так что обрасывается); Keenetic NDMS может сообщать по тем же эвентам о том, что он намеревается очистить IPTables за условные пол секунды до очистки, чтобы софт мог "подождать" работу Keenetic NDMS перед выполнением своих команд (предполагает добавление таймаутов, что будет являться костылём в Keenetic NDMS); Добавить в Keenetic NDMS возможность блокировать очистку IPTables на условные 5 секунд, когда сама программа (а по факту скрипт запуска службы в файле "/opt/etc/init.d/***") будет сообщать Keenetic NDMS о том, что сейчас лучше не очищать IPTables и требуется подождать. Буду рад ответу со стороны команды разработчиков Keenetic!
- 4 ответа
-
- 7
-
-
v0.1.6 (GitHub Release) * Добавлен оверлей блокирующий управление во время сохранения записей. * Добавлена поддержка события SIGHUP ("/opt/etc/init.d/S99magitrickle reconfigure"). * Добавлен флаг Enable у Group. * Убран флаг FixProtect у Group. * Улучшена совместимость Frontend с Windows 7. * Frontend теперь подстраивается под мобильный интерфейс. * Исправлен баг, когда у стороннего интерфейса (созданного вне Keenetic NDM) пропадало правила доступа в интернет. * Исправлен баг, возникающий при перемещении правил между группами. * Отрефакторена API часть Backend (спасибо @dan0102dan).
-
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 - полёт нормальный. Как на других роутерах, увы, неизвестно!
-
-
Проект был переименован в "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
-
MagiTrickle (произносится как Мэджитрикл) – утилита для точечной маршрутизации сетевого трафика по заданным доменным именам. Представляет собой установочный пакет, устанавливаемый в дополнение к операционной системе маршрутизатора. Принцип работы основан на подмене основного DNS-сервера через промежуточный компонент без его отключения. Это позволяет перехватывать входящие DNS-запросы, кешировать ответы и сопоставлять IP-адреса с доменными именами. Благодаря этому становится возможной маршрутизация трафика без необходимости очистки DNS-кэша на стороне клиентов. Очистка кэша требуется только при запуске или перезапуске сервиса MagiTrickle, поскольку в этот момент кэш ещё не прогрет, и маршрутизация невозможна до первого запроса к нужному домену. Установка пакета: Описание типов правил: Поддержка: Официальный сайт Канал Telegram Чат Telegram Финансовая поддержка (Boosty) Исходный код: GitHub / GitLab Автоматические сборки: GitHub / GitLab
- 267 ответов
-
- 24
-
-
