MAATRIX / Блог / Xray/VLESS на iPhone: клиент Shadowrocket

Xray/VLESS на iPhone: клиент Shadowrocket

MAATRIX

На iPhone нет встроенного клиента для Xray/VLESS — Apple такие протоколы «из коробки» не понимает, а в российском App Store подходящих приложений почти не осталось: часть VPN-клиентов из каталога убрали. Shadowrocket — платное приложение, но именно поэтому одно из немногих, что развивается стабильно много лет: разработчик поддерживает актуальные версии Xray-core, VLESS, Reality и XTLS без задержек. Разберём, как его установить без региона RU, куда вставить конфиг с сервера и как настроить роутинг трафика по правилам.

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

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

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

Что такое Shadowrocket и почему он платный

Shadowrocket — iOS-приложение для проксирования и туннелирования трафика через системный VPN-фреймворк Apple (Network Extension). Формально это не «VPN» в смысле шифрованного канала до офиса, а прокси-клиент, который поднимает локальный туннель и заворачивает через него системный трафик — с точки зрения iOS это выглядит как обычное VPN-соединение с профилем в настройках.

Приложение поддерживает Shadowsocks, VMess, Trojan, VLESS (включая Reality и XTLS-Vision), Hysteria2 и ряд других протоколов, умеет работать с правилами маршрутизации, вести статистику трафика по приложениям и хранить несколько профилей одновременно. Разработчик — независимый программист, монетизирует продукт разовой покупкой в App Store (сумма в пределах нескольких долларов, точная цена зависит от региона магазина и меняется, ориентируйтесь на цену в карточке приложения на момент покупки).

Из российского App Store Shadowrocket убран, поэтому напрямую с российским Apple ID и региональным магазином его не купить и не обновить — нужен доступ к магазину другого региона, обычно американскому.

Установка: магазин США и региональные тонкости

Самый надёжный путь — Apple ID с регионом App Store «США». Два варианта:

  1. Завести отдельный Apple ID под США. При создании укажите регион США, страну проживания — тоже США (адрес можно взять любой валидный американский, это стандартная практика для таких магазинных Apple ID и не связано с оформлением платёжных данных). Способ оплаты при создании выбирайте «Нет» — так аккаунт создаётся без привязки карты.
  2. Переключить регион уже существующего Apple ID на США. Работает только если на аккаунте нет активных подписок и нулевой баланс App Store. Настройки → [ваше имя] → Медиа и покупки → Просмотреть учётную запись → Страна/регион → Сменить страну или регион.

Для покупки самого приложения понадобится баланс в магазине США — российские карты в американском App Store не принимаются. Практичный вариант — купить код пополнения App Store US (гифт-карту) у стороннего продавца таких кодов и погасить его в разделе «Погасить код» под аккаунтом с регионом США.

После установки приложения регион Apple ID можно вернуть обратно на Россию — Shadowrocket останется установленным и будет работать. Переключаться на регион США придётся снова только когда выйдет крупное обновление приложения, которое вы захотите поставить.

ШагГдеКомментарий
Смена/создание Apple ID с регионом USНастройки iPhoneБез активных подписок и без баланса на старом аккаунте
Погашение гифт-карты USApp Store → Погасить кодКод от стороннего продавца, номинал с запасом на стоимость приложения
Установка ShadowrocketApp Store (регион US)Поиск по названию, обычная установка
Возврат региона на RUНастройки iPhoneПриложение остаётся, работает без ограничений

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

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

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

Что нужно подготовить на сервере

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

С сервера нужна ссылка-конфиг вида:

vless://uuid@server-ip-или-domain:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=example.com&fp=chrome&pbk=publicKey&sid=shortId&type=tcp#my-server

Установочные скрипты Xray обычно выводят такую ссылку сразу после настройки, а некоторые ещё и рисуют QR-код прямо в терминале. Если ссылки нет под рукой, её несложно собрать вручную из значений /usr/local/etc/xray/config.json: UUID клиента, порт, flow (для XTLS-Vision — xtls-rprx-vision), тип security (reality или tls), для Reality — публичный ключ (pbk), short id (sid) и SNI (sni) из блока realitySettings.

Импорт конфига: по ссылке и по QR-коду

Проще всего — импорт по ссылке:

  1. Скопируйте vless://... ссылку целиком (из терминала, мессенджера или файла) в буфер обмена.
  2. Откройте Shadowrocket, нажмите «+» в правом верхнем углу.
  3. Внизу экрана появится всплывающая подсказка с адресом из буфера — нажмите на неё, конфиг импортируется автоматически со всеми параметрами.

Если подсказка не появилась, вставьте ссылку вручную в поле type/адрес на том же экране добавления сервера — Shadowrocket распознаёт схему vless:// и сам раскладывает её на поля (адрес, порт, UUID, flow, security, SNI, public key, short id).

QR-код — вариант для случаев, когда ссылку неудобно копировать (например, конфиг выведен на экран другого устройства или распечатан):

  1. На экране добавления сервера нажмите значок сканера QR (иконка камеры рядом с «+»).
  2. Наведите камеру на QR-код — если его вывел скрипт установки Xray в терминале или отдельная утилита генерации QR из ссылки.
  3. Конфиг импортируется тем же способом, что и по ссылке — Shadowrocket сам разбирает содержимое QR как vless://-строку.

