XKeen это набор скриптов для роутеров Keenetic с прокси клиентом Xray-core/Mihomo, с помощью которого можно оптимизировать производительность интернет-подключения и обеспечить его безопасность. Подробнее о проекте - XKeen на форуме Keenetic
FAQ по XKeen предназначен для тех, у кого возникли дополнительные вопросы после внимательного прочтения инструкции, а также охватывает ситуации, которые напрямую к XKeen не относятся, но возникают в процессе его использования. FAQ, в основном, посвящен вопросам использования ядра Xray, которым пользуется автор данного материала, разбор вопросов по второму поддерживаемому ядру Mihomo ожидайте от пользователей этого ядра.
Часто задаваемые вопросы и ответы по XKeen
Q: Настроил xkeen/xray, всё работало, ничего не трогал, настроек не менял. Внезапно (прокси упал/сайты перестали открываться).
Куда копать?Что можно предпринять?
A: При внезапных проблемах с XKeen, причина может быть в устаревшем ядре Xray. Оригинальный XKeen не обновляет ядро выше версии 1.8.4. Если у вас установлен оригинал, то рекомендую перейти на форк XKeen. При невозможности перехода на форк, обновите ядро Xray в роутере другим способом. Общий порядок действий по поиску причины неработающего проксирования следующий:
- Для начала убедитесь в работоспособности прокси-сервера согласно пункту 25 этого FAQ
- Смените в файле 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 и прикрепите диагностический отчёт к сообщению в телеграм-чате, описав результаты диагностики по каждому из вышеперечисленных пунктов.
Как правильно обновляться с оригинала XKeen версии 1.1.3 на форк XKeen?
A: Рекомендую установить форк XKeen поверх оригинала вместо обновления. При этом будет предложено загрузить новое ядро Xray (смотри предыдущий пункт). Выполнить установку поверх можно следующими командами (конфиги Xray при этом сохранятся):
|
1 2 |
opkg update && opkg upgrade && opkg install curl tar && cd /tmp sh -c "$(curl -sSL https://clck.ru/3U9qXt)" |
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 или в журнале Кинетика.
Q: Почему у меня на роутере (KN-3810/KN-3610/KN-1912/...) после установки xkeen скорость интернета упала до 30-40 Мбит/c даже напрямую через провайдера и процессор роутера загружен на 100%?
A: С данными моделями Keenetic всё гораздо хуже. В ряде бюджетных моделей роутеров установлен процессор EcoNet (EN****), имеющий очень низкую производительность при использовании Xray (узнать какой процессор установлен в той или иной модели можно в технических характеристиках на официальном сайте Keenetic). Хray в роутере пропускает через себя абсолютно весь запрашиваемый клиентом трафик и согласно роутингу часть трафика отправляет напрямую, а часть через прокси. Слабый процессор не справляется с анализом и транзитом трафика через Xray, исправить это, к сожалению, нельзя. Для данных моделей роутеров, чтобы хоть как-то снизить нагрузку, настоятельно рекомендуется ограничивать порты проксирования 80 и 443 (подробности в инструкции), не подключать чрезмерное количество geosite и geoip баз, а также не использовать компонент прошивки "Классификация трафика", он очень требователен к ресурсам.
Q: Почему при использовании xkeen меня периодически выбрасывает из (ssh-сессии/удаленного рабочего стола/корпоративного VPN/онлайн-звонков/игр/видеоконференций/...)?
A: Обновите XKeen до версии 2.1, она содержит исправление для такого поведения трафика. Если же это не помогает, то отключите сетевое ускорение в CLI роутера командами:
|
1 2 |
no ppe system configuration save |
Если это тоже не помогло, то причины и другие методы исправления описаны далее.
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 поддерживает оба этих ядра и простое переключение между ними. Сравните работу ядер в одинаковых условиях и выберите наиболее понравившееся и стабильное.
Q: Добавил телефон в политику XKeen, всё работает, но не могу подключить к xray-серверу с помощью приложения на телефоне. Что можно сделать?
A: Вы пытаетесь подключиться к прокси, будучи уже подключенными к прокси. Исключите адрес сервера из проксирования, добавив его IP с 32 маской в файл /opt/etc/xkeen/ip_exclude.lst по образцу - ip_exclude.lst и перезапустите XKeen. Данный способ работает в XKeen версии 1.1.3.9 и выше.
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), добавив следующий блок первым правилом роутинга:
|
1 2 3 4 5 |
{ "network": "udp", "port": "443", "outboundTag": "block" }, |
Протокол QUIC так же можно заблокировать для всех устройств на уровне локальной сети в межсетевом экране Keenetic:

