Keenetic Hopper DSL + Entware + XKeen: VLESS на старом роутере, проблемы, XMUX и решения

Я настраиваю роутеры клиентам, и каждая модель приносит свои особенности. На Keenetic Hopper DSL (KN-3610) удалось установить Entware и запустить VLESS-клиент XKeen. Установка упёрлась в выбор архитектуры и в канал до репозитория. После запуска скорость оказалась близка к скорости канала, а при нагрузке выявились два ограничения: платформы (процессор, память) и конфигурации (параметр XMUX транспорта
xhttp). Для постоянного проксирования под нагрузкой я рекомендую более новую модель, например Netcraze Titan SE.
Исходные данные
| Параметр | Значение |
|---|---|
| Модель | Keenetic Hopper DSL (KN-3610) |
| Прошивка | KeeneticOS 5.01.C.7.0-4 |
| SoC | EcoNet EN7516G, 900 МГц |
| Оперативная память | 256 МБ (в простое свободно около 135 МБ) |
Архитектура (show version, поле arch) |
mips (big-endian) |
| Накопитель | USB-флешка, ext4, один USB-порт |
| Задача | VLESS-клиент на роутере с разделением трафика |
Почему VLESS. По моим наблюдениям, средства фильтрации трафика всё лучше распознают WireGuard и AmneziaWG, особенно в сторону крупных зарубежных хостингов. VLESS с маскировкой под TLS работает в таких условиях стабильнее. Это практическое наблюдение, формального исследования я не проводил.
Проблема 1. Не та архитектура установщика
Симптом. Установка не стартует или ставятся несовместимые пакеты.
Причина. Большинство инструкций рассчитано на современные модели и предлагает aarch64. Старые модели на EcoNet работают на big-endian MIPS, и для них нужен другой каталог.
Решение. Определить архитектуру в CLI роутера:
show version
Поле arch определяет установщик:
arch |
Каталог на bin.entware.net |
|---|---|
mips |
mipssf-k3.4 |
mipsel |
mipselsf-k3.4 |
aarch64 |
aarch64-k3.10 |
Для arch: mips:
https://bin.entware.net/mipssf-k3.4/installer/mips-installer.tar.gz
Ветка mips-k3.4 поддерживается меньше, чем aarch64 и mipsel, и выбор пакетов в ней уже.
Проблема 2. Два способа запуска установки
Способ А. Файл на накопителе. Скачать архив на компьютер, положить на накопитель в папку install без распаковки, затем выбрать накопитель на странице OPKG.
Способ Б. Ссылка в команде CLI:
opkg no disk
opkg disk <идентификатор_накопителя>:/ https://bin.entware.net/mipssf-k3.4/installer/mips-installer.tar.gz
Роутер сам скачивает установщик по ссылке.
Что проверить. Идентификатор накопителя должен существовать. Список томов выводит команда ls в CLI. Несуществующий идентификатор роутер принимает без ошибки, но установка не начинается. Если после выбора диска в журнале есть только запись о назначении диска, установщик не запущен.
Признак успешного старта: в системном журнале появляются записи installer с шагами [1/5] … [5/5].
Проблема 3. Загрузка пакетов обрывается на шаге [2/5]
Симптом. Установка доходит до загрузки основных пакетов и останавливается. На накопителе остаётся около 11 МБ данных, порт 222 не отвечает.
Причина. Пакеты загружаются с bin.entware.net. Результат зависит от канала до этого сервера, а не от роутера. У ряда провайдеров соединения с ним рвутся или сильно замедляются.
Диагностика, от простого к сложному:
- Открыть
https://bin.entware.net/mipssf-k3.4/в браузере и скачать файл покрупнее. - Повторить с мобильного интернета и сравнить.
- На роутере выполнить
tools ping bin.entware.net, проверить дату и время. - Проверить DNS в настройках подключения и сравнить публичные адреса с DNS провайдера.
- Проверить MTU. В моём случае он был в норме (1500 на WAN, 1420 на WireGuard), причина оказалась не в нём.
Решение. На время установки я пустил трафик роутера через WireGuard-туннель. После этого загрузка и установка пакетов, а затем и настройка XKeen прошли без обрывов. Подойдёт и другой канал, например раздача с телефона. Установщик загружает немного данных, после установки канал можно вернуть.
Состояние туннеля стоит проверять отдельно: show interface <имя>, свежий last-handshake и растущие счётчики. Иначе можно принять работу через канал за работу через туннель.
Проблема 4. Could not lock /opt/tmp/opkg.lock
Симптом. Любая команда opkg сообщает, что ресурс временно недоступен.
Причина. Другой процесс opkg ещё работает. Чаще это предыдущий opkg install, который медленно загружает зависимость.
Диагностика:
ps | grep opkg
ls -l /opt/tmp/opkg-*/
Выполнить ls дважды с паузой 10 – 15 секунд. Если размер скачиваемого файла растёт, загрузка идёт. Если не меняется больше минуты, она остановилась.
Решение, только если загрузка остановилась:
killall opkg wget
rm -f /opt/tmp/opkg.lock
rm -rf /opt/tmp/opkg-*
opkg update
Не прерывать процесс, пока установщик Entware не прошёл шаги [1/5]–[5/5].
Проблема 5. Повреждённые остатки после обрыва
Симптом. В журнале при старте роутера: failed to inflate ... tar block is not aligned, затем ошибка менеджера OPKG.
Причина. После оборванной загрузки на накопителе остались неполные архивы.
Решение. Удалить временные файлы /opt/tmp/opkg-*. Если ошибка повторяется или установка явно повреждена, отформатировать накопитель в ext4 и начать установку заново.
Проблема 6. Два порта SSH
| Порт | Что открывается | Приглашение | Команды |
|---|---|---|---|
| 22 | CLI KeeneticOS | (config)> |
show, opkg disk, components |
| 222 | Оболочка Entware | ~ # |
opkg update, opkg install, ps, ls |
Команда opkg update в CLI роутера вернёт no such command. Порт 222 появляется только после успешной установки Entware. Стандартный пароль на 222 нужно сменить сразу после установки.
Проблема 7. Массовая недоступность сайтов под нагрузкой: XMUX
Симптом. Туннель поднят и работает, но при нескольких одновременных проверках доступности или при работе нескольких устройств часть сайтов недоступна. Нагрузка на процессор роутера при этом подскакивает до предела.
Что я наблюдал. На моём собственном роутере в схеме с транспортом xhttp и TLS мобильное приложение Happ с тем же сервером стабильно проходило тесты и держало туннель, а роутер с XKeen нет. Параметр XMUX в конфиге клиента на роутере я прописал последним, после того как выяснил, что Happ задаёт эту настройку по умолчанию. После этой правки роутер стал стабильно проходить тесты. Остальные изменения (ограничение портов, контроль дескрипторов) к тому моменту уже были внесены.
Решение. В streamSettings исходящего подключения явно указать xmux:
"xhttpSettings": {
"path": "/",
"mode": "auto",
"xmux": {
"maxConcurrency": 32
}
}
maxConcurrency: 32 означает, что до 32 параллельных запросов используют одно соединение, прежде чем открывается новое.
Ограничение. maxConnections и maxConcurrency взаимоисключающие, задавать нужно только одно из них. Xray-core отвергает конфиг, где ненулевые значения заданы оба.
Чего я не выяснял. Почему явная настройка помогает, если у ядра есть свои значения по умолчанию. По истории проекта Xray-core, значения по умолчанию там заданы как диапазон 16 – 32, поэтому причина может зависеть от версии ядра или от того, что хранит клиентский конфиг. Число соединений до сервера с xmux и без него я не считал, поэтому механизм описываю как гипотезу: без явной настройки роутер открывает много отдельных TLS-соединений.
Что важно для тех, кто собирает конфиг. Конверторы ссылок и URI в JSON-конфиг для Xray, как правило, не добавляют xmux самостоятельно. Проверьте результат вручную.
Как проверить на своём роутере. Меняйте один параметр за раз:
- Выяснить версию ядра:
xray version. - Прогнать нагрузочный тест без
xmux. Во время теста выполнитьxkeen -cfdи посчитать соединения к серверу:netstat -tn | grep <адрес_сервера>:<порт> | wc -l, а также посмотретьtop. - Добавить
xmux, выполнитьxkeen -restartи повторить тест с теми же замерами.
Тестирование Hopper DSL
Скорость. Замеры скорости через роутер с XKeen оказались близки к замерам на канале провайдера.
Синтетический тест доступности. Я прогнал роутер через тест на странице https://rootrouter.ru/online/. Тест не пройден. Во время теста загрузка процессора подскакивала до 100%. Туннелю не хватало сессий, срабатывало правило чёрной дыры, и часть соединений отбрасывалась. На этом роутере параметр XMUX в конфиг не был прописан.
Ручная проверка. Доступность при ручной проверке составила около 100%. В обычных сценариях (веб, видео, мессенджеры) роутер работает штатно.
Как я это трактую. Синтетический тест создаёт много параллельных соединений за короткое время. Это предельный режим, по нему я оцениваю запас, а не повседневную работу. Повторный тест на Hopper DSL с прописанным XMUX у меня в планах. Пока я не знаю, насколько параметр сдвинет потолок на этой модели, а процессор 900 МГц и 256 МБ памяти от конфигурации не зависят.
Как снизить нагрузку
- Явно прописать
xmuxдляxhttp(проблема 7). - Проксировать только нужные домены и подсети. Остальной трафик пускать напрямую.
- Ограничить проксируемые порты. Для веб-трафика обычно достаточно
80,443:xkeen -ap 80,443, проверка текущего режимаxkeen -cp. - Включить контроль файловых дескрипторов:
xkeen -fd, состояние смотреть командойxkeen -cfd. - Не держать лишние пакеты и службы на Entware.
- Следить за памятью (
free) и средней нагрузкой (cat /proc/loadavg) во время реальной работы, а не в простое. - Отключить туннели и службы, которые больше не нужны после установки.
- Если упираетесь в число сессий, проверить лимит таблицы соединений в настройках роутера (в моей конфигурации
ip conntrack max-entriesстояло 16384). Что именно ограничило число сессий в моём тесте, я не выяснял, это направление для проверки, а не установленная причина.
Порядок установки, который сработал
- Определить архитектуру:
show version. - Включить компонент «Пакеты OPKG», отформатировать накопитель в ext4.
- Убедиться, что роутер стабильно качает с
bin.entware.net. Если нет, использовать туннель или другой канал. - Запустить установку одним из двух способов (проблема 2) и дождаться шага
[5/5]. - Зайти по SSH на порт 222, выполнить
opkg update, сменить пароль. - Установить
curlиtar, затем XKeen по инструкции проекта. - Настроить VLESS-подключение. Для
xhttpсразу прописатьxmux. - Ограничить проксируемые порты и включить контроль дескрипторов.
- Настроить правила разделения трафика, прогнать тест под нагрузкой.
- Вернуть канал в обычное состояние, отключить временный туннель.
Вывод
Старые Keenetic настроить можно, но ограничения платформы проявляются при пиковой нагрузке. Трудности настройки оказались в четырёх местах: архитектура установщика, канал до репозитория, ресурсы роутера и параметр XMUX в клиентском конфиге. В обычных сценариях Hopper DSL с XKeen работает штатно, а скорость близка к скорости канала. Если роутер нужен для постоянного проксирования под большим числом соединений, я рекомендую брать новую модель, например Netcraze Titan SE. Актуальные характеристики сверяйте в документации производителя.
