Разработчики не могли зайти на GitHub: настраиваем XKeen на Keenetic для обхода блокировок

Введение: когда разработчики не могут работать

В начале марта 2026 года к нам в АйТи Фреш обратилась московская IT-компания НетВорк Консалтинг с проблемой, которую мы видим всё чаще. Их команда из 30 разработчиков и DevOps-инженеров просто не могла нормально работать. GitHub отвечал с задержками или не открывался вовсе, Docker Hub отказывался отдавать образы, npm-пакеты устанавливались через раз, а Google-сервисы — от Google Cloud Console до обычного поиска — вели себя непредсказуемо.

Руководитель отдела разработки описал ситуацию так: «Каждый разработчик тратит от 30 минут до часа в день на борьбу с недоступностью сервисов. Это 15-30 человеко-часов ежедневно. Мы пробовали индивидуальные VPN на каждом рабочем месте, но это создает хаос: у кого-то работает, у кого-то нет, настройки слетают, скорость падает». Если честно, мы слышим это примерно раз в неделю от разных клиентов.

Нужно было решение на уровне сетевой инфраструктуры — чтобы обход блокировок работал прозрачно для всех устройств сразу, без установки чего-либо на рабочие станции. В офисе уже стоял роутер Keenetic Giga (KN-1010), и мы предложили поставить XKeen — утилиту, которая превращает обычный Keenetic в умный VPN-шлюз с гибкой маршрутизацией.

Дальше расскажем, как именно мы это настроили для НетВорк Консалтинг, и дадим пошаговую инструкцию — так, чтобы вы могли повторить всё у себя.

Что такое XKeen и зачем он нужен

XKeen — это утилита для роутеров Keenetic, которая берёт на себя установку, запуск и обновление ядра Xray, а заодно тянет свежие базы GeoIP/GeoSite из AntiZapret, Antifilter и v2fly. На практике это означает одно: продвинутая маршрутизация прямо на роутере, без VPN-клиентов на каждом устройстве в сети.

Проект живёт на GitHub: https://github.com/RockBlack-VPN/XKeen (форк от Skrill0/XKeen). Лицензия — MIT, текущая версия — xkeen-v1.1.3.9.

Ключевые возможности XKeen

Что XKeen реально умеет решать:

  • Автоматическое обновление баз маршрутизации — GeoIP и GeoSite из AntiZapret, Antifilter и v2fly подтягиваются автоматически. Список заблокированных ресурсов не протухает, вы не следите за ним вручную.
  • Прозрачная маршрутизация — устройства в сети вообще не подозревают о существовании VPN. Трафик к заблокированным ресурсам уходит через зашифрованный туннель, остальное — напрямую. Пользователи просто работают.
  • Поддержка современных протоколов — VLESS с Reality, XTLS-RPRX-Vision и другие протоколы Xray. Обнаружить и заблокировать их на практике крайне сложно.
  • Гибкая маршрутизация — правила можно собирать по доменам, IP-адресам, портам и протоколам. Например, гнать через VPN только GitHub и Docker Hub, а всё остальное пускать напрямую.
  • Политики доступа — через встроенный механизм Keenetic можно выбрать, какие устройства пойдут через XKeen, а какие — через обычное подключение.

Принцип работы: как XKeen маршрутизирует трафик

XKeen работает на уровне ядра роутера и перехватывает трафик через Netfilter (iptables/nftables). Когда устройство в сети обращается к какому-либо ресурсу, цепочка выглядит так:

  1. DNS-запрос обрабатывается роутером — через DNS-over-TLS или DNS-over-HTTPS, чтобы исключить подмену ответов.
  2. Xray-ядро смотрит на домен или IP-адрес назначения и сверяет его с базами GeoSite и GeoIP.
  3. Ресурс есть в списках маршрутизации — трафик уходит через VPN-туннель (outbound vless-reality).
  4. Ресурса в списках нет — трафик идёт напрямую (outbound direct).
  5. Нежелательный трафик — телеметрия, отдельные порты — можно просто дропать (outbound block).

Всё это происходит незаметно для пользователя. Открываете нужный сайт — роутер сам разбирается, как доставить трафик.

Поддерживаемые модели роутеров Keenetic

XKeen поддерживает достаточно широкий список роутеров Keenetic на трёх архитектурах процессоров. Перед тем как начинать установку, проверьте свою модель по списку совместимости.

АрхитектураМодельАртикул
mipsel4GKN-1212
OmniKN-1410
ExtraKN-1710 / KN-1711 / KN-1713
GigaKN-1010 / KN-1011
UltraKN-1810
VivaKN-1910 / KN-1912 / KN-1913
GiantKN-2610
Hero 4GKN-2310 / KN-2311
HopperKN-3810
Процессоры MediaTek MT7621 и аналогичные
mipsUltra SEKN-2510
Giga SEKN-2410
DSLKN-2010
DuoKN-2110
Hopper DSLKN-3610
aarch64PeakKN-2710
UltraKN-1811 / NC-1812
GigaKN-1012
HopperKN-3811 / KN-3812

У НетВорк Консалтинг стоял Keenetic Giga (KN-1010) на архитектуре mipsel — одна из самых массовых моделей в офисном сегменте, так что никаких сюрпризов не было.

Подготовка роутера: что нужно установить до XKeen

Перед установкой XKeen роутер нужно правильно подготовить. Пропустите хоть один шаг — и XKeen просто не запустится, придётся начинать заново.

Шаг 1. Подключение USB-накопителя

XKeen со всеми компонентами живёт в системе пакетов OPKG, а та работает исключительно с USB-накопителя. Подключите флешку от 1 ГБ или внешний диск к USB-порту роутера. Важный момент: накопитель будет отформатирован, так что заранее скопируйте с него всё ценное.

Шаг 2. Установка необходимых компонентов KeeneticOS

Откройте веб-интерфейс по адресу http://192.168.1.1 и идите в Управление → Параметры системы → Изменить набор компонентов. Нужно включить следующее:

  • Интерфейс USB — без него роутер просто не увидит накопитель
  • Файловая система Ext — нужна для форматирования в ext4
  • Общий доступ к файлам (SMB) — чтобы добраться до файлов на накопителе
  • Поддержка открытых пакетов (OPKG) — собственно, менеджер пакетов, через который и ставится XKeen
  • DNS-over-TLS — шифрует DNS-запросы, никто не подслушает
  • DNS-over-HTTPS — альтернативный вариант шифрованного DNS
  • Протокол IPv6 — без него часть ресурсов будет недоступна или будут странные глюки
  • Модули ядра Netfilter — на них держится весь перехват и маршрутизация трафика

Роутер уйдёт на перезагрузку. Не торопите его — полный старт занимает 2–3 минуты.

Шаг 3. Инициализация OPKG

После перезагрузки откройте раздел Приложения в веб-интерфейсе. Роутер сам предложит отформатировать флешку и поднять OPKG — соглашайтесь. Когда процесс завершится, на накопителе появится директория /opt. Туда и будет ставиться всё дальнейшее.

Шаг 4. Настройка SSH-доступа

Без SSH дальше никуда. Зайдите в Управление → Пользователи и доступ и проверьте, что SSH-сервер включён. По умолчанию он висит на порту 22, иногда — на 222. Зависит от прошивки и ваших прежних настроек.

Данные для подключения по умолчанию:

  • Адрес: 192.168.1.1
  • Порт: 22 (или 222)
  • Логин: root
  • Пароль: пароль администратора роутера

SSH-клиент — любой на ваш вкус: PuTTY на Windows, родной терминал на macOS или Linux, Windows Terminal — всё подойдёт:

ssh root@192.168.1.1 -p 22

Установка XKeen: пошаговая инструкция

Роутер готов, SSH работает — можно ставить XKeen. На практике весь процесс укладывается в 10–15 минут, если не считать время на скачивание пакетов.

Шаг 5. Установка зависимостей и запуск инсталлятора

Подключитесь к роутеру по SSH и выполняйте команды в следующем порядке:

opkg update && opkg upgrade && \
opkg install curl tar unzip && \
curl -sOfL https://raw.githubusercontent.com/RockBlack-VPN/XKeen/main/install.sh && \
chmod +x ./install.sh && ./install.sh

Быстро по каждой строке — что и зачем:

  1. opkg update && opkg upgrade — обновляем списки пакетов и накатываем апдейты на то, что уже стоит.
  2. opkg install curl tar unzip — ставим утилиты для скачивания и распаковки XKeen. Без них скрипт установки даже не стартует.
  3. curl -sOfL ... — тянем установочный скрипт XKeen с GitHub. Флаги на всякий случай: -s (тихий режим), -O (сохранить с оригинальным именем), -f (не шуметь при ошибке), -L (идти за редиректами).
  4. chmod +x ./install.sh && ./install.sh — даём скрипту права на выполнение и сразу запускаем.

Инсталлятор запустится в интерактивном режиме и спросит про несколько вещей:

  • Версию ядра Xray
  • Источники баз GeoIP и GeoSite — берите все доступные: AntiZapret, Antifilter, v2fly. Лишними не будут
  • Режим работы — выбирайте tproxy, он рекомендуемый и на практике работает стабильнее всего

Дождитесь конца установки. XKeen сам разложит директории и создаст конфигурационные файлы — трогать ничего не нужно.

Шаг 6. Освобождение порта 443 на роутере

Вот момент, на котором многие спотыкаются. По умолчанию веб-интерфейс Keenetic занимает порт 443, а он нужен для VLESS Reality. Порт придётся освободить. Подключитесь к CLI роутера — именно к CLI Keenetic, не к OPKG — и выполните:

ip http ssl port 5443
system configuration save

После этого веб-интерфейс переедет на https://192.168.1.1:5443. Запишите новый порт прямо сейчас — потеряете доступ к панели управления, и придётся делать сброс.

Важно: эти команды — не для SSH-сессии OPKG. Нужен именно CLI самого Keenetic. Попасть туда можно через Telnet или через интерфейс командной строки прямо в веб-панели.

Конфигурация Xray: разбор всех файлов

Конфигурация Xray в XKeen устроена модульно — несколько JSON-файлов в директории /opt/etc/xray/configs/, каждый отвечает за свою часть. Грузятся они в алфавитном порядке, отсюда и нумерация: 01, 03, 04, 05. Разберём каждый по делу.

01_log.json — настройка логирования

Файл отвечает за логирование работы Xray:

{
  "log": {
    "access": "/opt/var/log/xray/access.log",
    "error": "/opt/var/log/xray/error.log",
    "loglevel": "none",
    "dnsLog": false
  }
}

Параметры:

  • access — путь к логу доступа. Сюда летят записи обо всех обработанных соединениях.
  • error — путь к логу ошибок.
  • loglevel — уровень логирования. "none" отключает логи полностью — роутер не резиновый, ресурсы экономим. Когда что-то идёт не так, переключайтесь на "warning" или "info".
  • dnsLog — логирование DNS-запросов. В продакшене держим выключенным (false).

Совет из практики: при первом запуске поставьте loglevel в "warning" — сразу увидите, если что-то пошло не так. Когда всё стабильно заработает, переключайте на "none".

03_inbounds.json — входящие обработчики

Этот файл описывает, как Xray принимает трафик, перенаправленный от Netfilter. Настраиваются два обработчика — для TCP и UDP раздельно:

{
  "inbounds": [
    {
      "tag": "redirect",
      "port": 61219,
      "protocol": "dokodemo-door",
      "settings": {
        "network": "tcp",
        "followRedirect": true
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      }
    },
    {
      "tag": "tproxy",
      "port": 61219,
      "protocol": "dokodemo-door",
      "settings": {
        "network": "udp",
        "followRedirect": true
      },
      "streamSettings": {
        "sockopt": {
          "tproxy": "tproxy"
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      }
    }
  ]
}

По ключевым моментам:

  • redirect — обработчик TCP-трафика. Протокол dokodemo-door («дверь куда угодно») принимает любое входящее соединение и дальше маршрутизирует его по правилам.
  • tproxy — обработчик UDP-трафика. Тот же протокол, но режим tproxy (transparent proxy) — нужен именно для прозрачного проксирования UDP, иначе не взлетит.
  • Порт 61219 — оба обработчика висят на одном порту, просто для разных протоколов: TCP и UDP.
  • sniffing — включён у обоих. Xray смотрит внутрь соединения — анализирует HTTP-заголовки и TLS SNI — и вытаскивает домен назначения, даже если клиент ломится напрямую по IP.
  • followRedirect — говорит обработчику использовать оригинальный адрес назначения из iptables-перенаправления, а не подменять его.

04_outbounds.json — исходящие подключения

Самый главный файл во всей конфигурации. Здесь решается, куда именно уходит трафик с роутера. Три исходящих подключения — три разных сценария:

{
  "outbounds": [
    {
      "tag": "vless-reality",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "ВАШ_СЕРВЕР",
            "port": 443,
            "users": [
              {
                "id": "ВАШ_UUID",
                "flow": "xtls-rprx-vision",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "fingerprint": "chrome",
          "serverName": "ВАШ_SNI_ДОМЕН",
          "publicKey": "ВАШ_PUBLIC_KEY",
          "shortId": "ВАШ_SHORT_ID"
        }
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {
        "response": {
          "type": "http"
        }
      }
    }
  ]
}

Разбираем каждый outbound:

1. vless-reality — основной VPN-канал. VLESS поверх Reality — на сегодня один из самых стойких к детектированию вариантов. Почему именно он? Трафик практически неотличим от обычного HTTPS:

  • address — IP или домен вашего VPN-сервера. Весь трафик к заблокированным ресурсам пойдёт именно туда.
  • port — порт сервера. Стандартно 443 — тот же, что и обычный HTTPS. Глубокая инспекция трафика не поможет отличить его от браузерного.
  • id — UUID пользователя, сгенерированный на сервере. Без него аутентификация не пройдёт.
  • flow: "xtls-rprx-vision" — алгоритм XTLS, который срезает лишние накладные расходы на шифрование. На слабом железе роутера это ощутимо.
  • fingerprint: "chrome" — Xray притворяется Chrome'ом на уровне TLS-отпечатка. Снифер видит браузерный трафик — и проходит мимо.
  • serverName — SNI, домен в TLS-handshake. Обычно ставят что-то популярное — Microsoft, Google и подобное. Выглядит как обращение к легитимному сервису.
  • publicKey — публичный ключ Reality. Генерируется на сервере при настройке.
  • shortId — короткий идентификатор для дополнительной аутентификации на уровне Reality.

2. direct — прямой канал через протокол freedom. Трафик идёт к адресату напрямую, никакого VPN. Для российских сервисов и локальных ресурсов — самое то.

3. block — чёрная дыра через протокол blackhole. Что попало сюда — то пропало: пакеты просто отбрасываются. Удобно резать телеметрию, рекламные трекеры и прочий мусор.

Откуда брать параметры для vless-reality? Нужен VPN-сервер с Xray и настроенным VLESS Reality — как правило, VPS где-нибудь в Нидерландах, Германии или Финляндии. Настройка серверной части — отдельная большая тема, но все параметры (UUID, publicKey, shortId, serverName) генерируются там же, при конфигурации Xray на сервере.

05_routing.json — правила маршрутизации

Этот файл — мозг всей системы. Именно здесь решается, какой трафик куда пойдёт:

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "inboundTag": ["redirect", "tproxy"],
        "outboundTag": "block",
        "type": "field",
        "network": "udp",
        "port": "135,137,138,139"
      },
      {
        "inboundTag": ["redirect", "tproxy"],
        "outboundTag": "block",
        "type": "field",
        "domain": ["appcenter.ms"]
      },
      {
        "inboundTag": ["redirect", "tproxy"],
        "outboundTag": "vless-reality",
        "type": "field",
        "domain": [
          "ext:geosite_v2fly.dat:google",
          "ext:geosite_v2fly.dat:speedtest",
          "ext:geosite_v2fly.dat:tiktok",
          "ext:geosite_zkeen.dat:domains",
          "ext:geosite_zkeen.dat:other",
          "2ip.ru",
          "2ip.io"
        ]
      },
      {
        "inboundTag": ["redirect", "tproxy"],
        "outboundTag": "vless-reality",
        "type": "field",
        "ip": [
          "ext:geoip_v2fly.dat:google",
          "ext:geoip_v2fly.dat:twitter"
        ]
      },
      {
        "inboundTag": ["redirect", "tproxy"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

Пройдёмся по каждому правилу (они обрабатываются сверху вниз — срабатывает первое совпавшее):

Правило 1 — блокировка SMB-портов: UDP-трафик на порты 135, 137, 138, 139 режем сразу. Это порты Windows-сервисов — NetBIOS, SMB. Им за пределы локальной сети делать нечего.

Правило 2 — блокировка определённых доменов: здесь блокируется appcenter.ms — Microsoft App Center. На практике этот сервис может генерировать весьма ощутимый поток телеметрии, который нам совершенно не нужен.

Правило 3 — маршрутизация доменов через VPN: здесь перечислены категории доменов, трафик к которым идёт через VLESS Reality:

  • ext:geosite_v2fly.dat:google — все домены Google: google.com, googleapis.com, youtube.com и остальные
  • ext:geosite_v2fly.dat:speedtest — сервисы измерения скорости
  • ext:geosite_v2fly.dat:tiktok — TikTok и связанная с ним инфраструктура
  • ext:geosite_zkeen.dat:domains — заблокированные домены из базы AntiZapret/zkeen
  • ext:geosite_zkeen.dat:other — прочие заблокированные домены, не попавшие в основную категорию
  • 2ip.ru и 2ip.io — сервисы определения IP-адреса; добавили их специально, чтобы быстро проверять, работает ли VPN

Правило 4 — маршрутизация по IP через VPN: трафик к IP-адресам Google и Twitter тоже уходит через VPN. Это подстраховка к правилу по доменам — на случай, когда клиент лезет напрямую по IP, минуя DNS.

Правило 5 — всё остальное напрямую: финальная ловушка. Всё, что не совпало ни с одним правилом выше, идёт напрямую через обычное интернет-подключение.

Параметр domainStrategy: "IPIfNonMatch" работает так: если домен не попал ни под одно правило, Xray резолвит его в IP и пробует правила уже по IP-адресу. На практике это заметно повышает точность маршрутизации — особенно для сервисов, которые сидят на общих CDN-адресах.

Для кейса НетВорк Консалтинг мы дописали в правило 3 ещё несколько доменов:

"domain": [
  "ext:geosite_v2fly.dat:google",
  "ext:geosite_v2fly.dat:speedtest",
  "ext:geosite_zkeen.dat:domains",
  "ext:geosite_zkeen.dat:other",
  "github.com",
  "github.io",
  "githubusercontent.com",
  "ghcr.io",
  "docker.io",
  "docker.com",
  "registry-1.docker.io",
  "hub.docker.com",
  "npmjs.org",
  "npmjs.com",
  "registry.npmjs.org",
  "yarnpkg.com",
  "2ip.ru",
  "2ip.io"
]

Это закрыло вопрос со стабильным доступом ко всем сервисам, которыми пользуются разработчики.

Обновление ядра Xray и дополнительная настройка

После установки XKeen советую сразу обновить ядро Xray до последней версии. Новые фичи, закрытые баги — всё это реально ощущается в работе.

Шаг 7. Обновление ядра Xray

Важно: перед обновлением проверьте, есть ли в директории конфигураций файл 02_transport.json. Если есть — удалите его. Он конфликтует с новой версией ядра и поломает запуск:

rm -f /opt/etc/xray/configs/02_transport.json

Теперь скачиваем и запускаем скрипт обновления:

curl -s -S -L -O https://github.com/Corvus-Malus/XKeen-docs/raw/main/Installer/install_xray.sh
chmod +x install_xray.sh
./install_xray.sh

Скрипт сам определит архитектуру роутера и подтянет нужную сборку ядра Xray. Руками ничего выбирать не нужно.

После обновления проверяем версию:

xray -version

В выводе должна появиться актуальная версия Xray-core.

Если после обновления что-то пошло не так — откатываемся к предыдущей версии:

./install_xray.sh recover

Шаг 8. Создание политики доступа XKeen

Шаг, который пропускают чаще всего, — настройка политики доступа. А зря. Именно она определяет, какие устройства в сети вообще будут ходить через XKeen.

В веб-интерфейсе роутера идём в Приоритеты подключений → Политики доступа в Интернет и создаём новую политику с именем «XKeen».

После создания политики перетаскиваем в неё нужные устройства. В случае НетВорк Консалтинг мы добавили все рабочие станции разработчиков, а принтеры, IP-телефоны и прочее офисное железо оставили в стандартной политике — VPN им не нужен, и роутер работает заметно спокойнее.

Совет: не торопитесь добавлять сразу всех. Сначала закиньте одно устройство — лучше свой компьютер — и убедитесь, что всё работает как надо. Только потом подключайте остальных.

Шаг 9. Открытие портов и настройка для приложений

Часть приложений требует, чтобы нужные порты были явно открыты. Основная команда выглядит так:

xkeen -ap 80,443,50000:50030

Команда открывает порты 80 (HTTP), 443 (HTTPS) и диапазон 50000–50030. Последнее особенно важно для Discord — он использует эти нестандартные порты для голосовой связи, и без этого шага голос попросту не работает.

Для ChatGPT и других сервисов на QUIC: если сервис работает нестабильно или вовсе не открывается — попробуйте заблокировать UDP на порту 443. Это отрубает QUIC и заставляет приложение переключиться на TCP, которое нормально ходит через VPN. Добавляем правило в 05_routing.json:

{
  "inboundTag": ["redirect", "tproxy"],
  "outboundTag": "block",
  "type": "field",
  "network": "udp",
  "port": "443"
}

Это правило должно стоять выше всех правил маршрутизации через VPN — иначе оно просто не успеет сработать.

Шаг 10. Перезапуск XKeen

Когда все правки внесены, перезапускаем XKeen:

xkeen -restart

Открываем в браузере 2ip.ru — сайт должен показать IP вашего VPN-сервера, потому что 2ip.ru прописан в правилах маршрутизации. Дальше проверяем github.com, hub.docker.com и всё остальное, что нужно в работе.

Резервное копирование и восстановление

Настройка XKeen — это несколько часов работы, и потерять её из-за сбоя обидно. Мы в АйТи Фреш делаем бэкап сразу после успешной настройки и повторяем его перед каждым обновлением. Без исключений.

Создание резервной копии

Чтобы сохранить всё — настройки, конфиги, установленные пакеты — выполните одну команду:

opkg install tar && tar czvf /opt/entware_backup.tar.gz --exclude="/opt/entware_backup.tar.gz" -C /opt .

Команда упакует всё нужное в архив /opt/entware_backup.tar.gz. Внутри будет:

  • Все конфигурационные файлы Xray (/opt/etc/xray/configs/)
  • Базы GeoIP и GeoSite
  • Установленные пакеты OPKG
  • Все пользовательские настройки

Этот файл лучше сразу скопировать на компьютер или в облако. Роутер — не лучшее место для единственной копии бэкапа.

Восстановление из бэкапа

Что-то пошло не так или переносите настройки на такой же роутер? Распакуйте архив:

tar xzvf /opt/entware_backup.tar.gz -C /opt

После восстановления перезапускаем XKeen:

xkeen -restart

Переустановка XKeen

Если XKeen нужно переустановить с нуля — например, после обновления прошивки — запустите инсталлятор командой:

xkeen -i

Инсталлятор отработает заново, но ваши конфигурационные файлы не тронет.

Устранение неполадок

За несколько лет работы с XKeen у нас в АйТи Фреш накопился приличный список граблей, на которые наступают чаще всего. Разберём самые частые.

SSH не подключается к роутеру

SSH зависает или не пускает вообще? Идём по порядку:

  1. Проверьте, включён ли SSH в настройках роутера.
  2. Попробуйте другой порт — 22 или 222.
  3. Если не помогло — заходим через Telnet (порт 23) и выполняем:
exec sh
rm -f /opt/var/run/dropbear.pid
/opt/etc/init.d/S51dropbear restart

exec sh переключает Telnet-сессию в Unix-shell. Дальше удаляем PID-файл и перезапускаем демон Dropbear — это закрывает процентов восемьдесят проблем с SSH.

XKeen не запускается после перезагрузки роутера

Для начала убедитесь, что USB-накопитель подключён и примонтирован. Потом смотрим логи ошибок:

cat /opt/var/log/xray/error.log

Чаще всего виноват кривой JSON в конфигах. Лишняя запятая, пропущенная скобка — и Xray просто откажется стартовать. Прогоните все JSON-файлы через валидатор.

Сайты открываются медленно или не открываются

Первым делом проверьте доступность VPN-сервера и пинг до него. Затем внимательно сверьте параметры в 04_outbounds.json — address, id, publicKey, serverName, shortId: ошибиться там легко, особенно в shortId. И обязательно убедитесь, что DNS ходит через зашифрованный канал (DNS-over-TLS или DNS-over-HTTPS) — без этого провайдер может подменять DNS-ответы, и маршрутизация поедет.

Как проверить, работает ли маршрутизация

Открываем https://2ip.ru — если XKeen настроен правильно и 2ip.ru есть в правилах маршрутизации, увидите IP вашего VPN-сервера. Потом берём любой сайт, которого нет в правилах — он обязан показать ваш реальный IP. Если оба теста прошли, всё работает как надо.

Когда картина всё равно непонятна, включаем подробное логирование: в файле 01_log.json ставим loglevel в "info" и перезапускаем XKeen. В /opt/var/log/xray/access.log будет видно каждое соединение — куда пошло и по какому правилу. Обычно после этого всё становится очевидным.

Результаты: как XKeen решил проблему НетВорк Консалтинг

Расскажу на конкретном примере. После настройки XKeen на Keenetic Giga (KN-1010) в офисе НетВорк Консалтинг вот что получилось по факту:

  • GitHub — стабильный доступ, клонирование репозиториев и push/pull без задержек.
  • Docker Hub — образы скачиваются без проблем, CI/CD-пайплайны перестали падать на середине.
  • npm / Yarn — пакеты ставятся с первого раза, никаких таймаутов.
  • Google-сервисы — Google Cloud Console, Gmail, Google Docs — работает всё, без ограничений.
  • Прозрачность — сотрудники вообще ничего не заметили. Интернет просто начал работать нормально.
  • Производительность — выборочная маршрутизация делает своё дело: через VPN идёт только то, что нужно. Российские сервисы работают напрямую на полной скорости провайдера.

Руководитель отдела разработки НетВорк Консалтинг поделился результатом: «Мы сэкономили минимум 20 человеко-часов в неделю — просто потому, что разработчики перестали тратить время на борьбу с блокировками. И самое ценное: всё работает на уровне сети, ни один компьютер отдельно настраивать не пришлось».

Полезные ресурсы и инструменты

Если хотите копнуть глубже — вот материалы, которые реально помогут в работе с XKeen:

  • GitHub XKeen — основной репозиторий проекта (форк от Skrill0/XKeen)
  • XKeen-docs — подробная документация, скрипты обновления, FAQ
  • Xray Routing Generator — онлайн-генератор правил маршрутизации, позволяющий визуально создать конфигурацию
  • Mihomo+Xray Generator — продвинутый генератор конфигураций от RockBlack
  • Форум Keenetic — тема обсуждения XKeen на официальном форуме Keenetic, где можно задать вопросы сообществу
  • Telegram-группа RockBlack VPN — оперативная поддержка и обсуждение, актуальные новости проекта

Основные команды XKeen (шпаргалка)

Команды, которые в повседневной работе с XKeen используешь чаще всего:

КомандаОписание
xkeen -restartПерезапуск XKeen (применить изменения конфигурации)
xkeen -ap 80,443,50000:50030Открыть порты для маршрутизации
xkeen -iПереустановка XKeen
xray -versionПроверить версию ядра Xray
opkg update && opkg upgradeОбновить пакеты OPKG

Заключение

XKeen — это решение для обхода блокировок прямо на роутере. Никаких VPN-клиентов на каждом ноутбуке. Всё работает прозрачно: устройства в сети даже не догадываются, что трафик где-то маршрутизируется. Выборочная маршрутизация через базы GeoSite и GeoIP устроена так, что через VPN-туннель идёт только то, что заблокировано, — а весь остальной трафик летит напрямую без какого-либо замедления.

Для IT-команд вроде НетВорк Консалтинг это не абстрактное удобство, а рабочая необходимость. GitHub, Docker Hub, npm, облачные CI/CD — без стабильного доступа к этим сервисам разработка просто встаёт. XKeen закрывает эту задачу один раз и не требует возврата к ней.

Если не хочется разбираться самостоятельно или нужна уверенность, что всё сделано правильно, — обращайтесь в АйТи Фреш. Настроим под ключ, прогоним тесты, сдадим с документацией.

Актуальная версия XKeen: xkeen-v1.1.3.9. Проект живой и активно развивается — обновления выходят регулярно. Следите на GitHub и в Telegram-группе.

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

XKeen работает на трёх архитектурах. mipsel — это 4G, Omni, Extra, Giga KN-1010/1011, Ultra KN-1810, Viva, Giant, Hero 4G, Hopper KN-3810. mips — Ultra SE, Giga SE, DSL, Duo, Hopper DSL. aarch64 — Peak, Ultra KN-1811/NC-1812, Giga KN-1012, Hopper KN-3811/3812. Полный список с артикулами — в статье выше.

Да, без VPN-сервера не обойтись. Для работы XKeen с протоколом VLESS Reality нужен VPS за рубежом — Нидерланды, Германия, Финляндия, в общем любая юрисдикция, где нет блокировок. На нём поднимается Xray с VLESS Reality, после чего получаете параметры подключения: адрес сервера, UUID, publicKey, shortId и serverName (SNI). Дальше всё это прописывается в конфиг XKeen на роутере.

На практике — почти никак не влияет. Через VPN-туннель идёт только заблокированный трафик, всё остальное — напрямую. Мы замеряли: на обычном browsing-трафике разница незаметна. Скорость через туннель зависит от вашего VPS и канала до него, но протокол VLESS с XTLS-RPRX-Vision специально заточен под минимальные накладные расходы на шифрование.

Подключитесь к роутеру через Telnet на порт 23 и выполните по очереди: exec sh, затем rm -f /opt/var/run/dropbear.pid и /opt/etc/init.d/S51dropbear restart. Первая команда удаляет зависший PID-файл SSH-демона, вторая его перезапускает. После этого SSH должен заработать.

Откройте файл /opt/etc/xray/configs/05_routing.json. Найдите правило с "outboundTag": "vless-reality" и добавьте нужные домены в массив "domain". Для GitHub, например, это "github.com", "githubusercontent.com", "ghcr.io". Сохранили — выполните xkeen -restart, и изменения вступят в силу.

Да, такое разделение настраивается. В веб-интерфейсе роутера зайдите в Приоритеты подключений → Политики доступа в Интернет, создайте политику с именем «XKeen» и перетащите туда только те устройства, которым нужна VPN-маршрутизация. Остальные продолжат работать через обычное подключение и ничего не заметят.

Базы обновляются автоматически — XKeen сам тянет актуальные данные из AntiZapret, Antifilter и v2fly. Если нужно обновить принудительно, проще всего выполнить xkeen -i: переустановит XKeen с новыми базами, вашу конфигурацию при этом не тронет. Для тонкой настройки маршрутизации удобно использовать онлайн-генераторы: Xray Routing Generator или Mihomo+Xray Generator.

Нужна помощь с настройкой?

Специалисты АйТи Фреш возьмут внедрение на себя — 15+ лет в сетевой инфраструктуре, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#XKeen#Keenetic#Xray#VLESS Reality#обход блокировок#VPN на роутере#GeoSite#GeoIP