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

1

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

A: При внезапных проблемах с xray, рекомендуется в первую очередь сменить параметр SNI на сервере, а в роутере прописать шифрованные DNS (DoH или DoT). Отключать DNS провайдера при этом не нужно.

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 полностью поддерживает TCP и UDP, но чуть более ресурсоёмкий, а Mixed режим, это золотая середина для не топовых роутеров, TCP в нём работает в режиме Redirect, а UDP в режиме TProxy. Рекомендуемыми режимами работы XKeen являются TProxy и Mixed. Узнать текущий режим работы можно в журнале Кинетика в момент запуска 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 маской в исключения проксирования (параметр ipv4_exclude файла /opt/etc/init.d/S24xray), а также ограничте порты проксирования XKeen (команда xkeen -ap 80,443). Если это не помогает, пробуйте другие режимы и протоколы xray.

5

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

A: Вы пытаетесь подключиться к прокси, будучи уже подключенными к прокси. Без дополнительных настроек это не работает. Исключите сервер из проксирования, добавив его IP-адрес с 32 маской в параметр ipv4_exclude файла /opt/etc/init.d/S24xray

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 и Mixed режимов XKeen), добавив следующий блок первым правилом роутинга:

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

Так же рекомендуется отключить IPv6 на сервере установив стратегию UseIPv4 для direct направления в исходящих:
ipv4 outbounds

7

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

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

8

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

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

Чтобы избежать сбоев ssh отредактируйте третью строку файла /opt/etc/init.d/S51dropbear следующим образом:

9

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

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

10

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

A: Этот ресурс блокирует российских пользователей на уровне GeoDNS. Решением является подбор правильного независимого DNS-сервера. На момент написания этой статьи таким сервером является, например, 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

Данную задачу можно решить и без AgGuardHome, создав в веб-интерфейсе Keenetic такую запись для каждого из трёх доменов:
Доступ к tmdb в Keenetic
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 (не запускается/начинает работать для всего устройства, а не только для своей политики). Почему и как исправить?

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

13

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

A: Это можно исправить перехватом DNS-трафика в таблицах iptables Кинетика. Для начала проверьте, чтобы в файле inbounds был включен параметр routeOnly:

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

Второй вариант скрипта aghfix.sh v.2 работает с любой политикой доступа в интернет и имеет следующий листинг. Инструкция по использованию аналогична скрипту v.1

14

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

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

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

Перезапустите xkeen/xray

To be continued…