Настройка VLESS-клиента на OpenWRT: маршрутизация всего трафика через Xray
Запуск VLESS на уровне роутера значит, что каждое устройство в сети использует proxy - смартфоны, smart TV, IoT - без клиентского ПО. Руководство покрывает установку xray-core и sing-box на OpenWRT.
Это руководство дает конфигурацию OpenWrt router, которая отправляет выбранный сетевой трафик через VLESS или Xray proxy. Оно подходит пользователям, которым нужен router-level routing для нескольких устройств, лабораторий или automation rigs, и охватывает prerequisites, установку Xray, config, DNS, firewall rules и verification.
Требования
Вам нужен роутер с OpenWRT, имеющий не менее 16 МБ флеш-памяти и 128 МБ ОЗУ. Проверьте совместимость вашей модели роутера на openwrt.org. Руководство протестировано на OpenWRT 23.05 с роутером GL.iNet.
Необходимые пакеты: xray-core (или sing-box в качестве альтернативы), iptables-nft, dnsmasq-full (замена dnsmasq). Требуется SSH-доступ к роутеру.
Установка xray-core на OpenWRT
Подключитесь через SSH: ssh root@192.168.1.1. Затем установите xray-core: opkg update && opkg install xray-core. Если xray-core отсутствует в репозитории opkg для вашей сборки, скачайте бинарный файл arm/mipsle с GitHub и поместите его в /usr/bin/xray.
Создайте директорию конфигурации: mkdir -p /etc/xray. Основной файл конфигурации будет находиться по пути /etc/xray/config.json.
Конфигурация VLESS-клиента
Создайте файл /etc/xray/config.json с конфигурацией входящего и исходящего трафика VLESS. Входящий обрабатывает локальный трафик (SOCKS5 на порту 1080 + прозрачный прокси на порту 1081), исходящий подключается к вашему мобильному VLESS-прокси.
Структура config.json
{ "inbounds": [{"port": 1080, "protocol": "socks"}, {"port": 1081, "protocol": "dokodemo-door", "settings": {"followRedirect": true}}], "outbounds": [{"protocol": "vless", "settings": {"vnext": [{"address": "YOUR_SERVER", "port": 443, "users": [{"id": "YOUR_UUID", "encryption": "none", "flow": "xtls-rprx-vision"}]}]}, "streamSettings": {"network": "tcp", "security": "reality", "realitySettings": {"fingerprint": "chrome", "serverName": "YOUR_SNI", "publicKey": "YOUR_PUBKEY"}}}] }Proxy Poland предоставляет выделенные польские 4G/5G мобильные прокси с поддержкой VLESS/Xray. Реальные SIM-карты, смена IP раз в минуту, целевой аптайм 99,9%.
Правила маршрутизации с iptables
Чтобы перехватить весь TCP/UDP трафик и направить через xray, добавьте правила iptables. Создайте файл /etc/firewall.user с правилами PREROUTING, которые перенаправляют трафик на порт 1081 (dokodemo-door), кроме локальных и зарезервированных IP.
Добавьте xray в автозагрузку: /etc/init.d/xray enable. Запустите службу: /etc/init.d/xray start. Просматривайте логи: logread | grep xray.
Предотвращение утечек DNS
Без предотвращения утечек DNS DNS-запросы обходят прокси и раскрывают ваше реальное местоположение. Настройте dnsmasq для перенаправления всех запросов через DNS xray: в /etc/dnsmasq.conf установите server=127.0.0.1#5300 и disable-systemd-resolved.
Добавьте входящий DNS в конфиг xray на порту 5300, который перенаправляет запросы через исходящий VLESS. Протестируйте на proxypoland.com/tools/dns-leak-test - все DNS-серверы должны отображаться как польские IP.
Проверка
С любого устройства в вашей сети перейдите на proxypoland.com/tools/proxy-checker. Ваш IP должен быть польским мобильным IP оператора. Запустите тест скорости - обычно вы увидите 20-40 Мбит/с через VLESS Reality на производительном роутере.
Официальные источники
Часто задаваемые вопросы
Оба поддерживают VLESS Reality. xray-core более зрелый и хорошо задокументированный. sing-box имеет более простой формат JSON-конфига и лучшую производительность UDP. Для большинства пользователей, начинающих работу, xray-core проще найти помощь.
Шифрование требует ресурсов CPU. На старых MIPS-роутерах производительность может снизиться на 10-20%. Современные ARM-роутеры (GL.iNet Beryl AX, Banana Pi R4) обрабатывают VLESS Reality на полной скорости линии. Если скорость критична, используйте поток XTLS-Vision, который снижает нагрузку на обработку.
Скачайте предварительно скомпилированный бинарный файл xray для вашей архитектуры CPU с github.com/XTLS/Xray-core/releases. Выберите нужную архитектуру: MIPS24kc для большинства старых роутеров, ARM v7/v8 для современных. Поместите в /usr/bin/xray и выполните chmod +x.
Да. В правилах PREROUTING iptables используйте совпадение по IP-адресу источника или MAC-адресу вместо маршрутизации всего трафика. Пример: добавьте -s 192.168.1.50, чтобы направить через VLESS только одно устройство, тогда как остальные используют обычный интернет.
Да. Каждый план Proxy Poland включает доступ по протоколу VLESS/Xray. Вы получаете строку подключения VLESS Reality вместе с подпиской. Протокол работает на порту 443 с маскировкой Reality, что делает его устойчивым к глубокой инспекции пакетов.
Подключитесь к роутеру по SSH, выполните opkg update, затем opkg install xray-core. На старых версиях OpenWRT (19.07 и ниже) xray-core отсутствует в стандартном репозитории - добавьте v2ray feed вручную или используйте sing-box с более широкой поддержкой пакетов. Проверьте установку командой xray version. Конфигурация размещается в /etc/xray/config.json или через модуль luci-app-xray-core LuCI.
Минимум 64 МБ свободной RAM для xray-core в простое, рекомендуется 128 МБ+ для стабильной пропускной способности. Роутеры с 32 МБ общей памяти (старые TP-Link N-класса) не могут надёжно запустить xray. Современные роутеры с 256-512 МБ (GL.iNet MT3000, Xiaomi AX3600 с OpenWRT) обрабатывают 100-200 Mbps VLESS-шифрования без перегрузки CPU. Sing-box легче (~30% меньше памяти) при ограниченной RAM.
Используйте policy-based routing через правила iptables/nftables, которые маркируют пакеты от определённых MAC-адресов или LAN IP в отдельную таблицу маршрутизации с xray TPROXY chain. Приложение pbr (Policy Based Routing) LuCI упрощает настройку - установите opkg install pbr-iptables, затем в LuCI > Network > Policy Based Routing добавьте правило, связывающее MAC устройства с xray-интерфейсом. Остальные устройства используют стандартный WAN.
Да, если включить сервис: /etc/init.d/xray enable и /etc/init.d/xray start. Init-скрипт перезапускает xray-core при каждой загрузке, используя /etc/xray/config.json. Проверьте после перезагрузки командой logread | grep xray для подтверждения чистого запуска. При использовании модуля LuCI галочка 'Enabled at startup' делает то же самое.
LTE-соединения обычно используют MTU 1428-1500 в зависимости от оператора; с учётом накладных расходов VLESS-инкапсуляции установите MTU 1380-1400 на WAN-интерфейсе для избежания фрагментации. Проверьте командой ping -s 1372 -M do [target] с LAN-клиента - если успешно, эффективный размер payload в норме. Симптомы неправильного MTU: TCP-соединения открываются, но зависают на больших передачах.
Да - это стандартная схема. WAN обеспечивает прямой интернет для обычных устройств; сервис xray-core слушает локальный TPROXY-сокет и выборочно направляет помеченные устройства через VLESS-туннель. С точки зрения OpenWRT, VLESS - отдельный выход, на который могут ссылаться PBR-правила. Используйте это для переключения одного домашнего устройства (рабочий ноутбук, IoT-камера, IPTV-приставка) на польский IP без влияния на остальную LAN.
Установите vnstat (opkg install vnstat) и привяжите к виртуальному интерфейсу xray или upstream WAN - vnstat -d показывает дневную статистику. Для просмотра в реальном времени используйте iftop -i [iface]. Сам xray-core логирует в /var/log/xray/access.log и error.log при включённом логировании в config.json - полезно для выявления неудачных handshake vs успешных туннелей под нагрузкой.


