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

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

Опубликовано
2 минуты назад, Ground_Zerro сказал:

Домены можно использовать вместе с geo.

Это понятно. Я говорю лишь о том, что базы несовершенны и лентяй полагающийся только на базу может столкнуться с проблемой в работе различных ресурсов. Списки созданные своими руками данного недостатка лишены. Либо можно принять базу за базу и дальше добавляя недостающие домены/адреса довести всё вручную до идеала. 

  • Ответов 154
  • Создана
  • Последний ответ

Топ авторов темы

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

HydraRoute Neo v.0.21.4-1
## Optimization
- Более быстрая обработка доменов и ipset при старте. Устройствам на mips/mipsel должно стать полегче.
подробней, кому интересно

Спойлер

Добавление IP в ipset работало неэффективно и содержало ошибку
Было два отдельных метода: один для хост-адресов (/32), другой для подсетей (CIDR). Метод для хостов делал отдельный сетевой вызов на каждый адрес — в два раза больше обращений к ядру, чем необходимо. При повторном запуске без очистки ipset CIDR-записи помечались как «только новые» — из-за этого адреса, добавленные DNS-мониторингом с временным сроком жизни, при загрузке CIDR не переводились в постоянные.
Решение: Оба метода объединены в один универсальный AddBatch. Все записи — и хосты, и подсети — отправляются в ядро пакетами. Флаг withTimeout чётко разделяет два режима: CIDR-записи всегда постоянные, DNS-записи — с таймаутом и отслеживанием новых адресов для сброса conntrack.

Загрузка GeoSite-доменов создавала лишнюю нагрузку на память
При загрузке GeoSite .dat-файлов функция дедупликации доменов работала неэффективно: количество точек в каждом домене пересчитывалось сотни тысяч раз в процессе сортировки, а для проверки вхождения в родительский домен каждый раз создавались временные строки через Split/Join — лишние аллокации памяти, особенно болезненные на роутере с MIPS-процессором. Список доменов перебирался лишний раз только ради одного отладочного счётчика.
Решение: Количество точек считается один раз до сортировки и сохраняется рядом с доменом. Проверка суффиксов переписана через срез строки — без единой аллокации в цикле. Лишний проход по списку устранён: счётчик собирается попутно в уже существующем цикле. Итог: на 10 000 доменов количество лишних вычислений сокращается в 50+ раз, временные строки в heap не попадают.

## Bugfix
- Некорректное завершение процесса при автозапуске из-за неготовности RCI.
- Запись пустой таблицы маршрутизации, когда интерфейс еще не готов.
подробней, кому интересно

Спойлер

HR падал при автозапуске на роутере
При загрузке роутер ещё не успевал поднять внутренний сервис управления (порт 79), а HR уже пытался к нему подключиться. Соединение зависало на 5 секунд, затем программа аварийно завершалась — без очистки правил и без записи причины в лог.
Решение: Если в конфигурации нет политик Keenetic (используется только прямая маршрутизация через интерфейс), обращение к порту 79 полностью пропускается. Если политики есть — программа делает до 5 попыток подключения с паузой 3 секунды между ними, и только после этого сообщает об ошибке.

Трафик терялся по SIGUSR1 при загрузке
Когда роутер перестраивал сетевые правила и отправлял сигнал обновления (SIGUSR1), HR удалял таблицу маршрутизации для интерфейса (например, WireGuard nwg1) и пытался добавить маршрут обратно. Но интерфейс в этот момент ещё не был готов к работе в ядре — маршрут не добавлялся, таблица оставалась пустой, весь трафик через этот интерфейс пропадал.
Решение: Если интерфейс не готов к маршрутизации, вместо пустой таблицы автоматически добавляется «заглушка» (blackhole-маршрут). Трафик безопасно отбрасывается до следующего сигнала обновления, когда интерфейс будет готов и маршрут установится корректно. Работает для всех типов интерфейсов.


HRWeb v.1.11.2-1
##Что нового
- Смена geo.dat источника
- Загрузка доменов и IP-диапазонов из отдельного репозитория
- Индексация Geo TAG для быстрого поиска категорий в веб интерфейсе
##Bugfix
- Дедупликация доменов


Репозиторий Geo-Aggregator
- Обновляемый раз в сутки geo репозиторий, объединяющий данные 4х популярных источников


Немного скриншотов.

Спойлер

+GitHub-GA поиск
image.thumb.png.9995b25be3bb8cb8487d6db98dd2243e.png

+GitHub-GA результат
image.thumb.png.016bd39458b00bd6674b0f326e2e3e21.png

+geo поиск
image.thumb.png.59f5cff58ec76e64bd1c50d443eb838b.png

+geo результат
image.thumb.png.83f56b6ff79a5be7d4e5955e08f24115.png

Geo TAG всех .dat файлов, указанных в конфигурации (в т.ч. сторонних), парсятся при ручном и автоматическом обновлении основного источника.
image.png.f417ce89535916bad463ce2e4e047d69.png

 

 

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

Приветствую.
Установка Hydraroute через Shellinabox не выполняется из-за проверки через LOGNAME.
переменная $LOGNAME отсутствует в терминале. Это легко поправимо через добавление переменной или исправить установочный скрипт на более надёжную проверку по GID/UID пользователя.

Spoiler
if [ "$(id -u)" -ne 0 ] || [ "$(id -g)" -ne 0 ]; then
    echo "Этот скрипт нужно запускать от root (uid=0, gid=0)." >&2
    exit 1
fi

у пользователя root всегда gid и uid = 0.

~ # id
uid=0(root) gid=0(root) groups=0(root)

 

И после установки, сервис доступен, но в него невозможно попасть через KeenDNS.
При переходе через встроенный прокси получаю ошибку 410.
 

Spoiler

image.thumb.png.456cc8376ad50bf02543c80cff423998.png

прокси настроен на форвард хттп на порт 2000.

Spoiler
~ # /opt/etc/init.d/S99hrweb check
Checking hrweb...              alive.

~ # netstat -nltp | grep hr
netstat: showing only processes with your user ID
tcp        0      0 192.168.192.1:2000      0.0.0.0:*               LISTEN      21092/hrweb

curl снаружи:

curl -IL hr.xxxxxxx.keenetic.pro
HTTP/1.1 302 Moved Temporarily
Server: Web server
Date: Mon, 09 Mar 2026 21:06:57 GMT
Content-Type: text/html
Content-Length: 143
Connection: keep-alive
Location: https://hr.xxxxxxx.keenetic.pro/

HTTP/2 200
server: Web server
date: Mon, 09 Mar 2026 21:06:58 GMT
content-type: text/html
content-length: 4879
expires: Mon, 09 Mar 2026 21:06:57 GMT
cache-control: no-cache
ndm-sysmode: router
x-frame-options: DENY
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-hashes' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline' 'unsafe-hashes'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; style-src-elem 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; base-uri 'self'; form-action 'self';
referrer-policy: strict-origin-when-cross-origin
ndm-stage: 4

curl на роутере:
 

~ # curl -IvL 192.168.192.1:2000
> HEAD / HTTP/1.1
> Host: 192.168.192.1:2000
> User-Agent: curl/8.12.1
> Accept: */*
>
< HTTP/1.1 302 Found
HTTP/1.1 302 Found
< Content-Type: text/html; charset=utf-8
Content-Type: text/html; charset=utf-8
< Location: /login
Location: ;;http://192.168.192.1:2000/login/login
< Date: Mon, 09 Mar 2026 21:16:42 GMT
;;Date: Mon, 09 Mar 2026 21:16:42 GMT
<

> HEAD /login HTTP/1.1
> Host: 192.168.192.1:2000
> User-Agent: curl/8.12.1
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: application/json
Content-Type: application/json
< Date: Mon, 09 Mar 2026 21:16:42 GMT
Date: Mon, 09 Mar 2026 21:16:42 GMT
< Content-Length: 62
Content-Length: 62
<

 

 

Spoiler
cat /opt/etc/entware_release

PRETTY_NAME="Entware 2025.05"
NAME="Entware"
VERSION_ID="2025.05"
VERSION="2025.05 (sync with OpenWrt)"
ID=entware
HOME_URL="https://entware.net/"
SUPPORT_URL="https://github.com/Entware/Entware/discussions/"
BUG_REPORT_URL="https://github.com/Entware/Entware/issues/"

Build summary:
Linux Kernel 3.4.112
arch=mipsel
cpu_type=mips32r2
cpu_subtype=unknown
float=soft
binutils_version="2.34"
gcc_version="8.4.0"
gcc_flags="-O2 -pipe -mno-branch-likely -mips32r2 -mtune=mips32r2 -fno-caller-saves -msoft-float"
libc_type=glibc
libc_version="2.27"
~ # opkg info hrweb

Package: hrweb
Version: 1.11.2-1
Depends: libc
Status: install user installed
Section: net
Architecture: mipsel-3.4
Maintainer: Ground_Zerro
Size: 3150367
Filename: hrweb_1.11.2-1_mipsel-3.4.ipk
Description: WebUI for HydraRoute Neo
Installed-Time: 1773087732

 


 

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

@Cyph3r

Про доступ по KeenDNS здесь.
Работает:
image.thumb.png.694a2e6697366b6756496dd474730f0e.png

$LOGNAME есть в CLI.
Дело не в gid и uid, они всегда будут 0 в т.ч. при входе в Entware через CLI под admin (exec sh).
Дело в наследуемых правах при установке HR из-под CLI - система откажет приложению в доступе к некоторым жизненно-важным функциям в т.ч. после перезагрузки роутера.

Детально не разбирался. Если есть информация или идеи буду рад их почитать в issues/PR на GH.

Опубликовано
3 hours ago, Ground_Zerro said:

Про доступ по KeenDNS здесь.

Спасибо.

Т.к. у меня нет доступа к CLI по SSH, установку поводил через web в shellinabox, убрав из скрипта проверку на пользователя. Затем удалил пакет с зависимостями и установил повторно прописав:

export LOGNAME=root

Никаких отличий в установке я не обнаружил

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

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

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

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

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

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

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

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

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

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

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

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

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