После импорта профиль появится в общем списке серверов. Тапните по нему, чтобы сделать активным, затем включите большой переключатель VPN на главном экране. При первом подключении iOS покажет системный запрос «Shadowrocket хочет добавить конфигурации VPN» — это обязательно нужно разрешить (Face ID/пароль), иначе туннель не поднимется: так устроено разрешение на локальные VPN-профили в iOS.

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

По умолчанию у профиля есть режим работы: Global (весь трафик через сервер), Rule (по правилам — часть трафика напрямую, часть через тоннель) и Direct (тоннель фактически выключен, весь трафик в обход). Режим переключается на экране конфигурации профиля, поле Type/Mode.

Режим Rule — самый практичный для повседневной работы, потому что не гонит весь трафик, включая локальные и российские сервисы, через сервер. Правила настраиваются в разделе Rule / Scenario:

  • Rule Set — готовые подборки правил (GFWList-подобные списки, блоки для рекламы, региональные списки), можно подключить как ссылку на список, который Shadowrocket периодически обновляет.
  • Правила вручную — строятся по маскам: DOMAIN-SUFFIX,googleapis.com,PROXY, DOMAIN-SUFFIX,ru,DIRECT, IP-CIDR,192.168.0.0/16,DIRECT, GEOIP,RU,DIRECT, финальное правило FINAL,PROXY — трафик, не попавший ни под одно условие выше, отправляется через тоннель.
  • Порядок правил важен: они проверяются сверху вниз, и применяется первое совпавшее — общие правила (типа GEOIP,RU,DIRECT) стоит держать выше FINAL, но ниже узких исключений.

Практичная базовая схема: локальные и приватные IP-диапазоны — Direct, домены .ru и российские сервисы — Direct (либо через GEOIP,RU,DIRECT), всё остальное — Proxy через FINAL. Так тоннель нагружается только тем трафиком, которому это реально нужно.

Отдельная настройка — DNS. По умолчанию Shadowrocket может использовать системный DNS, что иногда приводит к утечке DNS-запросов мимо тоннеля. В настройках профиля есть поле DNS/Remote DNS — укажите там DNS-сервер (например, 1.1.1.1 или DoH-адрес), который будет резолвиться через прокси, а не напрямую через провайдера.

Если параллельно на телефоне уже настроен другой VPN-клиент или системный профиль VPN, оба туннеля могут конфликтовать — про это подробно в статье второй туннель на телефоне: конфликт VPN и как его решить.

Диагностика: конфиг не подключается

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

  • Статус сервиса Xray на сервере. systemctl status xray — сервис должен быть активен (active (running)). Если упал — смотрите journalctl -u xray -n 50 на предмет ошибок в конфиге.
  • Порт и файрвол сервера. Порт из ссылки-конфига обязан быть открыт: ufw status или iptables -L -n. Закрытый порт — самая частая причина «крутится и не подключается» без явной ошибки в клиенте.
  • Время на сервере. TLS и Reality крайне чувствительны к рассинхронизации часов — проверьте timedatectl на сервере; если время «уехало» больше чем на пару минут, синхронизируйте через chronyd/ntpd.
  • SNI и Public Key для Reality. Несовпадение sni в клиенте с serverNames/dest на сервере или неверный pbk — самая частая причина именно в этом режиме, ошибка при этом выглядит как обычный обрыв соединения, без явного текста про Reality.
  • Разрешение VPN-профиля. Если системный запрос на добавление VPN-конфигурации был случайно отклонён, переключатель в Shadowrocket будет включаться и сразу гаснуть — Настройки → Основные → VPN и управление устройством, профиль Shadowrocket должен там присутствовать.
  • Лог соединения в приложении. На вкладке журнала/лога Shadowrocket видно, на каком этапе рвётся соединение — connection refused обычно означает закрытый порт или не запущенный Xray, TLS handshake failed/таймаут — проблему с сертификатом, SNI или сетью до сервера.

Если с этого же сервера успешно подключаются другие устройства (например, ноутбук через клиенты v2rayN или NekoRay на Windows), а с iPhone нет — почти наверняка дело в самом импортированном конфиге на телефоне: построчно сверьте UUID, порт, flow и параметры security с тем, что реально прописано в config.json на сервере.

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

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

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

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

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

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

Можно ли пользоваться Shadowrocket без покупки, есть ли бесплатная версия?

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

Обязательно ли покупать именно в App Store США, есть другие варианты?

Shadowrocket доступен в ряде региональных магазинов, но не в российском — США просто самый предсказуемый и распространённый вариант с понятным способом купить гифт-карту.

Требуется ли джейлбрейк для установки?

Нет, Shadowrocket — обычное приложение из App Store, работает на любом iPhone с достаточной версией iOS без взлома системы.

Можно ли использовать один и тот же конфиг на iPhone и на компьютере одновременно?

Да, сервер технически не ограничивает число подключений с одним UUID, но для порядка и контроля нагрузки лучше заводить на сервере отдельного пользователя под каждое устройство.

Что делать, если после обновления iOS переключатель VPN пропал из Пункта управления?

Добавьте элемент управления VPN вручную: Настройки → Пункт управления → найдите «VPN» в списке доступных элементов и добавьте его — само приложение и профиль при этом не затрагиваются.

Как быстро проверить, что трафик действительно идёт через сервер?

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

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

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

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