Здесь могла бы быть реклама
Она помогает блогу развиваться.
Кажется, сегодня она немного загрустила.

Главная страница » Сеть и сервисы » VLESS как туннель между вашими проектами: теория и настройка
VLESS как туннель между вашими проектами: теория и настройка
Сеть и сервисы

VLESS как туннель между вашими проектами: теория и настройка

31.08.2026 122
VLESS как туннель между вашими проектами: теория и настройка

Настраиваем VLESS-туннель на Raspberry Pi и Orange Pi: теория, конфигурация Xray, проброс портов, типичные ошибки и проверка результата.

⚠️ Дисклеймер: Материал носит исключительно информационный и образовательный характер. Все описанные действия, программное обеспечение, команды и примеры предназначены для изучения технологий, тестирования собственных систем и решения законных технических задач. Автор не призывает использовать приведённую информацию для нарушения законодательства, получения несанкционированного доступа, обхода установленных ограничений или причинения вреда третьим лицам. Перед применением информации убедитесь, что ваши действия соответствуют законодательству Российской Федерации и правилам используемых сервисов.

Когда у тебя дома живёт целый зоопарк одноплатников — Raspberry Pi, Orange Pi, NanoPi — рано или поздно встаёт вопрос: как соединить их между собой безопасно и быстро? Можно, конечно, поднять WireGuard и забыть о проблемах. Но что если нужен более гибкий инструмент, который умеет работать через прокси, маскироваться под обычный HTTPS-трафик и при этом не требует сложной маршрутизации?

Знакомьтесь — VLESS. Протокол, который родился из экспериментов сообщества V2Ray и быстро стал любимцем тех, кто строит распределённые системы на слабом железе. Сегодня разберём, как поднять VLESS-туннель между проектами, зачем он нужен и какие грабли ждут на этом пути.

Зачем вообще туннель между проектами?

Представь ситуацию: у тебя дома крутится Home Assistant на Orange Pi Zero 3, в гараже стоит ESP32 с датчиками температуры, а на балконе — Raspberry Pi с камерой. Все они в одной локальной сети, но что если нужно достучаться до них извне? Или того хуже — объединить устройства, которые физически находятся в разных местах: на даче, в офисе, у родителей.

Туннель решает три задачи: - Безопасность — трафик шифруется, и никто в公共 Wi-Fi не увидит, что ты передаёшь. - Единое пространство — устройства из разных сетей видят друг друга так, будто они рядом.

Почему именно VLESS, а не классический OpenVPN или тот же WireGuard? Всё просто: VLESS легче, быстрее и гибче. Он работает поверх TCP или WebSocket, не требует ядерных модулей (в отличие от WireGuard, которому нужен модуль ядра или userspace-реализация) и умеет проксировать не только весь трафик, а конкретные сервисы.

Теория: как устроен VLESS

VLESS — это эволюция протокола VMess из экосистемы V2Ray. Он представляет собой простое шифрованное соединение между клиентом и сервером. Ключевая фишка — отсутствие шифрования на уровне протокола (в классическом понимании). Вместо этого VLESS полагается на TLS, который поднимается поверх.

Звучит странно? Давай разберём по слоям:

[Твой сервис] → [VLESS-клиент] → [TLS] → [TCP/WebSocket] → [Интернет] → [VLESS-сервер] → [Целевой сервис]

Клиент получает обычный TCP-трафик от приложения, заворачивает его в VLESS-фрейм, шифрует TLS-сессией и отправляет на сервер. Сервер расшифровывает, смотрит на UUID пользователя и решает, куда направить трафик.

Главные преимущества перед VMess: - Меньше оверхед — нет двойного шифрования, меньше накладных расходов. - Проще конфигурация — не нужно хранить сменяющиеся ID, только статический UUID. - Лучше маскировка — с TLS выглядит как обычный HTTPS-запрос к сайту.

Для одноплатников это критично: каждый лишний процент CPU на шифрование — это нагрев и потеря производительности.

Что нам понадобится

Для настройки нужны: - Два одноплатника (или один одноплатник + обычный сервер). В моём случае — Raspberry Pi 4 (сервер) и Orange Pi Zero 3 (клиент). - Свежая версия Xray-core (реализация VLESS). - Немного терпения и прямые руки.

Если у тебя ещё нет одноплатника для роли сервера — присмотрись к Rock 3A или Orange Pi 5. Оба отлично справятся с ролью туннельного узла.

Установка Xray-core

