XKeen это набор скриптов для роутеров Keenetic с прокси клиентом Xray-core/Mihomo, с помощью которого можно оптимизировать производительность интернет-подключения и обеспечить его безопасность. Подробнее о проекте - XKeen на форуме KeeneticFAQ по XKeenFAQ по XKeen предназначен для тех, у кого возникли дополнительные вопросы после внимательного прочтения инструкции, а также охватывает ситуации, которые напрямую к XKeen не относятся, но возникают в процессе его использования. FAQ в основном посвящен вопросам использования ядра Xray, которым пользуется автор данного материала, разбор вопросов по второму поддерживаемому ядру Mihomo ожидайте от пользователей этого ядра.

Часто задаваемые вопросы и ответы по XKeen

0

Q: Настроил xkeen/xray, всё работало, ничего не трогал, настроек не менял. Внезапно (прокси упал/сайты перестали открываться). Куда копать? Что можно предпринять?

A: При внезапных проблемах с XKeen, причина может быть в устаревшем ядре Xray. Оригинальный XKeen не обновляет ядро выше версии 1.8.4. Если у вас установлен оригинал, то рекомендую перейти на форк XKeen. При невозможности перехода на форк, обновите ядро Xray в роутере другим способом. Общий порядок действий по поиску причины неработающего проксирования следующий:

- Если роутер на процессоре mips(le) не используйте Xray 26.3.27, смените версию
- Удалите в файле 04_outbounds.json строчку с параметром: "allowInsecure": true,
- Смените в файле 04_outbounds.json отпечаток uTLS на: "fingerprint": "firefox",
- Убедитесь, что установлен XKeen и ядро-проксирования (Xray/Mihomo) актуальных версий
- Подберите другой SNI (маскировочный домен) и замените его на сервере и в роутере
- Отключите IPv6 в настройках роутера и командой xkeen -ipv6
- Удалите настройки DNS из конфигов прокси-клиента
- Проверьте стоит ли галка на провайдере у политики XKeen
- Заблокируйте протокол QUIC (пункт 6 этого FAQ)
- Проверьте прописаны ли в роутере DoH или DoT серверы (игнорировать DNS провайдера не нужно)
- Отключен ли транзит DNS запросов в роутере?
- Нет ли в журнале Кинетика ошибок на DNS?
- Есть ли в inbounds параметр "routeOnly": true,?
- Отключен ли частный MAC и частный/безопасный DNS на устройствах и в браузерах?
- Попробуйте удалить политику XKeen и запустить проксирование для всех клиентов роутера
- Проверьте подключение к другому прокси-серверу
- Проверьте подключение к прокси с помощью любого приложения на смартфоне через WiFi Кинетика (не через мобильный интернет)

Если ничего из этого не помогло, выполните xkeen -diag и прикрепите диагностический отчёт к сообщению в телеграм-чате, описав результаты диагностики по каждому из вышеперечисленных пунктов.

1

Как правильно обновляться с оригинала XKeen версии 1.1.3 на форк XKeen?

A: Рекомендую установить форк XKeen поверх оригинала вместо обновления. При этом будет предложено загрузить новое ядро Xray (смотри предыдущий пункт). Выполнить установку поверх можно следующими командами (конфиги Xray при этом сохранятся):

2

Q: Почему у меня при использовании xkeen/xray и замерах скорости в приложениях или на сайтах (показатели сильно различаются/низкая скорость/скорость, как через провайдера/процессор загружен на 100%/...)?

Важно!
Для достоверного результата замера скорости
необходимо соблюдать два условия:

- не ограничивать порты проксирования 80 и 443;
- не использовать роутинг и направить весь трафик на vps.

A: Всё дело в невысокой производительности процессора роутера и в особенностях работы Xray с потоком xtls-rprx-vision. Когда Xray видит, что через него проходит https-трафик (т.е. шифрованный), он его повторно не шифрует (чтобы не создавать два слоя шифрования) и наоборот, когда через Xray проходит http-трафик (т.е. не шифрованный), включается механизм шифрования, которое выполняется силами процессора устройства и чем он мощней, тем больший объем информации сможет зашифровать Xray, а от этого напрямую зависит то, столько трафика он через себя пропустит в единицу времени, т.е. скорость интернета. Различные сайты и приложения для тестирования скорости используют разные методики, где-то замеряется шифрованный трафик, где-то не шифрованный, могут использоваться произвольные, не включенные в роутинг, домены, а популярный speedtest, например, для замеров задействует нестандартный 8080-порт и если не учесть все эти нюансы, результаты тестов не будут корректными.

Некоторые пользователи пытаются тестировать скорость торрент-клиентами, это плохая практика, как, собственно, и использование Xray для файлообмена в целом. Bittorrent-протокол это не https-трафик и высоких скоростей вы не получите из-за ограничений процессора. Так же не стоит сравнивать результаты замеров при использовании Xray в роутере с Xray-клиентами на компьютерах и смартфонах. Процессоры компьютера или смартфона во много раз мощней роутера и для них шифрование трафика не является существенной нагрузкой.

Советы:
Для повышения скорости интернета и времени отклика через прокси рекомендуется выполнить оптимизацию сетевого стека сервера, включив режим BBR

Обязательно используйте поток xtls-rprx-vision, иначе трафик будет шифроваться всегда и это отрицательно скажется на скорости интернета через Xray.

На скорость интернета так же влияет способ подключения к Xray на роутере. Это могут быть socks5, Redirect, TProxy и их комбинация. В силу особенностей реализации встроенного в Keenetic прокси-клиента, самым медленным является socks5, а самым быстрым Redirect (но он не поддерживает UDP-протокол). Режимы TProxy и Hybrid (Mixed) полностью поддерживают TCP/UDP и являются основными рабочими режимами. Рекомендуемым режимом работы XKeen является современный TProxy. Узнать текущий режим работы можно в момент запуска XKeen или в журнале Кинетика.

3

Q: Почему у меня на роутере (KN-3810/KN-3610/KN-1912/...) после установки xkeen скорость интернета упала до 30-40 Мбит/c даже напрямую через провайдера и процессор роутера загружен на 100%?

A: С данными моделями Keenetic всё гораздо хуже. В ряде бюджетных моделей роутеров установлен процессор EcoNet (EN****), имеющий очень низкую производительность при использовании Xray (узнать какой процессор установлен в той или иной модели можно в технических характеристиках на официальном сайте Keenetic). Хray в роутере пропускает через себя абсолютно весь запрашиваемый клиентом трафик и согласно роутингу часть трафика отправляет напрямую, а часть через прокси. Слабый процессор не справляется с анализом и транзитом трафика через Xray, исправить это, к сожалению, нельзя. Для данных моделей роутеров, чтобы хоть как-то снизить нагрузку, настоятельно рекомендуется ограничивать порты проксирования 80 и 443 (подробности в инструкции), не подключать чрезмерное количество geosite и geoip баз, а также не использовать компонент прошивки "Классификация трафика", он очень требователен к ресурсам.

4

Q: Почему при использовании xkeen меня периодически выбрасывает из (ssh-сессии/удаленного рабочего стола/корпоративного VPN/онлайн-звонков/игр/видеоконференций/...)?

A: Xray не предназначен для потокового трафика и для постоянного поддержания коннекта, это не VPN, а прокси со своими особенностями. Весь трафик проходит через его ядро в Кинетике и сопоставляется с роутингом. Если найдено правило маршрутизации, трафик направляется в прокси, если не найдено, то трафик выходит из Xray и направляется через провайдера, но через ядро Xray трафик проходит весь и всегда, а у Xray есть особенность, обрывать сессию, которую он сочтёт устаревшей. Глобально это поведение вы не поменяете, но можно попробовать пустить критичный трафик напрямую, мимо прокси следующим способом. Убедитесь, что в настройках политики доступа в интернет XKeen не включена "Многопутевая передача" и добавьте IP-адрес назначения c 32 маской в исключения проксирования (файл /opt/etc/xkeen/ip_exclude.lst) по образцу - ip_exclude.lst и перезапустите XKeen. Данный способ работает в XKeen начиная с версии 1.1.3.9. В некоторых случаях для устранения дисконнектов достаточно ограничить порты проксирования XKeen (файл /opt/etc/xkeen/port_exclude.lst). Так же есть сообщения, что избавиться от разрывов сессий помогает смена ядра проксирования с Xray на Mihomo. Форк XKeen поддерживает оба этих ядра и простое переключение между ними. Сравните работу ядер в одинаковых условиях и выберите наиболее понравившееся и стабильное.