В некоторых случаях, интернет-ресурсы (например сайт intel.com) дополнительно определяют выбранный в браузере предпочитаемый язык для сайтов и если это ru или ru-RU, то доступ к ресурсу блокируется со стороны сайта. Прокси тут не поможет, необходимо переключить предпочитаемый язык на иностранный.
Q: Как заблокировать рекламу на Youtube?
A: Роутингом Xray, так же, как и DNS-фильтрацией, вы не заблокируете рекламу на ютубе, так как эта реклама вшита в видеопоток и отдаётся с тех же доменов, что и основное видео. С такой рекламой могут справятся только приложения в которых это предусмотрено (SmartTube, YouTube ReVanced, AdGuard для Windows,...), дополнения к браузерам аналогичного назначения, либо покупка Premium на ютубе. Так же есть вероятность, что при регулярном просмотре ютуба, на устройствах, по геолокации находящихся в России, гугл отметит ваш аккаунт, как российский независимо от IP и отключит рекламу. Либо выбирайте VPS в тех странах, где ютуб не показывает рекламу.
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, то удалите все старые ключи и сгенерируйте новые (команды выполнять построчно):
|
1 2 3 |
exec rm -f /opt/etc/dropbear/dropbear* exec dropbearkey -t ed25519 -f /opt/etc/dropbear/dropbear_ed25519_host_key exec dropbearkey -t rsa -f /opt/etc/dropbear/dropbear_rsa_host_key |
После этого перезагрузите роутер. Вместо перезагрузки можете попробовать выполнить построчно следующие команды:
|
1 2 |
exec sh exec /opt/etc/init.d/S51dropbear restart |
Чтобы в дальнейшем избежать подобных сбоев ssh, перенесите файл dropbear.pid в оперативную память роутера, для этого отредактируйте в файле /opt/etc/config/dropbear.conf переменную PIDFILE следующим образом и перезагрузите роутер:
|
1 |
PIDFILE="/var/run/dropbear.pid" |
Так же для стабильной работы Entware на внешнем накопителе рекомендуется выбрать режим USB 2.0 для порта роутера, даже если накопитель USB 3
Q: Запустил xkeen, но ping и tracert к ресурсам из роутинга почему-то (идут напрямую через провайдера/не проходят).
A: ICMP-ping и tracert через прокси не ходят. Прокси работает на верхнем Прикладном уровне модели OSI, а пинги на третьем Сетевом уровне.
C traceroute ситуация иная, эта утилита использует UDP на портах 33434:33534, но через прокси они всё равно не пойдут, как задумано. traceroute отправляет пакеты с разным TTL, чтобы определять адреса последовательных узлов до цели. Прокси не передаёт исходный TTL дальше, а устанавливает новое соединение, поэтому вы не увидите корректный маршрут до цели. Единственный вариант использования утилиты traceroute, это исключить из проксирования указанные порты, либо использовать вариант проксирования только на 80,443 портах.
Q: Прописал в роутинг домены themoviedb.org и tmdb.org, но они всё равно не открываются. Почему и, как получить к ним доступ?
A: Этот ресурс блокирует российских пользователей на уровне GeoDNS. Решением является использование DNS-сервера, который не передает параметр EDNS Client Subnet. На момент написания этой статьи таким сервером является, например, dns.sb. Можете прописать его DoH или DoT адреса в роутере, удалив остальные DNS-серверы и ресурсы tmdb станут открываться. Если у вас установлен AdGuardHome, то можете направить выборочно ресурсы tmdb на dns.sb или на другой подходящий DNS, а для остальных ресурсов пользоваться привычными DNS-серверами. Пример на скриншоте:

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 такую запись для каждого из трёх доменов:

Аналогичную защиту использует производитель сетевого оборудования Ubiquiti. Если испытываете затруднения при загрузке прошивок, пустите домены ubnt.com и ui.com через "правильный" DNS.
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 скриншот).
- PuTTY
- 3x-ui
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
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/sh # Сайт для проверки доступности интернета HOST="ya.ru" # Бесконечный цикл для проверки доступности интернета while true; do # Пингуем сайт ping -c 1 "$HOST" > /dev/null 2>&1 # Проверяем результат ping и если ОК перезапускаем xkeen через 15 секунд if [ $? -eq 0 ]; then sleep 15 xkeen -restart break else echo "Сайт $HOST не доступен, пытаюсь снова..." fi sleep 5 done |
Q: Установил на роутер AdGuard Home. (Клиенты из политики XKeen в его журнале имеют IP-адрес роутера, а не свои локальные IP-адреса/DNS-запросы клиентов дублируются с запросами роутера). Можно ли сделать, чтобы запросы отображались только от клиентов?
A: Проблему можно исправить перехватом DNS-трафика в таблицах iptables Кинетика. Если используете прокси-клиент Xray, то убедитесь, что в файле inbounds включен параметр routeOnly:
|
1 2 3 4 5 |
"sniffing": { "enabled": true, "routeOnly": true, "destOverride": ["http","tls"] }, |
Если используете Mihomo, то убедитесь, что отключен override-destination:
|
1 2 3 4 5 6 7 |
sniffer: enable: true parse-pure-ip: true override-destination: false sniff: HTTP: TLS: |
Важно!
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 После чего перезагрузите роутер.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/bin/sh get_interface_list(){ ip a | grep -E ': br[0-9]:' | cut -d':' -f2 | cut -d' ' -f2 } for brX in $(get_interface_list); do get_router_ip4() { ip a show dev "${brX}" | grep 'inet ' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f1 } get_router_ip6() { ip a show dev "${brX}" | grep 'inet6 ' | grep 'scope link' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f1 } local_ip4=$(get_router_ip4) if ! iptables -t nat -C PREROUTING -i ${brX} -p udp --dport 53 -j DNAT --to-destination ${local_ip4} >/dev/null 2>&1; then iptables -t nat -I PREROUTING -i ${brX} -p udp --dport 53 -j DNAT --to-destination ${local_ip4} >/dev/null 2>&1 fi if ! iptables -t nat -C PREROUTING -i ${brX} -p tcp --dport 53 -j DNAT --to-destination ${local_ip4} >/dev/null 2>&1; then iptables -t nat -I PREROUTING -i ${brX} -p tcp --dport 53 -j DNAT --to-destination ${local_ip4} >/dev/null 2>&1 fi local_ip6=$(get_router_ip6) if [ -n "${local_ip6}" ]; then if ! ip6tables -t nat -C PREROUTING -i ${brX} -p udp --dport 53 -j DNAT --to-destination ${local_ip6} >/dev/null 2>&1; then ip6tables -t nat -I PREROUTING -i ${brX} -p udp --dport 53 -j DNAT --to-destination ${local_ip6} >/dev/null 2>&1 fi if ! ip6tables -t nat -C PREROUTING -i ${brX} -p tcp --dport 53 -j DNAT --to-destination ${local_ip6} >/dev/null 2>&1; then ip6tables -t nat -I PREROUTING -i ${brX} -p tcp --dport 53 -j DNAT --to-destination ${local_ip6} >/dev/null 2>&1 fi fi done |
Q: Если сервера Xray нет, но есть сервер (Wireguard/OpenConnect). Можно ли используя маршрутизацию Xray открывать сайты через встроенный (Wireguard/OpenConnect) Кинетика?
A: Да. На любой встроенный интерфейс Кинетика, используемый для доступа в интернет, можно направить роутинг Xray следующим способом.
В ssh-консоли роутера выполните команду ip a или ifconfg, чтобы определить наименование интересующего интерфейса. Например, для wireguard это будут интерфейсы nwg, а для OpenConnect nocli с цифрой по порядку:

В файл outbounds.json вместо протокола VLESS добавьте подключение по протоколу freedom с произвольным тегом (например, newtag), перенаправляющее на требуемый интерфейс. Полный листинг файла outbounds.json будет такой:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "outbounds": [ { "protocol": "freedom", "streamSettings": { "sockopt": { "interface": "nwg0" } }, "tag": "newtag" }, { "protocol": "freedom", "tag": "direct" } ] } |
В файл routing.json добавьте необходимые правила для тега newtag:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "routing": { "rules": [ { "domain": [ "site1.ru", "site2.ru", "site3.ru" ], "outboundTag": "newtag" }, { "network": "tcp,udp", "outboundTag": "direct" } ] } } |
Для Mihomo настройка исходящего подключения выглядит так:
|
1 2 3 4 5 |
proxies: - name: WG type: direct udp: true interface-name: nwg0 |
Q: На роутере поднят сервер Wireguard и к нему подключаются клиенты. Можно ли для этих клиентов раздать интернет через XKeen?
Важно!
Предложенное далее решение является устаревшим и оставлено для истории. В актуальных прошивках Keenetic добавлен новый компонент "WireGuard VPN-сервер, в котором для поставленной задачи достаточно выбрать необходимый сегмент домашней сети.
A: Да, это возможно. При работе XKeen для всего устройства, дополнительных настроек не требуется. Если же используется политка доступа в интернет XKeen, то для настройки требуется знать номер этой политики и номер интерфейса Wireguard. Посмотреть их можно, выгрузив из админки Кинетика файл конфигурации startup-config и открыв его любым текстовым редактором. Затем в CLI-интерфейсе роутера по адресу 192.168.1.1/a выполните следующую команду, указав в ней найденные номера вместо нулей:
|
1 |
ip hotspot policy Wireguard0 Policy0 |
Чтобы сохранить настройку в памяти роутера выполните:
|
1 |
system configuration save |
Отменить настройку и вернуть значение по умолчанию можно командами:
|
1 2 |
ip hotspot policy Wireguard0 permit system configuration save |
Q: Использую KeenDNS и могу подключаться к веб-интерфейсу роутера. Можно ли получить удалённый доступ к ssh-консоли entware через серый IP?
A: Поднимите на роутере SSTP VPN-сервер. К нему можно подключаться по домену KeenDNS на сером IP-адресе. После подключения, ssh роутера будет доступен по его локальному IP-адресу 192.168.1.1:22. SSTP-клиент для Windows включен в дистрибутив "из коробки", ничего доустанавливать не нужно, для остальных осей ищите в гугле.
Q: Можно ли настроить разные варианты маршрутизации используя одну политику доступа в интернет XKeen?
A: Для устройств с WiFi подключением к роутеру это можно сделать, создав несколько домашних/гостевых сетей и добавив в правила маршрутизации параметр source с их IP-подсетями. Например, таким роутингом, устройства подключившиеся к подсети 192.168.1.0/24 будут использовать выборочную маршрутизацию, а подключившиеся к 192.168.2.0/24 пойдут полностью через прокси:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "routing": { "rules": [ { "source": ["192.168.1.0/24"], "domain": [ "site1.ru", "site2.ru", "site3.ru" ], "outboundTag": "vless-reality" }, { "source": ["192.168.2.0/24"], "outboundTag": "vless-reality" }, { "network": "tcp,udp", "outboundTag": "direct" } ] } } |
Аналогично можно настроить, чтобы одна домашняя подсеть выходила в интернет через один прокси, а вторая, через другой:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "routing": { "rules": [ { "source": ["192.168.1.0/24"], "outboundTag": "vless-reality-eu" }, { "source": ["192.168.2.0/24"], "outboundTag": "vless-reality-us" } ] } } |
При наличии только одной домашней сети можно настроить разную маршрутизацию устройств по их IP-адресам:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "routing": { "rules": [ { "source": ["192.168.1.5"], "outboundTag": "vless-reality-eu" }, { "source": ["192.168.1.6","192.168.1.7","192.168.1.8"], "outboundTag": "vless-reality-us" }, { "source": ["192.168.1.9"], "outboundTag": "direct" } ] } } |
Q: Установил и настроил XKeen. Как выполнить резервное копирование и последующее восстановление в случае сбоя?
A: Выполнить резервное копирование можно запустив следующий код. Он создаёт в корне директории /opt архив, пригодный для установки на чистую флешку:
|
1 2 |
opkg update && opkg install tar tar --exclude=entware_backup.tar.gz --exclude=*.pid --warning=no-file-changed -cvzf /opt/entware_backup.tar.gz -C /opt . |
Для восстановления, отформатируйте флешку в файловую систему ext4, подключите её к роутеру, создайте на флешке папку install и поместите в неё архив резервной копии. В веб-интерфейсе роутера на странице OPKG выберите данную флешку в качестве накопителя. Подождите пару минут, пока резервная копия будет устанавливаться.
Q: Через несколько часов или дней непрерывной работы XKeen, пропадает интернет, при этом команда xkeen -status показывает, что прокси работает. Почему и как исправить?
A: При некотором количестве пользователей и интенсивном использовании интернета, прокси-клиент может исчерпать лимит файловых дескрипторов (для роутеров на arm процессорах 40000 fd, а для остальных роутеров 10000 fd). Проверить сколько fd занимает прокси-клиент можно следующей командой (если используете ядро Mihomo, то укажите его вместо Xray):
|
1 |
ls -l /proc/$(pidof xray)/fd | wc -l |
Форк XKeen начиная с версии 1.1.3.6 умеет контролировать число отрытых файловых дескрипторов и перезапускать прокси-клиент при достижении лимита. Чтобы включить эту функцию выполните следующую команду и перезагрузите роутер:
|
1 |
xkeen -fd |
Q: Есть два прокси-сервера. Можно ли открывать одни сайты через первый, а другие сайты через второй сервер?
A: Можно. Добавьте в файл outbounds.json подключения к обоим серверам:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "outbounds": [ { "protocol": "vless", "settings": { // Тут прописываем подключение к серверу proxy1 }, "tag": "proxy1" }, { "protocol": "vless", "settings": { // Тут прописываем подключение к серверу proxy2 }, "tag": "proxy2" }, { "protocol": "freedom", "tag": "direct" } ] } |
Затем в файле routing.json создайте правила, что именно должно открываться через первый, а что через второй сервер:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "routing": { "rules": [ { // Сайт site1.ru открываем через proxy1 "domain": [ "site1.ru" ], "outboundTag": "proxy1" }, { // Сайт site2.ru открываем через proxy2 "domain": [ "site2.ru" ], "outboundTag": "proxy2" }, { // Остальное через провайдера "network": "tcp,udp", "outboundTag": "direct" } ] } } |
Q: Можно ли сделать несколько outbound'ов, чтобы если один недоступен, то до второго пыталось достучаться?
A: Да. Для этого предусмотрен встроенный в Xray механизм балансировки:
Отказоустойчивый прокси-сервер xray. Часть 1
Отказоустойчивый прокси-сервер xray. Часть 2
Отказоустойчивый прокси-сервер xray. Часть 3
Q: К роутеру подключены два провайдера, как сделать, чтобы XKeen/xay подключался к прокси только через одного из них?
A: Ответ на этот вопрос аналогичен 14 пункту данного FAQ. Можно добавить для direct и для прокси подключения в файле outbounds.json параметр "interface" с указанием, через какой интерфейс это подключение должно выполняться.
Пример для direct:
|
1 2 3 4 5 6 7 8 9 |
{ "protocol": "freedom", "streamSettings": { "sockopt": { "interface": "lte_br0" } }, "tag": "direct" }, |
Пример для прокси:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "protocol": "vless", "settings": { // тут ваши настройки прокси-сервера }, "streamSettings": { "network": "raw", "security": "reality", "realitySettings": { // тут ваши настройки прокси-сервера }, "sockopt": { "interface": "lte_br0" } }, "tag": "proxy" }, |
Название интерфейса lte_br0 дано для примера, уточните его в выводе команды ifconfig
Q: Возникают ошибки при установке Entware на флешку, пробовал несколько раз, безуспешно. Что можно предпринять?
A: Проблемы с установкой Entware могут возникать на флешках большого размера или при использовании устаревшего дистрибутива. Создайте на флешке раздел 1-2ГБ и отформатируйте в ext4, остальное место оставьте неразмеченным. Так же убедитесь, что используете актуальный дистрибутив Entware. Прямые ссылки на загрузку оригинальных дистрибутивов есть на странице Модели роутеров Keenetic, совместимые с XKeen
Q: Есть ли альтернатива отключению IPv6 командой xkeen -ipv6?
A: В пятой прошивке Keenetic OS разработчики не предусмотрели полного отключения IPv6, и это иногда приводит к проблемам проксирования. Установите на роутер прошивку с длительным периодом обслуживания LTS 4.3, в ней возможность отключения IPv6 сохранена. Если веб-интерфейс роутера не предлагает LTS к установке, установите её через CLI, следующими командами:
|
1 2 |
components list lts-4.3 components commit |
Q: XKeen запускается без ошибок, но проксирование не работает, как понять, проблема в XKeen или в прокси-сервере?
A: Это сделать довольно просто. Проверьте доступ к серверу непосредственно с роутера не используя цепи прозрачного проксирования XKeen.
Для ядра Xray, добавьте в inbounds следующую секцию:
|
1 2 3 4 5 6 |
{ "port": 1080, "protocol": "mixed", "settings": {"udp": true}, "tag": "socks" }, |
и первым правилом routing-а следующую:
|
1 2 3 4 |
{ "inboundTag": ["socks"], "outboundTag": "vless-reality" }, |
Для ядра Mihomo, добавьте подключение в listeners. При этом значение PROXY должно быть именем существующего в конфигурации Mihomo исходящего прокси, который необходимо проверить:
|
1 2 3 4 5 |
listeners: - name: socks type: mixed port: 1080 proxy: PROXY |
Перезапустите XKeen и выполните в ssh-консоли роутера команду:
|
1 |
curl -x socks5h://127.0.0.1:1080 v4.i-p.show |
При доступном прокси-сервере команда покажет его IP, но если при этом прозрачное проксирование через XKeen не работает, то проблема, вероятно, на стороне роутера. Если же IP сервера не отобразился, то проблема на стороне сервера или провайдера, XKeen и роутер не при чём.
Q: Нужно ли игнорировать DNS провайдера?
A: Нет, игнорировать DNS-серверы провайдера не требуется. Достаточно настроить на роутере хотя бы один защищённый DNS-сервер по протоколу DoH или DoT. Такой DNS будет иметь приоритет над остальными, включая DNS провайдера. В этом случае провайдерский DNS может использоваться только для первоначального определения IP-адреса DoH-сервера.
Более того, у некоторых провайдеров, использующих PPPoE, отключение или игнорирование DNS провайдера может привести к потере доступа в интернет.
Таким образом, игнорирование DNS провайдера не даёт каких-либо преимуществ и, в некоторых случаях, может привести к проблемам с подключением.
--
Дополнительные вопросы/ответы смотрите на странице Wiki
--
To be continued...

