MAATRIX / Блог / Xray/VLESS на Linux: клиент NekoRay

Xray/VLESS на Linux: клиент NekoRay

MAATRIX

На Windows и macOS для Xray-клиента есть готовые сборки на все случаи, а на Linux выбор скромнее и почти всегда сводится к NekoRay — единственному по-настоящему удобному GUI-клиенту с нормальной поддержкой VLESS и Reality под нативный десктоп. Разберём, как поставить его на Ubuntu, Debian или Fedora, импортировать конфиг с сервера и не упереться в типичные для Linux грабли — недостающие библиотеки и права на TUN-адаптер.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Установка NekoRay на Linux

NekoRay (в части релизов подписан как NekoBox for PC) распространяется через GitHub-релизы репозитория MatsuriDayo/nekoray, готовых пакетов в стандартных репозиториях дистрибутивов нет. Для Linux в разделе Releases обычно лежит архив вида nekoray-*-linux64.zip — внутри уже собранный бинарник и все Qt-библиотеки, которые клиент таскает с собой, чтобы не зависеть от версии системных пакетов.

  1. Скачайте актуальный linux64-архив со страницы Releases проекта.
  2. Распакуйте в домашнюю папку, например:
   mkdir -p ~/apps && cd ~/apps
   unzip nekoray-*-linux64.zip -d nekoray
  1. Дайте бинарнику права на исполнение и запустите:
   cd ~/apps/nekoray
   chmod +x nekoray run.sh
   ./run.sh

Скрипт run.sh обычно выставляет переменные окружения для бандловских библиотек и запускает nekoray — стартуйте через него, а не напрямую через бинарник, иначе система может подхватить не те версии Qt-библиотек.

Если при запуске сыплются ошибки вида error while loading shared libraries, недостающие системные зависимости — обычно libxcb, libfuse2 (для части сборок) или базовый набор для Qt-приложений. На Ubuntu/Debian их ставит:

sudo apt update && sudo apt install -y libxcb-cursor0 libfuse2

На Fedora аналог — xcb-util-cursor и пакеты Qt через dnf. Точный список зависимостей меняется от релиза к релизу, поэтому если после установки этого набора клиент всё ещё не стартует — запустите бинарник из терминала (не через ярлык) и посмотрите, какой именно .so-файл он не находит: ldd ./nekoray | grep "not found" покажет недостающие библиотеки поимённо.

Что нужно заранее

Понадобится уже настроенный сервер с Xray и VLESS. Если его ещё нет, сначала пройдите установку по инструкции как установить и настроить Xray и XTLS на VPS, а для маскировки без собственного домена — как установить и настроить VLESS Reality на VPS.

С сервера нужна ссылка-конфиг вида vless://uuid@ip-или-домен:порт?параметры#название. Скрипт установки Xray обычно выводит такую ссылку сразу после настройки; если её нет под рукой, значения можно собрать вручную из /usr/local/etc/xray/config.json на сервере: UUID пользователя, порт, флаги XTLS-Vision или Reality (public key, short id, SNI маскировочного домена).

Для локальной части — только сам архив с NekoRay и обычный пользовательский аккаунт Linux с правом на sudo (понадобится один раз, для TUN-режима из следующего раздела).

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Импорт VLESS/Reality-конфига

Самый быстрый способ — импорт по ссылке из буфера обмена:

  1. Скопируйте вашу vless://... ссылку целиком, включая параметры Reality (pbk, sid, sni) — они уже зашиты в ссылку, если сервер настроен как в инструкциях выше.
  2. В NekoRay: меню Program → Add profile from clipboard, либо иконка буфера обмена на панели инструментов.
  3. Профиль появится в списке слева, в группе Default, с именем из фрагмента #название ссылки.
  4. Выделите профиль и нажмите Start (или дважды кликните) — статус в трее и нижней строке окна подтвердит активное соединение.

Если ссылки нет и параметры известны только по отдельности, добавьте профиль вручную: Program → New profile → VLESS. Обязательные поля — адрес и порт сервера, UUID, Flow (для XTLS-Vision — xtls-rprx-vision, для чистого Reality без Vision оставьте пустым по значению с сервера), Network (tcp в большинстве конфигов), TLS/Reality: включите Reality, укажите Public Key и Short ID с сервера, а в SNI — тот же домен, что стоит в serverNames конфига сервера.

Проверьте связь: правой кнопкой по профилю → Test latency (или общая проверка по всей группе через панель инструментов). Число в миллисекундах значит, что хендшейк прошёл; ошибка или таймаут — переходите к диагностике в конце статьи.

Настройка роутинга по правилам

По умолчанию NekoRay предлагает готовые пресеты в разделе Program → Routing: глобальный прокси (весь трафик через тоннель), обход по России (домены и подсети .ru и локальные — напрямую) и режим кастомных правил.

Кастомные правила — отдельные карточки с условием (домен, IP-подсеть, порт) и действием (proxy, direct, block), порядок задаёт приоритет и его можно менять перетаскиванием. Практичная схема для большинства сценариев:

geoip:private direct
geosite:category-ru direct
geoip:ru direct
domain:googleapis.com proxy
default: proxy

Здесь локальные адреса и российские сайты/IP идут напрямую, всё остальное — через сервер. Так тоннель не тратится на трафик, которому обход не нужен, и нагрузка на сервер ниже.

