Все статьи
VPN приватность OPSEC

Свой VPN для iOS с автоматическим разделением трафика

Большинство людей пользуются коммерческими VPN и вручную переключают их, когда нужно зайти на российский сайт. Это неудобно и в итоге раздражает. В этой статье разберём как поднять собственный VPN и настроить автоматическое разделение трафика — российские ресурсы идут напрямую, всё остальное через VPN. Один раз настроил и забыл.

Инструкция написана под iOS + Shadowrocket. Принципы те же для Android и других платформ, но конкретные шаги будут отличаться.

Выбираем VPS

Нам нужен VPS за пределами России — это основа всей схемы. Подобрать подходящий вариант можно на агрегаторе vps.today .

Параметры VPS на агрегаторе

Минимальные параметры: 1 CPU, 1 GB RAM, 25 GB диск, 1 TB трафика. Этого более чем достаточно для личного VPN.

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

Перед покупкой стоит проверить провайдера на отзывы и устойчивость к цензуре. В этом помогает чат itdog — там публикуют реальные тесты, цены и опыт использования разных хостингов.

Проверка провайдера на отзывы

После регистрации и оплаты провайдер выдаст IP-адрес сервера, логин и пароль. Сохраните их — они понадобятся на следующем шаге. Хорошая новость: заходить на сервер вручную для настройки не нужно.

Разворачиваем AmneziaWG

Я выбрал AmneziaWG — разворачивается за несколько минут, работает стабильно и обфусцирует трафик так, что ТСПУ не могут его распознать и заблокировать.

Скачайте приложение AmneziaVPN на любое устройство.

В российском App Store приложение удалено. Смените регион аккаунта на любой зарубежный, например US, или заведите отдельный Apple ID.

Открываем приложение, переходим во вкладку с + и выбираем Self-Hosted VPN.

Главный экран AmneziaVPN

Вводим IP-адрес, логин и пароль от VPS. Нажимаем продолжить.

Подключение к своему серверу

Выбираем уровень защиты Высокий — это запустит AmneziaWG вместо обычного WireGuard. Настройка займёт 2–3 минуты и произойдёт полностью автоматически.

Получаем конфиг для подключения

Переходим во вкладку Поделиться, вводим имя клиента (например, iphone-main) — чтобы потом понимать, где чей конфиг. Меняем формат на нативный: он нужен для Shadowrocket, который умеет делать разделение трафика.

Экран получения конфига

Сохраните QR-код или скопируйте текст конфига — он понадобится на следующем шаге.

Настраиваем разделение трафика в Shadowrocket

В App Store есть приложение Shadowrocket . Оно платное, но это разовая покупка — функционала там с запасом на годы вперёд.

Открываем приложение. Если сохранили QR-код — нажимаем на иконку сканера в левом верхнем углу. Если скопировали текст — нажимаем вторую иконку над Local server (импорт из буфера обмена). Конфиг добавится автоматически.

Главный экран Shadowrocket

Настраиваем автоподключение

Заходим в Настройки и находим пункт On Demand. Выставляем галочки как на скриншоте — VPN будет включаться автоматически там, где нужно.

Настройки Shadowrocket

Настройки On Demand

Настраиваем правила разделения трафика

Переходим в раздел Config. Там уже есть дефолтный конфиг — нажимаем на иконку i рядом с ним.

Раздел Config

Находим раздел с правилами и заменяем всё содержимое на следующее:

[General]
include = None

[Rule]
GEOIP,RU,DIRECT
GEOIP,BY,DIRECT
DOMAIN-SUFFIX,рф,DIRECT
DOMAIN-SUFFIX,ru,DIRECT
FINAL,PROXY

[Host]
localhost = 127.0.0.1

Правила читаются сверху вниз. Трафик на домены .ru и .рф, а также IP-адреса из России и Беларуси пойдут напрямую. Всё остальное — через VPN.

Подключаемся

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

Подключение — шаг 1

Подключение — шаг 2

Готово. Трафик на .ru и .рф идёт напрямую, всё остальное — через VPN.

Настраиваем GeoIP базу

Правило GEOIP,RU,DIRECT работает по базе IP-адресов. Без актуальной базы оно не будет корректно определять российские IP. Переходим в настройки и находим нужный пункт.

Настройки GeoIP

Ввод ссылки на базу

Вставляем ссылку на базу:

https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb

После обновления в логах будет видна такая картина — ВКонтакте с доменом .com определяется как российский и идёт напрямую:

Логи Shadowrocket — VK идёт DIRECT

Что по итогу

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

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

Исключение: 2ГИС

На момент написания статьи замечено одно приложение, которое обходит разделение трафика — 2ГИС.

Поведение 2ГИС с разделением трафика

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

Технически с этим ничего не сделать. Единственное рабочее решение — два устройства: одно для российских сервисов, другое для зарубежных. Утешает то, что подобное поведение нарушает правила App Store и может привести к удалению приложения. Остальные компании на такой шаг пока не решаются.