5

Q: Добавил телефон в политику XKeen, всё работает, но не могу подключить к xray-серверу с помощью приложения на телефоне. Что можно сделать?

A: Вы пытаетесь подключиться к прокси, будучи уже подключенными к прокси. Исключите адрес сервера из проксирования, добавив его IP с 32 маской в файл /opt/etc/xkeen/ip_exclude.lst по образцу - ip_exclude.lst и перезапустите XKeen. Данный способ работает в XKeen версии 1.1.3.9 и выше.

6

Q: Почему сайт (ChatGPT/whoer/dell/intel/...) (определяет мой провайдерский IP/страну/не даёт зайти/...), хотя ресурс добавлен в роутинг?

A: Некоторые ресурсы используют протокол QUIC (реже технологию WebRTC), через которые возможна утечка IP-адреса. Согласно официальной документации Xray, проксирование QUIC не рекомендуется (цитата: "Фактически, QUIC сам по себе не подходит для проксирования, поскольку QUIC имеет встроенные функции TCP, и когда он передается по протоколу VLESS как UDP-трафик, базовый протокол - TCP, что эквивалентно двум уровням TCP"), поэтому эффективным решением является его отключение, например, как написано в статье Отключение WebRTC и QIUC в браузере. При этом нужно помнить, что WebRTC используется многими программами для голосового общения и вебконференций, если вы планируете использовать такие программы, WebRTC лучше не отключать. Есть ещё один способ отключить QUIC для клиентов Xray, это заблокировать 443 порт UDP (способ работает для TProxy и Hybrid (Mixed) режимов XKeen), добавив следующий блок первым правилом роутинга:

Протокол QUIC так же можно заблокировать для всех устройств на уровне локальной сети в межсетевом экране Keenetic:
Отключение QIUC в Keenetic
В некоторых случаях, интернет-ресурсы (например сайт intel.com) дополнительно определяют выбранный в браузере предпочитаемый язык для сайтов и если это ru или ru-RU, то доступ к ресурсу блокируется со стороны сайта. Прокси тут не поможет, необходимо переключить предпочитаемый язык на иностранный.

7

Q: Как заблокировать рекламу на Youtube?

A: Роутингом Xray, так же, как и DNS-фильтрацией, вы не заблокируете рекламу на ютубе, так как эта реклама вшита в видеопоток и отдаётся с тех же доменов, что и основное видео. С такой рекламой могут справятся только приложения в которых это предусмотрено (SmartTube, YouTube ReVanced, AdGuard для Windows,...), дополнения к браузерам аналогичного назначения, либо покупка Premium на ютубе. Так же есть вероятность, что при регулярном просмотре ютуба, на устройствах, по геолокации находящихся в России, гугл отметит ваш аккаунт, как российский независимо от IP и отключит рекламу. Либо выбирайте VPS в тех странах, где ютуб не показывает рекламу.

8

Q: После (сбоя питания/перезагрузки/ни с того ни с сего/...) пропал доступ к ssh на роутере. Почему и как исправить?

A: Перед установкой entware проверьте, чтобы не был установлен и если это не так, то удалите компонент прошивки Кинетика "Сервер SSH", так как у entware свой ssh-сервер. Если ssh всё-таки перестал работать, удалите файл /opt/var/run/dropbear.pid, убедитесь, что в конфиге /opt/etc/config/dropbear.conf есть строчка PORT=22 или PORT=222 и перезагрузите роутер.

Если после удаления dropbear.pid доступ к ssh не восстановился, то для проверки запуска клиента необходимо открыть Web CLI роутера (192.168.1.1/a) и выполнить exec /opt/sbin/dropbear -V. При ошибке Early exit: Bad buf_getptr проверьте ключи ssh c помощью команды exec ls -l /opt/etc/dropbear. Если размер ключей 0, то удалите все старые ключи и сгенерируйте новые (команды выполнять построчно):

После этого перезагрузите роутер. Вместо перезагрузки можете попробовать выполнить построчно следующие команды:

Чтобы в дальнейшем избежать подобных сбоев ssh, перенесите файл dropbear.pid в оперативную память роутера, для этого отредактируйте в файле /opt/etc/config/dropbear.conf переменную PIDFILE следующим образом и перезагрузите роутер:

Так же для стабильной работы Entware на внешнем накопителе рекомендуется выбрать режим USB 2.0 для порта роутера, даже если накопитель USB 3

9

Q: Запустил xkeen, но ping и tracert к ресурсам из роутинга почему-то (идут напрямую через провайдера/не проходят).

A: ICMP-ping и tracert через прокси не ходят. Прокси работает на верхнем Прикладном уровне модели OSI, а пинги на третьем Сетевом уровне.

C traceroute ситуация иная, эта утилита использует UDP на портах 33434:33534, но через прокси они всё равно не пойдут, как задумано. traceroute отправляет пакеты с разным TTL, чтобы определять адреса последовательных узлов до цели. Прокси не передаёт исходный TTL дальше, а устанавливает новое соединение, поэтому вы не увидите корректный маршрут до цели. Единственный вариант использования утилиты traceroute, это исключить из проксирования указанные порты, либо использовать вариант проксирования только на 80,443 портах.

10

Q: Прописал в роутинг домены themoviedb.org и tmdb.org, но они всё равно не открываются. Почему и, как получить к ним доступ?

A: Этот ресурс блокирует российских пользователей на уровне GeoDNS. Решением является использование DNS-сервера, который не передает параметр EDNS Client Subnet. На момент написания этой статьи таким сервером является, например, dns.sb. Можете прописать его DoH или DoT адреса в роутере, удалив остальные DNS-серверы и ресурсы tmdb станут открываться. Если у вас установлен AdGuardHome, то можете направить выборочно ресурсы tmdb на dns.sb или на другой подходящий DNS, а для остальных ресурсов пользоваться привычными DNS-серверами. Пример на скриншоте:
Доступ к tmdb с помощью AdGuardHome

https://dns.google/dns-query
https://one.one.one.one/dns-query
[/tmdb.org/themoviedb.org/b-cdn.net/]https://ee-tll.doh.sb/dns-query

Другой вариант решения с помошью AdGuardHome, это включить в его настройках подмену IP-адреса EDNS Client Subnet и прописать туда, например, IP-адрес вашего прокси-сервера. В этом случае можно будет использовать любые DNS-серверы.

Проблему можно решить и без AgGuardHome, создав в веб-интерфейсе Keenetic такую запись для каждого из трёх доменов:
Доступ к tmdb в Keenetic
Аналогичную защиту использует производитель сетевого оборудования Ubiquiti. Если испытываете затруднения при загрузке прошивок, пустите домены ubnt.com и ui.com через "правильный" DNS.

11

Q: По совету "бывалых" указал в настройках панели 3x-ui IP-адрес 127.0.0.1, теперь никак не могу на нее зайти. Скажите, что можно сделать?

A: Создайте в PuTTY ssh-подключение к серверу по публичному IP-адресу, дополнительно пробросив нужный порт к панели. Для этого выберите в левой колонке пункт SSH/Tunnels, впишите порт панели в Source port (например, 65345), а в Destination укажите локалхост с этим портом (localhost:65345) и нажмите "Add" (1 скриншот). Подключитесь к серверу нажав кнопку Open и залогиньтесь по ssh. Не закрывая PuTTY зайдите браузером по адресу localhost, указав нужный порт и путь к панели (2 скриншот).

12

Q: При перезагрузке роутера XKeen (не запускается/начинает работать для всего устройства, а не только для своей политики). Почему и как исправить?

Важно!
Проблема решена в XKeen версии 1.1.3.9 и новее. Следующия информация оставлена для истории и не является актуальной.