Локальный прокси, который NekoRay поднимает на системе, — SOCKS5/HTTP на 127.0.0.1:2080 (значение может отличаться в конкретной сборке, смотрите в Program → Preferences → Inbound). Этот адрес можно прописать вручную в настройках прокси браузера или отдельного приложения, если весь системный трафик заворачивать не требуется — то есть без включения TUN.

TUN-режим на Linux

Если нужно, чтобы через сервер шёл весь трафик системы, а не только приложения с явно указанным прокси, включайте режим TUN — виртуальный сетевой интерфейс, который NekoRay поднимает и через который перехватывает системный трафик.

На Linux TUN требует прав на создание сетевого интерфейса, поэтому есть два пути:

  • Запуск через sudo. Проще всего: sudo ./run.sh из папки с клиентом. Минус — всё приложение работает от root, что не всегда приятно с точки зрения безопасности графического приложения.
  • Выдача capability конкретному ядру tun2socks без полного root. NekoRay использует встроенное ядро для TUN (в разных версиях путь к бинарнику ядра отличается, обычно лежит в подпапке nekoray_core рядом с основным исполняемым файлом). Найдите его и выдайте capability:
  sudo setcap cap_net_admin+ep ~/apps/nekoray/nekoray_core/*tun2socks*

После этого сам GUI можно запускать от обычного пользователя, а TUN-режим включится без дополнительного запроса root на каждый запуск. Точное имя бинарника ядра стоит уточнить в папке установки — оно меняется между релизами.

Включается режим в настройках профиля или в общих настройках Program → Preferences → TUN Mode. После активации в системе появляется новый интерфейс (обычно tun0 или похожий, проверить — ip addr), и весь трафик, включая системные службы, идёт через Xray.

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

Автозапуск и диагностика подключения

Автозапуск при входе в систему. NekoRay не всегда ставится с интеграцией в автозагрузку окружения рабочего стола, поэтому надёжнее сделать .desktop-файл автозапуска:

mkdir -p ~/.config/autostart
cat > ~/.config/autostart/nekoray.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=NekoRay
Exec=/home/USER/apps/nekoray/run.sh
X-GNOME-Autostart-enabled=true
EOF

Замените USER и путь на реальные. Автоподключение к последнему активному профилю обычно включается отдельным чекбоксом в Program → Preferences (Start last used profile / Auto connect) — без него после автозапуска придётся нажимать Start вручную.

Если соединение не устанавливается, проверяйте по порядку:

  • Test latency в клиенте. Сразу таймаут или ошибка — проблема на уровне сети или сервера, не в клиенте.
  • Сервис Xray на сервере: systemctl status xray. Если упал — journalctl -u xray -n 50 покажет причину.
  • Порт и файрвол сервера: ufw status или iptables -L -n — порт из ссылки-конфига должен быть открыт.
  • Время на обеих сторонах. TLS и особенно Reality чувствительны к рассинхронизации часов больше чем на несколько минут: timedatectl status на сервере и на клиенте.
  • Для Reality — SNI и Public Key. Несовпадение serverNames/dest на сервере с SNI в профиле клиента, или неверный Public Key — самая частая причина ошибки хендшейка именно в этом режиме; частые случаи разобраны в статье про частые ошибки VLESS Reality.
  • Лог клиента. Вкладка Log в NekoRay показывает конкретную причину: connection refused, TLS handshake failed, context deadline exceeded — это сильно сужает поиск.
  • Локальный файрвол. ufw status на самой машине с NekoRay, если он включён и блокирует локальный SOCKS/HTTP-порт клиента.

Если сервер работает и с него подключаются другие устройства (например, телефон через v2rayNG или macOS-клиент), проблема почти наверняка в самом профиле на Linux — сверьте UUID, порт, Flow и параметры Reality построчно с тем, что реально прописано в config.json на сервере.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Есть ли у NekoRay пакет для Ubuntu/Debian через apt или flatpak?

Официального пакета в стандартных репозиториях нет, разработчики распространяют клиент только как архив с GitHub Releases. Сторонние flatpak/AUR-сборки существуют, но отстают от официальных релизов и не всегда актуальны — для стабильной работы надёжнее брать архив с оригинальной страницы проекта.

Почему NekoRay, а не v2rayN, на Linux?

v2rayN — .NET-приложение, на Linux требует Mono или Wine и работает менее стабильно, чем нативный вариант. NekoRay написан на Qt и собирается нативно под Linux, поэтому на десктопе с этой ОС он практичнее.

Обязательно ли выдавать capability или можно всегда запускать через sudo?

Можно всегда через sudo ./run.sh, если не смущает, что графическое приложение работает от root. Capability на ядро tun2socks — более аккуратный вариант, если вы работаете на машине, где хочется держать привилегии по минимуму.

Работает ли NekoRay на Wayland?

Да, Qt-приложения такого рода запускаются и под Wayland, и под X11. Если интерфейс ведёт себя странно (артефакты, неверный скейлинг), попробуйте принудительно запустить через XWayland: QT_QPA_PLATFORM=xcb ./run.sh.

Можно ли держать несколько серверов и переключаться между ними?

Да, профили группируются, и переключение между активным сервером — один клик по другому профилю в списке. Удобно, если у вас, например, сервер в США для одних задач и сервер в другой локации для других.

Нужно ли отключать TUN перед выключением компьютера?

Нет, при закрытии NekoRay корректно снимает виртуальный интерфейс сам. Если после аварийного завершения интерфейс остался в системе, удалите его вручную: sudo ip link delete tun0 (или актуальное имя интерфейса).

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →