Установка Passwall2 и Xray на роутер с OpenWrt нужна тем, кому мало «одной кнопки»: Passwall2 умеет держать десятки серверов из подписки, переключаться между ними и разводить трафик по правилам — какие домены в туннель, какие напрямую. Плата за это — ручная работа: пакет ставится из стороннего репозитория, а ядро Xray приходится подкладывать самому, потому что версия из штатного обновления отстаёт от протоколов, которыми сейчас обходят белые списки.

Ниже — весь путь целиком: от apk add до зелёного RUNNING и голландского IP в 2ip. Все скриншоты сняты на реальном роутере с OpenWrt 25.12.4 (MediaTek Filogic, aarch64_cortex-a53).

Passwall2 — не для слабых роутеров. Разработчики репозитория заявляют минимум 700 МГц CPU и 256 МБ RAM.1 На 8/16 МБ flash он не поместится в принципе: одно только ядро Xray весит около 35 МБ. Если у вас бюджетный роутер — берите podkop или Netshift, они заметно легче.

Passwall2, podkop или Netshift — что выбрать

Все три решения делают одно и то же — заворачивают часть трафика в VPN-туннель, — но рассчитаны на разного пользователя.

podkopNetshiftPasswall2
Ядроsing-boxsing-boxXray / sing-box / Hysteria
Подпискинетдада
Список серверов1из подпискидесятки, с ping и URL-тестом
Маршрутизацияготовые спискиготовые спискисвои правила + GeoIP/Geosite
Интерфейспростойпростой10 вкладок, всё на английском
Требованияскромныескромные256 МБ RAM, 700 МГц

Passwall2 стоит ставить, если вам нужно несколько серверов одновременно: например, Нидерланды для YouTube, «белые списки» для банков-исключений и отдельная нода для торрентов. Если задача — просто открыть заблокированные сайты, podkop настраивается за десять минут и не требует ничего из описанного ниже.

Зачем вообще подкладывать ядро Xray вручную

Passwall2 — это оболочка. Сам он трафик не шифрует, а запускает внешний бинарник-ядро: Xray, sing-box или Hysteria. Во вкладке App Update есть кнопки «Check update», которые ядра скачивают автоматически, — и в этом главный подвох.

Xray-core давно живёт в двух ветках. Последний стабильный релиз на момент написания — v26.3.27 (март 2026), а всё, что вышло позже, помечено как Pre-release: v26.6.1, v26.6.22, v26.7.11, v26.7.28. При этом именно в свежих pre-release появляются параметры транспорта XHTTP, которыми сейчас обходят белые списки:

  • xPaddingBytes — добивка заголовков случайным числом байт (обычно диапазон вида 100-1000), чтобы соединение не палилось по характерной длине пакетов;
  • GET-режимы XHTTP — запросы, неотличимые от обычного обращения к API разрешённого сайта;
  • режимы packet-up / stream-up / stream-one, разбивающие поток так, чтобы он выглядел как чужой легитимный трафик.

Если сервер выдал вам ссылку с этими параметрами, а на роутере стоит стабильное ядро — узел просто не поднимется либо будет отваливаться. Отсюда и весь ручной ритуал: скачать pre-release с GitHub, положить в /usr/bin/xray, дать права.

Инфо: pre-release — это не «сломанная сборка», а релиз без длительного тестирования. Для домашнего роутера риск невелик, но старое ядро стоит сохранить: откат займёт одну команду (см. раздел «Обновление и откат ядра»).

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

  • Роутер с OpenWrt 24.10 / 25.12 и новее — с пакетным менеджером apk, репозиторий Passwall2 собран только под него.
  • Свободное место: df -h /overlay должно показать хотя бы 60–80 МБ.
  • Доступ по SSH — если вы там ни разу не были, начните с краткого разбора SSH.
  • WinSCP (или любой SCP/SFTP-клиент) для переноса файла ядра.
  • Ссылка на подписку VPN или готовая vless://-ссылка — своя, с сервера на 3X-UI, или от сервиса.
Адреса LAN и WAN обязаны отличаться. Если ваш роутер стоит вторым в цепочке за провайдерским и оба сидят на 192.168.1.1, Passwall2 не заработает — маршруты и правила nftables будут ссылаться сами на себя. Сначала смените локальный IP роутера, потом возвращайтесь сюда.

Шаг 1. Бэкап и проверка роутера

Прежде чем что-то ставить, снимите копию настроек и посмотрите, что у вас за железо и сколько места осталось.

ssh root@192.168.1.1
ubus call system board          # версия OpenWrt и архитектура
df -h /overlay                  # свободное место
sysupgrade -b /root/backup-$(date +%F).tar.gz

В выводе ubus call system board запомните поле board_name и цель сборки (target) — по ним дальше выбирается правильный архив Xray. В нашем примере это mediatek/filogic, архитектура aarch64_cortex-a53.

Заодно снесите конкурирующие прокси-решения, если они стоят:

apk del luci-app-podkop podkop 2>/dev/null
apk del luci-app-netshift netshift 2>/dev/null
Два прокси-решения на одном роутере не уживаются. Passwall2, podkop и Netshift дерутся за перехват DNS и за правила nftables. Итог — «интернет то есть, то нет». Оставьте что-то одно.

Как забрать бэкап на компьютер и восстановиться из него — в отдельной инструкции.

Шаг 2. Установка Passwall2 через SSH

Passwall2 нет в официальном репозитории OpenWrt — пакеты берутся из стороннего репозитория с собственной подписью. Поэтому сначала кладём публичный ключ, потом добавляем сам репозиторий:

wget -O /etc/apk/keys/passwall2-repo.rsa.pub \
  https://rage-ac.github.io/Passwall2/keys/passwall2-repo.rsa.pub

grep -q 'rage-ac.github.io/Passwall2' /etc/apk/repositories || \
  echo "https://rage-ac.github.io/Passwall2/packages" >> /etc/apk/repositories

apk update
apk add luci-app-passwall2 kmod-nft-socket kmod-nft-tproxy dnsmasq-full

Разберём, что здесь происходит:

Команда / пакетЗачем
wget -O /etc/apk/keys/...ключ подписи, без него apk откажется ставить пакеты
grep -q ... || echo ...добавляет строку репозитория один раз, а не при каждом запуске
luci-app-passwall2сам плагин + веб-интерфейс в LuCI
kmod-nft-socket, kmod-nft-tproxyмодули ядра для прозрачного перехвата трафика (TProxy)
dnsmasq-fullзамена обычного dnsmasq, умеет ipset/nftset — без него маршрутизация по доменам не работает
Совет: строку репозитория лучше добавлять через grep -q … ||, а не голым echo … >>. Иначе при повторном запуске в /etc/apk/repositories появятся дубли, и apk update начнёт сыпать предупреждениями.

Установка идёт минуту-полторы: apk сначала удаляет обычный dnsmasq (в логе это Purging dnsmasq), затем ставит dnsmasq-full и зависимости. Кратковременная потеря интернета в этот момент — норма.

Установка Passwall2 на OpenWrt через apk add в SSH-консоли
Репозиторий подключён — apk update видит пакеты Passwall2 для aarch64_cortex-a53, дальше идёт установка

После установки в LuCI появится меню Службы → Passwall2. Пока что ядро не запущено — статус Core: NOT RUNNING, это нормально: сервера ещё не добавлены.

Веб-интерфейс Passwall2 в LuCI со вкладками Basic Settings, Node List, Node Subscribe
Так выглядит Passwall2 сразу после установки: десять вкладок сверху и четыре индикатора связи

Шаг 3. Скачиваем свежее ядро Xray с GitHub

Идём в раздел Releases проекта XTLS/Xray-core и берём верхний релиз — даже если он помечен Pre-release. Нужен архив под архитектуру вашего роутера:

Чипсет / платформаАрхив Xray
MediaTek MT7981 / MT7986 (filogic)Xray-linux-arm64-v8a.zip
Qualcomm IPQ40xx / IPQ806xXray-linux-arm32-v7a.zip
MediaTek MT7621 (ramips)Xray-linux-mips32le.zip
Atheros AR71xx / ath79Xray-linux-mips32.zip
x86_64 (ПК, мини-ПК, виртуалка)Xray-linux-64.zip
Rockchip / Raspberry Pi 4–5Xray-linux-arm64-v8a.zip
Ошибётесь с архитектурой — получите Illegal instruction. Файл скопируется и даже станет исполняемым, но при запуске ядро молча упадёт. Если сомневаетесь — сверьтесь с выводом ubus call system board из шага 1.

Скачанный архив распаковываем на компьютере. Внутри лежат geoip.dat, geosite.dat, LICENSE, README.md и сам бинарник xray без расширения — нужен только он.

Страница релиза Xray-core v26.7.28 на GitHub с меткой Pre-release и списком архивов Содержимое распакованного архива Xray: geoip.dat, geosite.dat, LICENSE, README и бинарник xray
Инфо: файлы geoip.dat и geosite.dat копировать не нужно — Passwall2 качает и обновляет свои базы сам, на вкладке Rule Manage.

Шаг 4. Переносим ядро на роутер через WinSCP

Роутеру нужен файл в /usr/bin/. Проще всего перетащить его мышкой через WinSCP.

  1. Запускаем WinSCP, создаём новое подключение.
  2. Протокол передачи — SCP (не SFTP: в OpenWrt по умолчанию стоит dropbear, полноценного SFTP-сервера там нет).
  3. Имя хоста — адрес роутера (192.168.1.1), порт 22, пользователь root, пароль — от админки.
  4. В правой панели переходим в /usr/bin/, в левой открываем папку с распакованным Xray.
  5. Перетаскиваем файл xray вправо и подтверждаем копирование.
Окно входа WinSCP: протокол SCP, хост 192.168.1.1, порт 22, пользователь root Две панели WinSCP: слева распакованный Xray, справа каталог /usr/bin роутера Индикатор копирования файла xray в /usr/bin роутера в WinSCP
Без WinSCP тоже можно. Из терминала Windows, macOS или Linux — одной командой: scp xray root@192.168.1.1:/usr/bin/xray. А если роутер сам ходит в интернет, файл можно забрать прямо на нём: cd /tmp && wget <ссылка-на-zip> && unzip -o Xray-*.zip xray -d /usr/bin/.

Шаг 5. Права на файл и перезапуск службы

Скопированный файл лежит без флага исполнения — для системы это просто набор байт. Возвращаемся в SSH и исправляем:

chmod +x /usr/bin/xray
/usr/bin/xray version          # проверка: ядро должно ответить своей версией
service passwall2 restart

Вторая команда — самая полезная проверка на этом этапе. Если она вернула номер версии, значит бинарник рабочий и архитектура выбрана верно. Если вместо этого вы видите Illegal instruction, not executable или Exec format error — вернитесь к таблице в шаге 3 и возьмите другой архив.

Команда chmod +x /usr/bin/xray в SSH-консоли роутера OpenWrt Перезапуск службы командой service passwall2 restart в SSH

Шаг 6. Проверяем, что Passwall2 увидел ядро

Открываем Службы → Passwall2 → App Update. Напротив строки Xray Версия должна стоять та самая версия, которую вы скачали, а кнопка обновления — смениться на неактивную надпись It is the latest version.

Вкладка App Update в Passwall2: Xray Версия 26.7.28 и путь /usr/bin/xray
Passwall2 подхватил ядро: версия 26.7.28, путь /usr/bin/xray, обновление не требуется

Ниже на этой же вкладке — поля App Path для каждого ядра. Если вы положили xray не в /usr/bin/, а, скажем, в /opt/, поправьте путь здесь и нажмите «Сохранить».

Не нажимайте «Force update» после ручной установки. Кнопка скачает ядро из своего источника и перезапишет ваш pre-release — вместе с поддержкой тех самых параметров XHTTP, ради которых всё затевалось.

Шаг 7. Подключаем подписку VPN

Переходим на вкладку Node Subscribe и жмём Добавить — открывается форма новой подписки. Заполнить нужно всего два поля:

  • Subscribe Remark — произвольное имя группы, оно же станет названием вкладки в списке серверов (у нас — 8bit);
  • Subscribe URL — сама ссылка на подписку от вашего VPN-сервиса.

Остальное на первом заходе не трогаем: Auto в полях типа нод означает «использовать ядро по умолчанию», и для VLESS это как раз Xray.

Форма новой подписки в Passwall2: поля Subscribe Remark и Subscribe URL Список подписок в Passwall2 с кнопкой Добавить и счётчиком Node num

Полезные настройки в той же форме, к которым стоит вернуться позже:

ОпцияЧто делает
Auto Update Modeавтообновление подписки по расписанию (по умолчанию выключено)
Update Once on Bootобновлять список серверов при каждой загрузке роутера
Filter keyword Modeфильтр нод по ключевым словам — удобно выкинуть лишние локации
User-Agentнекоторые панели отдают разный формат в зависимости от клиента; v2rayN подходит почти всем
Send HWIDотправляет идентификатор устройства. Включайте, только если провайдер этого требует
Ссылка на подписку — это ваш ключ доступа. Кто угодно, у кого она есть, подключится к вашему тарифу. Не выкладывайте её в чаты, не показывайте на скриншотах — на изображениях в этой статье она специально замазана.

Шаг 8. Загружаем сервера вручную и читаем лог

Passwall2 не идёт за подпиской сразу после сохранения. Нажмите Manual subscription в строке подписки (или Manual subscription All, если подписок несколько) — плагин скачает список нод прямо сейчас.

Кнопка Manual subscription в списке подписок Passwall2
Manual subscription — принудительная загрузка серверов. Красная подсказка выше напоминает: сначала «Сохранить» и «Применить», потом обновление

Сразу же загляните на вкладку Runtime Logs — там видно, чем закончилась загрузка. Нужная строка выглядит так:

Start subscribing...
 - Start subscribing: [8bit] https://… [Auto]
 - Successfully resolved the [8bit] node, number: 20
 - Update [Node] Matching node: rulenode
Subscription complete...

Ключевое здесь — number: 20: столько серверов реально разобрано. Если стоит number: 0, сервера не загрузились.

Runtime Logs в Passwall2 с результатом загрузки подписки и числом найденных нод
В логе видно и неудачные попытки (number: 0), и успешную — 20 нод. Ссылка на подписку скрыта

Что означает number: 0:

  • ссылка отдаёт формат, который Passwall2 не разбирает (строка https type node subscriptions are not currently supported в логе — как раз об этом);
  • у роутера нет доступа к домену подписки — панель VPN-сервиса тоже может быть заблокирована;
  • в конце ссылки не хватает суффикса вроде /json или, наоборот, он лишний. Попробуйте оба варианта — в логе на скриншоте видно, что сработал именно вариант без /json.

Проверить, живы ли сами сервера из подписки, можно не заходя на роутер — инструмент проверки серверов скачает список по ссылке и покажет, кто отвечает, а кто нет. Раскрывать UUID или пароль для этого не нужно.

Теперь вкладка Node List — здесь весь загруженный список с кнопками Test (ICMP-ping), TCPing и URL Test. Нажмите TCPing у нескольких нод: цифры до 100 мс — хорошо, Тайм-аут — сервер недоступен из вашей сети, такую локацию выбирать бессмысленно.

Node List в Passwall2: список серверов VLESS из подписки с задержками TCPing
20 нод из подписки с замерами TCPing. Две локации в тайм-ауте — их пропускаем

Шаг 9. Весь трафик через VPN

Самый простой сценарий: всё, что уходит с роутера, идёт через один сервер.

  1. Вкладка Basic Settings → Main.
  2. Включите Main switch.
  3. В списке Node выберите сервер из подписки — например, Xray VLESS: [Нидерланды NL].
  4. Оставьте включёнными Localhost Proxy (трафик самого роутера) и Client Proxy (трафик устройств в LAN).
  5. СохранитьПрименить.
Basic Settings в Passwall2: выбран узел Xray VLESS Нидерланды, статус Core RUNNING
Core сменился на RUNNING, индикаторы Google и GitHub показывают реальную задержку — туннель поднялся

Четыре плитки сверху — это встроенная диагностика. Baidu Connection проверяет китайский сегмент (для нас бесполезна), а вот Google Connection и GitHub Connection должны показать время отклика в миллисекундах. Если там висит Touch Check и после нажатия ничего не меняется — туннель не работает, идите в раздел «Если что-то не работает».

Для надёжности перезапустите службу из SSH — так Passwall2 гарантированно перечитает конфигурацию и перестроит правила nftables:

service passwall2 restart
logread -e passwall | tail -30

Шаг 10. Маршрутизация: Xray_shunt и Shunt Rule

Гнать весь трафик через VPN — плохая идея на каждый день: банки и госуслуги начнут просить подтверждения, маркетплейсы покажут чужой регион, а скорость просядет на всём подряд. Правильнее развести трафик по правилам.

В Passwall2 за это отвечает шунт — виртуальный узел, который сам решает, куда отправить соединение.

  1. Basic Settings → Main → Node → выберите Xray_shunt: [rulenode] вместо конкретного сервера.
  2. Рядом появится новая вкладка Shunt Rule — вся маршрутизация настраивается там.
Выбор узла Xray_shunt rulenode в Basic Settings Passwall2 Вкладка Shunt Rule в Passwall2 с выпадающим списком серверов для правила по умолчанию Таблица правил маршрутизации Shunt Rule: China, Iran, Russia_Block, Russia, PrivateIP и правило по умолчанию

Таблица правил читается сверху вниз, первое совпадение выигрывает. Встроенные наборы:

ПравилоЧто в него попадаетРазумное значение
Chinaкитайские домены и подсетиClose (Not use)
Iranиранский сегментClose (Not use)
Russia_Blockсайты, заблокированные в Россииваш сервер VPN
Russiaроссийские домены и IPDirect Connection
PrivateIPлокальные адреса 192.168.*, 10.*Direct Connection — обязательно
По умолчаниювесь остальной трафиксервер VPN или Direct Connection

Два рабочих пресета:

  • «Заблокированное — в туннель, остальное напрямую» (мягкий режим, рекомендуется): Russia_Block → нода VPN, Russia и PrivateIPDirect Connection, По умолчаниюDirect Connection.
  • «Всё зарубежное — в туннель»: Russia и PrivateIPDirect Connection, По умолчанию → нода VPN. Так работают YouTube и зарубежные сервисы, а российские сайты и банки видят ваш настоящий IP.

Свои домены добавляются на той же вкладке — можно завести отдельное правило и назначить ему любой сервер из подписки. Отсюда и берётся главное преимущество Passwall2: YouTube через Нидерланды, нейросети через Германию, торренты через отдельную ноду — одновременно.

Совет: PrivateIP всегда держите на Direct Connection. Иначе обращения к самому роутеру, NAS, принтеру и камерам уйдут в туннель — и локальная сеть развалится.

Опция Domain Strategy вверху вкладки определяет, как резолвятся домены: IPOnDemand (значение со скриншота) резолвит домен в IP сразу, если есть хоть одно правило по IP. Если маршрутизация ведёт себя странно — попробуйте AsIs, он работает только по именам доменов и даёт меньше сюрпризов.

Шаг 11. Проверяем результат

Порядок проверки — от роутера к клиенту, чтобы сразу понять, на каком уровне проблема:

service passwall2 status                 # служба жива
logread -e passwall | tail -30           # нет ошибок в логе
nft list ruleset | grep -c passwall      # правила на месте (число > 0)

Дальше — плитки Google Connection и GitHub Connection в самом Passwall2: они должны показывать миллисекунды, а не Touch Check.

И финальная проверка с обычного компьютера в сети: откройте 2ip.ru и посмотрите строку «Вы из». Если там страна вашего VPN-сервера — трафик действительно идёт через туннель.

Проверка внешнего IP на 2ip: определилась локация Нидерланды
Сервис определяет Нидерланды — тот самый узел, который выбран в Passwall2

Чек-лист «всё настроено правильно»:

  • Core: RUNNING на вкладке Basic Settings;
  • Google и GitHub Connection отвечают за разумное время;
  • 2ip показывает страну VPN-сервера;
  • заблокированный сайт открывается;
  • банки и госуслуги открываются напрямую (если настроен шунт);
  • локальные устройства — NAS, принтер, камеры — по-прежнему доступны.

Если что-то не работает

Core: NOT RUNNING. Ядро не стартовало. Смотрите logread -e passwall | tail -30. Частые причины: не выбран узел, битая ссылка в подписке, ядро не подходит по архитектуре.

Ноды загрузились, но интернета нет. Первым делом проверьте DNS: Basic Settings → DNS. Смените Remote DNS на 8.8.8.8 (Google) или 1.1.1.1, а Remote DNS Protocol — на UDP вместо DoH. Это лечит львиную долю случаев «поднялось, но не работает».

Вкладка DNS в Passwall2: Remote DNS Protocol UDP и Remote DNS 8.8.8.8
Смена протокола и адреса Remote DNS — первое, что стоит попробовать при «туннель есть, интернета нет»

Изменения в правилах не применяются. Внизу вкладки DNS есть кнопка Clear NFTSET — она сбрасывает накопленные наборы адресов. Нажмите её и перезапустите службу.

Сайты открываются через раз. Обычно виноват QUIC: браузер ходит по UDP/443 мимо ваших правил. Отключите QUIC в браузере (chrome://flagsExperimental QUIC protocol → Disabled) или заблокируйте UDP/443 на роутере.

Роутер тормозит, скорость просела. Xray шифрует трафик на CPU, аппаратного ускорения тут нет. Уменьшите объём трафика в туннеле (мягкий пресет вместо полного) — либо переходите на более мощный роутер.

Не хватает места. df -h /overlay. Ядро Xray — 35 МБ, базы GeoIP/Geosite — ещё около 30 МБ. Помогает extroot или сборка прошивки через Firmware Selector.

После обновления OpenWrt всё пропало. Так и должно быть: sysupgrade сносит все пакеты. После обновления прошивки Passwall2 и ядро ставятся заново — по этой же инструкции.

Совсем пропал доступ в интернет. Аварийный откат одной командой:

service passwall2 stop

Если и до роутера не достучаться — смотрите разбор что делать, когда нет доступа к интернету на OpenWrt.

Обновление и откат ядра

Ядро обновляется тем же способом, что и ставилось. Только перед заменой сохраните текущий бинарник:

cp /usr/bin/xray /root/xray.old        # страховка
service passwall2 stop
# копируем новый xray в /usr/bin/ (WinSCP или scp)
chmod +x /usr/bin/xray
/usr/bin/xray version
service passwall2 start

Откат, если новая версия не подошла:

service passwall2 stop
cp /root/xray.old /usr/bin/xray
chmod +x /usr/bin/xray
service passwall2 start

Полное удаление Passwall2 с возвратом обычного dnsmasq:

service passwall2 stop
/etc/init.d/passwall2 disable
apk del luci-app-passwall2
rm -f /usr/bin/xray
apk del dnsmasq-full && apk add dnsmasq
service dnsmasq restart
reboot

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

Обязательно ли ставить ядро Xray вручную? Нет. Если ваш VPN-сервис отдаёт обычные VLESS Reality-ссылки без экзотических параметров XHTTP, хватит того ядра, которое Passwall2 скачает кнопкой Check update на вкладке App Update. Ручная установка нужна ради параметров вроде xPaddingBytes и GET-режимов XHTTP, которые появляются только в свежих pre-release.

Чем Passwall2 лучше podkop? Passwall2 умеет держать много серверов из подписки одновременно и разводить трафик по правилам: разные домены — через разные страны. Podkop проще, легче и настраивается за десять минут, но работает с одним сервером. Для домашнего обхода блокировок podkop обычно достаточно.

Passwall2 запустится на роутере с 128 МБ RAM? Официально требуется 256 МБ. Для 128 МБ разработчики советуют старую ветку OpenWrt 22.03.3, но полноценной работы на такой конфигурации ждать не стоит — на слабом железе разумнее podkop.

Можно ли поставить Passwall2 рядом с podkop или Netshift? Нет. Они конфликтуют за перехват DNS и за правила nftables. Перед установкой удалите конкурирующее решение — команды есть в шаге 1.

Passwall2 бесплатный? Да, сам плагин и ядро Xray бесплатны и открыты. Платить нужно только за VPN-сервер или подписку, если у вас нет своего VPS.

Слетит ли Passwall2 после обновления прошивки? Да. sysupgrade удаляет все установленные пакеты, включая ядро в /usr/bin/xray. После обновления OpenWrt всё ставится заново.

Что выбрать в поле Node — конкретный сервер или Xray_shunt? Конкретный сервер — когда нужен полный туннель для всей сети. Xray_shunt: [rulenode] — когда часть трафика должна идти напрямую (банки, госуслуги, российские сервисы). На каждый день удобнее шунт.

Почему в логе подписки стоит number: 0? Passwall2 не смог разобрать список. Проверьте формат ссылки (с суффиксом /json и без него), доступность домена подписки с роутера и то, что подписка вообще активна. Отдельно проверить сервера можно в инструменте проверки серверов.

Видит ли провайдер, что я пользуюсь VPN? При VLESS Reality и транспорте XHTTP соединение выглядит как обычный HTTPS-трафик к разрешённому сайту. Провайдер видит факт соединения, но не его содержимое и не то, что это VPN.

Заключение

Passwall2 требует больше внимания, чем podkop, — зато взамен даёт то, чего у простых решений нет: подписки на десятки серверов, замеры задержек прямо в интерфейсе и маршрутизацию, где каждому правилу можно назначить свою страну. Ручная подкладка ядра Xray — единственная по-настоящему неочевидная часть, и она же самая важная: без свежего ядра новые параметры XHTTP просто не заработают.

Если по ходу выяснилось, что роутер не тянет, посмотрите в сторону podkop или Netshift — они делают то же самое проще и на куда более скромном железе. А если Passwall2 не стартует из-за совпадения подсетей с вышестоящим роутером — начните со смены локального IP.

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


  1. Требования к железу, ключ подписи и точные команды установки — на странице репозитория rage-ac.github.io. Релизы ядра — в разделе Releases проекта XTLS/Xray-core. Команды и имена пакетов между версиями меняются — сверяйтесь с первоисточником.