Начнём с установки. Я покажу универсальный способ через официальный скрипт, который работает и на Raspberry Pi OS, и на Armbian, и на Ubuntu.

На серверной стороне:

# Скачиваем и запускаем официальный скрипт установки
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

# Проверяем, что Xray запустился
systemctl status xray

Скрипт сам определит архитектуру (arm64 или amd64), скачает нужный бинарник и создаст systemd-юнит. Если ты используешь DietPi — не пугайся, там всё то же самое, просто через dietpi-software.

На клиентской стороне — аналогично:

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

Генерация ключей и UUID

VLESS использует UUID для идентификации пользователей. Сгенерируем его:

# Генерируем UUID
cat /proc/sys/kernel/random/uuid

Запиши полученное значение — оно понадобится и на сервере, и на клиенте.

Для TLS нам нужны ключи. Можно использовать самоподписанный сертификат (для тестов), но лучше — Let's Encrypt. Если у тебя нет домена, используй self-signed:

# Создаём директорию для сертификатов
mkdir -p /etc/xray/ssl
cd /etc/xray/ssl

# Генерируем самоподписанный сертификат (для тестов!)
openssl req -x509 -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 
  -keyout key.pem -out cert.pem -days 3650 -subj "/CN=my-tunnel.local"

Обрати внимание: я использую ECC-ключ (prime256v1), а не RSA. Для одноплатников это важно — ECC-операции в разы быстрее на ARM-процессорах.

Настройка сервера

Создаём конфигурационный файл /etc/xray/config.json:

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "ТВОЙ_UUID_ЗДЕСЬ",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "certificates": [
            {
              "certificateFile": "/etc/xray/ssl/cert.pem",
              "keyFile": "/etc/xray/ssl/key.pem"
            }
          ],
          "alpn": ["http/1.1"]
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    }
  ]
}

Что здесь важно: - flow: "xtls-rprx-vision" — включает оптимизацию XTLS, которая ускоряет работу за счёт прямого проброса зашифрованных данных. - decryption: "none" — обязательное поле для VLESS. - network: "tcp" — работаем по TCP. Если нужен WebSocket (для маскировки под обычный сайт), меняем на ws.

Перезапускаем сервер:

systemctl restart xray
systemctl enable xray

Настройка клиента

Теперь клиентская сторона. Конфиг /etc/xray/config.json на клиенте:

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "protocol": "socks",
      "settings": {
        "udp": true
      },
      "tag": "socks-in"
    }
  ],
  "outbounds": [
    {
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "IP_ТВОЕГО_СЕРВЕРА",
            "port": 443,
            "users": [
              {
                "id": "ТВОЙ_UUID_ЗДЕСЬ",
                "encryption": "none",
                "flow": "xtls-rprx-vision"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "allowInsecure": true,
          "serverName": "my-tunnel.local"
        }
      }
    }
  ]
}

Заметь: allowInsecure: true — это для самоподписанного сертификата. Если используешь Let's Encrypt, убери эту опцию — так безопаснее.

Запускаем клиент:

systemctl restart xray
systemctl enable xray

Пробрасываем конкретные сервисы

Туннель поднят, но как им пользоваться? Самый простой способ — SOCKS5-прокси на порту 1080. Можно настроить любое приложение на использование прокси, но это не всегда удобно.

Лучше настроить проброс конкретных портов. Например, чтобы достучаться до Home Assistant на сервере через туннель. Для этого меняем inbound на клиенте:

{
  "inbounds": [
    {
      "port": 8123,
      "protocol": "dokodemo-door",
      "settings": {
        "address": "127.0.0.1",
        "port": 8123,
        "network": "tcp"
      },
      "tag": "ha-proxy"
    }
  ]
}

Теперь всё, что приходит на порт 8123 клиента, уходит в туннель и выходит на сервере на localhost:8123.

Типичные ошибки и как их избежать

1. Не совпадает UUID. Самая частая ошибка. Проверь, что на клиенте и сервере одинаковый UUID. Один лишний символ — и соединение молча рвётся.

2. Проблемы с TLS. Если используешь self-signed сертификат и забыл allowInsecure: true — получишь ошибку tls: failed to verify certificate. Добавь опцию или используй нормальный сертификат.

3. Порты уже заняты. На сервере порт 443 может быть занят nginx или другим веб-сервером. Проверь:

ss -tlnp | grep 443

Если занят — либо меняй порт в конфиге, либо настраивай nginx как фронт для VLESS (тема для отдельной статьи).

4. Не работает после перезагрузки. Убедись, что Xray добавлен в автозагрузку:

systemctl enable xray

5. Слишком старый Xray. Версии до 1.8.0 могут не поддерживать xtls-rprx-vision. Обнови:

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ update

Проверка результата

Тестируем туннель. С клиента:

# Проверяем, что SOCKS-прокси отвечает
curl -x socks5://127.0.0.1:1080 http://example.com

# Если настроен проброс порта — проверяем конкретный сервис
curl http://127.0.0.1:8123

Если всё работает — ты увидишь ответ от сервера. Для проверки скорости и надёжности:

# Замеряем скорость через туннель
curl -x socks5://127.0.0.1:1080 -o /dev/null -w "%{speed_download}n" http://speedtest.local/bigfile.bin

Полезно также посмотреть логи Xray:

journalctl -u xray -f

В логах не должно быть ошибок уровня error — только warning и ниже.

Интеграция с умным домом

Теперь самое интересное — как применить это на практике. Если у тебя Home Assistant на одном одноплатнике, а ESP32-датчики разбросаны по разным сетям, VLESS-туннель поможет объединить их.

Схема такая: 1. Сервер VLESS поднимается на одноплатнике, где крутится Home Assistant. 2. Клиент VLESS ставится на второй одноплатник в другой сети. 3. Через туннель пробрасываются порты MQTT-брокера (1883) или API Home Assistant (8123).

Получается, что ESP32 из гаража шлёт данные на локальный MQTT-брокер, а тот уже через туннель передаёт их в Home Assistant. Никаких облаков, всё локально и безопасно.

Кстати, если ты ещё не поднял MQTT — почитай про Mosquitto. В связке с VLESS это даст практически безграничные возможности для распределённого умного дома.

Заключение

VLESS — это не просто очередной прокси-протокол. Это гибкий инструмент, который позволяет строить распределённые системы на слабом железе без потери производительности. Он легче WireGuard, гибче OpenVPN и лучше маскируется под обычный HTTPS.

Для домашних проектов на одноплатниках это идеальный выбор: минимум затрат CPU, настройка за 15 минут и никаких проблем с NAT.

Попробуй поднять VLESS между своими проектами — уверен, ты быстро оценишь его удобство. А если возникнут вопросы — пиши в комментариях, разберёмся вместе.


Если тема туннелей и сетей на одноплатниках интересна — загляни в статьи про WireGuard VPN на одноплатнике и Pi-hole + Unbound. Там много полезного для построения домашней сетевой инфраструктуры.

Понравилась статья?

Поставьте лайк и сохраните полезный материал в закладки.

Комментарии (0)
Добавить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Сеть и сервисы
02.09.2026
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Пошаговая установка Nginx Proxy Manager в Docker: настройка reverse proxy, получение SSL-сертификатов Let's Encrypt и проксирование сервисов с HTTPS. Практическое
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
Сеть и сервисы
04.09.2026
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
Routerich AX3000 с OpenWrt оказался гораздо дружелюбнее, чем можно ожидать от роутера с настолько гибкой прошивкой. Разбираемся с первоначальной настройкой, Mesh,
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
Сеть и сервисы
02.09.2026
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
Практический Python-скрипт для проверки доступности IP или домена через DNS, TCP 443, TLS и HTTPS. Работает на Windows, Raspberry Pi, Rock Pi, Orange Pi, Debian, Ubuntu
WireGuard VPN на одноплатнике: ваш безопасный портал домой
Сеть и сервисы
31.03.2026
WireGuard VPN на одноплатнике: ваш безопасный портал домой
Пошаговое руководство по настройке быстрого и безопасного WireGuard VPN на одноплатнике. Удалённый доступ к домашней сети, умному дому и файлам своими руками.
Как работают ТСПУ Роскомнадзора? Разбираемся вместе
Сеть и сервисы
01.09.2026
Как работают ТСПУ Роскомнадзора? Разбираемся вместе
Разбираем устройство ТСПУ: DPI, SNI-фильтрация, DNS-перехват. Узнайте, как проверить работу ТСПУ у провайдера и защитить свой трафик.
Как выбрать LTE/5G-модем для Routerich AX3000: от простого E3372 до T77W968, T99W175 и FM350
Сеть и сервисы
08.09.2026
Как выбрать LTE/5G-модем для Routerich AX3000: от простого E3372 до T77W968, T99W175 и FM350
Как выбрать LTE/5G-модем для Routerich AX3000: разбираемся в LTE Cat, агрегации частот, совместимости, питании, охлаждении и популярных моделях от Huawei, Quectel,

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