A: В некоторых случаях entware со всеми установленными пакетами стартует раньше, чем прошивка завершает инициализацию. В этот момент ещё недоступно Интернет-подключение и не созданы "Политики доступа в интернет", поэтому проксирование запускается для всего устройства или не запускается вовсе. Подберите оптимальную задержку автостарта командой xkeen -d 30 (где число это секунды, по умолчанию при установке задержка равна 20). Так же можете дополнительно перезапускать XKeen после автостарта, поместив по пути /opt/etc/init.d/ скрипт S99xkeenrestart и сделать его исполняемым командой chmod +x /opt/etc/init.d/S99xkeenrestart

13

Q: Установил на роутер AdGuard Home. (Клиенты из политики XKeen в его журнале имеют IP-адрес роутера, а не свои локальные IP-адреса/DNS-запросы клиентов дублируются с запросами роутера). Можно ли сделать, чтобы запросы отображались только от клиентов?

A: Проблему можно исправить перехватом DNS-трафика в таблицах iptables Кинетика. Если используете прокси-клиент Xray, то убедитесь, что в файле inbounds включен параметр routeOnly:

Если используете Mihomo, то убедитесь, что отключен override-destination:

Важно!
1. Предложенное далее решение не совместимо с проксированием DNS
2. Для XKeen 2.0 приведенный далее фикс не требуется, в этой версии уже выполнена необходимая доработка (включается командой xkeen -aghfix)

Для XKeen 1.1.3.9 и более старых версий поместите скрипт aghfix.sh в папку /opt/etc/ndm/netfilter.d/ и сделайте его исполняемым командой chmod +x /opt/etc/ndm/netfilter.d/aghfix.sh После чего перезагрузите роутер.

14

Q: Если сервера Xray нет, но есть сервер (Wireguard/OpenConnect). Можно ли используя маршрутизацию Xray открывать сайты через встроенный (Wireguard/OpenConnect) Кинетика?

A: Да. На любой встроенный интерфейс Кинетика, используемый для доступа в интернет, можно направить роутинг Xray следующим способом.
В ssh-консоли роутера выполните команду ip a или ifconfg, чтобы определить наименование интересующего интерфейса. Например, для wireguard это будут интерфейсы nwg, а для OpenConnect nocli с цифрой по порядку:
интерфейсы wireguard и openconnect
В файл outbounds.json вместо протокола VLESS добавьте подключение по протоколу freedom с произвольным тегом (например, newtag), перенаправляющее на требуемый интерфейс. Полный листинг файла outbounds.json будет такой:

В файл routing.json добавьте необходимые правила для тега newtag:

Для Mihomo настройка исходящего подключения выглядит так:

15

Q: На роутере поднят сервер Wireguard и к нему подключаются клиенты. Можно ли для этих клиентов раздать интернет через XKeen?

Важно!
Предложенное далее решение является устаревшим и оставлено для истории. В актуальных прошивках Keenetic добавлен новый компонент "WireGuard VPN-сервер, в котором для поставленной задачи достаточно выбрать необходимый сегмент домашней сети.

A: Да, это возможно. При работе XKeen для всего устройства, дополнительных настроек не требуется. Если же используется политка доступа в интернет XKeen, то для настройки требуется знать номер этой политики и номер интерфейса Wireguard. Посмотреть их можно, выгрузив из админки Кинетика файл конфигурации startup-config и открыв его любым текстовым редактором. Затем в CLI-интерфейсе роутера по адресу 192.168.1.1/a выполните следующую команду, указав в ней найденные номера вместо нулей:

Чтобы сохранить настройку в памяти роутера выполните:

Отменить настройку и вернуть значение по умолчанию можно командами:

16

Q: Использую KeenDNS и могу подключаться к веб-интерфейсу роутера. Можно ли получить удалённый доступ к ssh-консоли entware через серый IP?

A: Поднимите на роутере SSTP VPN-сервер. К нему можно подключаться по домену KeenDNS на сером IP-адресе. После подключения, ssh роутера будет доступен по его локальному IP-адресу 192.168.1.1:22. SSTP-клиент для Windows включен в дистрибутив "из коробки", ничего доустанавливать не нужно, для остальных осей ищите в гугле.

17

Q: Можно ли настроить разные варианты маршрутизации используя одну политику доступа в интернет XKeen?

A: Для устройств с WiFi подключением к роутеру это можно сделать, создав несколько домашних/гостевых сетей и добавив в правила маршрутизации параметр source с их IP-подсетями. Например, таким роутингом, устройства подключившиеся к подсети 192.168.1.0/24 будут использовать выборочную маршрутизацию, а подключившиеся к 192.168.2.0/24 пойдут полностью через прокси:

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

При наличии только одной домашней сети можно настроить разную маршрутизацию устройств по их IP-адресам:

18

Q: Установил и настроил XKeen. Как выполнить резервное копирование и последующее восстановление в случае сбоя?

A: Выполнить резервное копирование можно запустив следующий код. Он создаёт в корне директории /opt архив, пригодный для установки на чистую флешку:

Для восстановления, отформатируйте флешку в файловую систему ext4, подключите её к роутеру, создайте на флешке папку install и поместите в неё архив резервной копии. В веб-интерфейсе роутера на странице OPKG выберите данную флешку в качестве накопителя. Подождите пару минут, пока резервная копия будет устанавливаться.

19

Q: Через несколько часов или дней непрерывной работы XKeen, пропадает интернет, при этом команда xkeen -status показывает, что прокси работает. Почему и как исправить?

A: При некотором количестве пользователей и интенсивном использовании интернета, прокси-клиент может исчерпать лимит файловых дескрипторов (для роутеров на arm процессорах 40000 fd, а для остальных роутеров 10000 fd). Проверить сколько fd занимает прокси-клиент можно следующей командой (если используете ядро Mihomo, то укажите его вместо Xray):

Форк XKeen начиная с версии 1.1.3.6 умеет контролировать число отрытых файловых дескрипторов и перезапускать прокси-клиент при достижении лимита. Чтобы включить эту функцию выполните следующую команду и перезагрузите роутер:

20

Q: Есть два прокси-сервера. Можно ли открывать одни сайты через первый, а другие сайты через второй сервер?

A: Можно. Добавьте в файл outbounds.json подключения к обоим серверам:

Затем в файле routing.json создайте правила, что именно должно открываться через первый, а что через второй сервер:

21

Q: Можно ли сделать несколько outbound'ов, чтобы если один недоступен, то до второго пыталось достучаться?

A: Да. Для этого предусмотрен встроенный в Xray механизм балансировки:
Отказоустойчивый прокси-сервер xray. Часть 1
Отказоустойчивый прокси-сервер xray. Часть 2
Отказоустойчивый прокси-сервер xray. Часть 3

22

Q: К роутеру подключены два провайдера, как сделать, чтобы XKeen/xay подключался к прокси только через одного из них?

A: Ответ на этот вопрос аналогичен 14 пункту данного FAQ. Можно добавить для direct и для прокси подключения в файле outbounds.json параметр "interface" с указанием, через какой интерфейс это подключение должно выполняться.

Пример для direct:

Пример для прокси:

Название интерфейса lte_br0 дано для примера, уточните его в выводе команды ifconfig

23

Q: Возникают ошибки при установке Entware на флешку, пробовал несколько раз, безуспешно. Что можно предпринять?

A: Проблемы с установкой Entware могут возникать на флешках большого размера или при использовании устаревшего дистрибутива. Создайте на флешке раздел 1-2ГБ и отформатируйте в ext4, остальное место оставьте неразмеченным. Так же убедитесь, что используете актуальный дистрибутив Entware. Прямые ссылки на загрузку оригинальных дистрибутивов есть на странице Модели роутеров Keenetic, совместимые с XKeen

24

Q: Есть ли альтернатива отключению IPv6 командой xkeen -ipv6?

A: В пятой прошивке Keenetic OS разработчики не предусмотрели полного отключения IPv6, и это иногда приводит к проблемам проксирования. Установите на роутер прошивку с длительным периодом обслуживания LTS 4.3, в ней возможность отключения IPv6 сохранена. Если веб-интерфейс роутера не предлагает LTS к установке, установите её через CLI, следующими командами:

--

Дополнительные вопросы/ответы смотрите на странице Wiki

--
To be continued...