iOS-приложение в подробностях
Это глубокое погружение: каждый экран URnetwork на iPhone и iPad, настройки с заводскими значениями по умолчанию и знание об устранении неполадок, которое обычно живёт в голове инженера поддержки. Короткий путь от установки до подключения — в начале работы на iOS; сетевая конструкция за всем этим — в обзоре.
Как устроено приложение
Один проект Xcode производит и iOS-, и macOS-приложение. На вашем устройстве оно работает как два процесса:
- Приложение (бандл
network.ur) — интерфейс, который вы видите. - Туннельное расширение (
network.ur.extension) — Network Extension (NEPacketTunnelProvider), которое запускает и опекает сам iOS. Ваш трафик движется через этот процесс, а не через приложение: он оборачивает то, что отправляет телефон, в шифрование («туннель») до того, как оно покинет устройство. Четыре вещи по конфигурации остаются снаружи, как у любой воспитанной iOS-VPN: ваша локальная сеть (принтеры, AirPlay, домашние устройства), пуш-уведомления Apple, операторские сервисы вроде звонков по Wi-Fi и трафик к вашим собственным Apple-устройствам рядом.
Двое общаются по локальному RPC устройства, поэтому после перезапуска приложение усыновляет живой туннель, а не сносит его и начинает заново. Из-за этого разделения VPN продолжает работать, когда вы смахиваете приложение, — и поэтому же iOS при первом запуске просит одобрить конфигурацию VPN: расширение — компонент под управлением системы. Это одобрение — стандартный шаг согласия Apple для любого VPN-приложения. Никакого другого контроля над телефоном оно не даёт и остаётся видимым — и отзываемым — в Настройки → Основные → VPN и управление устройством (Settings → General → VPN & Device Management).
Приложению нужна iOS 16.6 или новее, и всё открыто на github.com/urnetwork. Ни один независимый аудит не покрывает протокол и серверный код оператора — слой, где живут заявления о приватности. Две сторонние оценки 2025 года покрывают другие поверхности: тест на проникновение веб-приложения и API и оценка Leviathan Security Group MASA AL2 Android-приложения, которая пройдена. Ни одна не покрывает iOS-приложение. Модель угроз фиксирует обе и их рамки.
Четыре вкладки
Приложение — четыре вкладки: Подключение (Connect), Аккаунт (Account), Таблица лидеров (Leaderboard) и Поддержка (Support).
Подключение
Главный экран, сверху вниз:
- Глобус. Живая картина вашего сеанса. При подключении он показывает локации, из которых выходит ваш трафик: где вас видит интернет. Ваш клиент держит несколько провайдеров сразу, обычно от трёх до восьми, в двух окнах бок о бок (окно качества, которое предпочитает HTTPS, и окно скорости для остального), и закрепляет каждый сайт за одним. Картина множественная намеренно, при этом любой отдельный сайт по-прежнему видит один устойчивый адрес. Обзор объясняет окно провайдеров целиком.
- Кнопка подключения. Одно касание — подключиться или отключиться.
- Шторка. Складной лист под кнопкой с выбранной локацией, Опциями подключения (Connect options), живыми графиками трафика и переключателем Блокировать рекламу и трекеры (Block ads and trackers). Потяните вверх за полным содержимым; касание вкладки Подключение, когда вы уже на ней, складывает шторку обратно. Режима раздачи здесь нет. Он живёт в Аккаунт → Настройки.
Нажмите карточку локации, чтобы открыть лист Доступные провайдеры (Available providers). Он открывается на ваших собственных устройствах, «Лучшем доступном провайдере» (Best available provider) и странах с живым счётчиком провайдеров онлайн. Наберите название места в «Поиске провайдеров» (Search providers) — и в результатах вырастет раздел Города (Cities): до прицела на город добираются поиском, а не прокруткой. Локация числится в списке, только пока в ней онлайн устройство участника, и платформа выводит город из наблюдаемого подключения, а не доверяет собственному заявлению провайдера; адрес, похожий на дата-центр или VPN, понижается, а не принимается на веру. «Лучший доступный» выбирает провайдеров с наивысшей оценкой рядом с вами; конкретная локация делает так, что вы появляетесь там (ближние выходы обычно быстрее всего, потому что расстояние стоит задержки). Провайдеры — другие участники, раздающие свободную полосу. Ваш трафик доходит до них уже зашифрованным, потому что веб — это HTTPS ещё до входа в туннель, поэтому провайдер видит, куда идёт трафик, который он несёт, как видит интернет-провайдер, но не его содержимое и не ваш реальный адрес.
Ниже в шторке сидят четыре Опции подключения:
| Настройка | По умолчанию | Эффект | Главная цена |
|---|---|---|---|
| Режим соединения (Connection Mode) | Авто | Авто ведёт оба окна провайдеров и направляет каждый пакет в подходящее | Веб (Web) или Стриминг (Streaming) привязывают к одному окну |
| Фиксированный IP (Fixed IP) | Выкл | Сужает окно до одного провайдера, поэтому каждый сайт видит один устойчивый адрес | Отдаёт множественный выход |
| Строгая анонимизация (Strong Anonymization) | Вкл | Запрещает прямой путь клиент↔провайдер, поэтому провайдер никогда не видит ваш реальный IP | Медленнее прямого пути |
| Постквантовое шифрование (Post Quantum Encryption) | Вкл | Запечатывает сеанс сквозным шифрованием до провайдера, поэтому оператор несёт шифртекст | Пропускает провайдеров, с которыми нет запечатывания |
- Фиксированный IP выбирается вне режима Авто.
- Выключение Строгой анонимизации — это ваш явный выбор прямого режима: анонимизирующее звено выпадает, клиент говорит с провайдером напрямую, пропускная способность растёт, и этот провайдер теперь видит ваш реальный адрес. Умолчание защищает вашу личность; тратьте её на скорость только сознательно.
- Блокировать рекламу и трекеры, в той же шторке, выключен, пока вы его не включите, и фильтрует всё, что несёт туннель.
- Между двумя включёнными умолчаниями провайдер никогда не узнаёт, кто вы, а оператор никогда не читает, что вы отправляете. И то и другое верно без единой тронутой настройки, поэтому ни одна сторона не держит одновременно вашу личность и вашу активность.
Эти два переключателя и заводское умолчание — вся картина:
| Режим | Видит оператор | Видит провайдер | По умолчанию и доступность |
|---|---|---|---|
| Ретранслируемый запечатанный | ваш аккаунт и исходное подключение, на каких провайдерах вы сидите, и шифртекст с его таймингом и объёмом | назначения, которые он выводит, и идентификатор устройства/контракта, не ваш реальный IP | заводское умолчание: Постквантовое шифрование, включено в шторке подключения |
| Ретранслируемый стандартный | ваш аккаунт и исходное подключение, на каких провайдерах вы сидите, и назначения и байты пакетов внутри | назначения, которые он выводит, и идентификатор устройства/контракта, не ваш реальный IP | по явному выбору: выключите Постквантовое шифрование |
| Прямой | меньше участия в ретрансляции | ваш реальный IP и назначения, которые он выводит | по явному выбору: выключите Строгую анонимизацию |
Читайте первую строку как то, где вы находитесь по умолчанию. Пока Постквантовое шифрование включено, клиент работает в режиме «закрыто при сбое»: провайдера, с которым не удаётся запечатать сеанс, он пропускает, а не использует в открытую, так что несовпадение стоит вам этого провайдера, а не вашей конфиденциальности. На вторую строку вас переводит только выключение настройки. Ни одно приложение пока не показывает по подключению вердикта «запечатано или нет», так что о том, где вы, говорит настройка, а не сеанс. Ограничение: ничто не проверяет, что предложенные вам провайдеры независимы друг от друга и от оператора, а оператор может сам запускать провайдеров. Модель угроз прорабатывает эти строки против именованных противников, включая враждебного оператора, и прямо говорит, где каждая из них отказывает.
Собственный DNS
Под деталями вкладки Подключение живёт полная панель управления DNS. DNS — телефонная книга интернета, справка, которая превращает имя вроде ur.io в сетевой адрес, и тот, кто отвечает на эти запросы (резолвер), видит имя каждого сайта, который вы посещаете. Умолчание — самое безопасное устройство: зашифрованный DNS over HTTPS, резолвящийся через туннель. Всё остальное — размен, который можно сделать:
- DNS over HTTPS (удалённый). DoH, резолвящийся на дальней стороне туннеля. Умолчание и самый приватный вариант: резолвер видит адрес провайдера, а не ваш.
- DNS over HTTPS (локальный). DoH, резолвящийся прямо с вашего устройства.
- Незашифрованный DNS (удалённый / локальный). Классический UDP DNS, через туннель или прямо с устройства, для сетей и резолверов, которым это нужно.
- Локальный резервный DNS (Local DNS fallback). Пускает локальный резолвер наперегонки, пока туннель стартует, чтобы разрешение имён не замирало во время рукопожатия. Когда он выключен, DNS резолвится только через туннель.
Списки резолверов можно править самостоятельно (URL удалённого и локального DoH, удалённые и локальные DNS-серверы, IPv4 и IPv6). Сверху два удобства:
- Рекомендации по странам. Известно, что самые сильные настройки в некоторых странах не работают. Когда вы подключаетесь туда, где есть известная рекомендация, экран говорит об этом и предлагает «Использовать рекомендуемые настройки» (Use recommended settings) в одно касание — и возврат к самым безопасным умолчаниям тоже в одно.
- Предлагаемые серверы. Курируемый список удалённых DNS-серверов, где предложенные для вашей подключённой страны отмечены её цветом. Включение одного добавляет его в ваш список удалённых резолверов.
Правила разделения
Правила разделения позволяют вести конкретный трафик мимо туннеля или закреплять его на месте, на уровне доменов и IP:
- Пока вы подключены, экран показывает живую маршрутную активность. Нажмите домен, чтобы вести его локально (мимо туннеля — тогда этот сайт видит ваш реальный адрес), или удержите его на одном провайдере, чтобы сайт дольше видел один стабильный адрес вместо вашего обычного множественного выхода. Полезно для банков и логинов, которые оспаривают любую смену адреса.
- Правила применяются ко всему связанному сетевому кластеру вокруг домена, поэтому родственные хосты и CDN-трафик ловятся вместе, а не протекают по одному поддомену за раз.
- Правила сохраняются и в любой момент убираются с того же экрана.
Ограничение: раздельного туннелирования по приложениям на iOS нет (оно есть на Android и Windows). iOS не даёт VPN-приложениям поддерживаемого способа включать или исключать трафик по приложениям, поэтому на iPhone и iPad правила разделения работают с доменами и IP, а не с приложениями.
Режим раздачи
Раздача свободной полосы — селектор Режим раздачи (Provide mode) на четыре положения в Аккаунт → Настройки → Подключения, установленный в Никогда (Never), пока вы его не смените:
| Режим | Что несёт |
|---|---|
| Никогда | Ничего. Умолчание. |
| Авто | Публичный трафик, пока вы сами подключены; только ваши собственные устройства, когда нет |
| Всегда | Публичный трафик, подключены вы или нет |
| Сеть | Только устройства вашей собственной сети, без оплаты. Самая узкая раздача, какую реализует приложение |
Несколько базовых правил. Раздача работает только по Wi-Fi, пока вы не переключите Разрешить раздачу по сотовой сети (Allow providing on cellular network) в том же разделе, поэтому она никогда не трогает ваш тарифный план исподтишка. Она работает внутри туннельного процесса, поэтому продолжается, пока телефон лежит без дела. Трафик, который вы несёте, — чужие зашифрованные сеансы: вы не можете его прочитать, а он не может тронуть ваше устройство. Контроль злоупотреблений работает на вашем устройстве на выходе, там, где трафик уходит в интернет: BitTorrent и известные атакующие шаблоны отбрасываются там. Отбрасывание не записывает ничего — ни назначения, ни домена, ни содержимого, — хотя совпадение открытого BitTorrent ещё и шлёт оператору флаг с идентификатором устройства и логическим признаком, не больше. Публичный трафик, который вы несёте, учитывается по подписанным контрактам, а провайдеры участвуют в протоколе UR. ur.xyz документирует, как работают вознаграждения.
Аккаунт
Здесь живут ваша идентичность и тариф:
- Тариф. Бесплатный или Pro, остаток баланса, путь к апгрейду и накопительный счётчик того, что ваше подключение перенесло для сети.
- Активировать код баланса (Redeem Balance Code). Одноразовая выдача данных, подписка не нужна.
- Профиль (Profile), Настройки (Settings), Кошелёк (Wallet). Настройки — самый глубокий раздел: сид-фраза, способы входа, имя устройства, Подключения (режим раздачи, разрешение сотовой сети, kill switch (аварийный стоп), Заблокированные локации (Blocked locations) — страны, через которые вы никогда не хотите выходить), уведомления, удаление аккаунта и ссылка «Использует протокол UR» на ur.xyz о том, как вознаграждаются провайдеры.
- Проверить мой IP (Check my IP). Открывает ur.io/ip — способ подтвердить извне приложения, что ваш трафик действительно выходит где-то ещё.
- Постквантовая идентичность (Post Quantum Identity). Панель ниже — и дорога к идентичностям провайдеров, с которыми вы соединены.
Панель постквантовой идентичности
Панель внизу Аккаунта показывает идентичность вашего устройства как идентикон (картинку, выведенную из ключа, — её легче окинуть глазом, чем шестнадцатеричные цифры) с хешем ключа и идентификатором клиента под ней (каждый копируется касанием), лист «Поделиться» и колоду пиров, с которыми вы соединены, открывающую полный список. Панель сама называет своё назначение: если ключ пира когда-нибудь выглядит иначе, чем сохранённый локально, оператору посередине нельзя доверять. Это делает слепоту оператора проверяемой.
Шифрование, которое она называет, — переключатель Постквантовое шифрование в шторке подключения, включён по умолчанию, поэтому ваш клиент запечатывает трафик напрямую до провайдера с первого же подключения. Сеанс — взаимно аутентифицированный TLS 1.3 с ключами X25519MLKEM768 (классическая кривая, гибридизированная с ML-KEM от NIST), поэтому оператор ретранслирует байты, которые не может прочитать. Отвечающая сторона оппортунистична: каждая текущая сборка провайдера её включает, поэтому один провайдер одинаково обслуживает и запечатанных, и незапечатанных клиентов. Ваша сторона — нет. Пока переключатель включён, клиент работает в режиме «закрыто при сбое», и провайдера, с которым не удаётся запечатать сеанс, он пропускает, а не использует в открытую. Ни одно приложение пока не показывает по подключению вердикта «запечатано или нет». Ключи идентичности остаются Ed25519.
Таблица лидеров
Рейтинги лучших провайдеров по перенесённым данным. Если вы раздаёте, можете появиться здесь — публично или приватно, по вашему выбору.
Поддержка
Называется «Свяжитесь с нами» (Get in touch): поле отзыва, звёздная оценка, необязательный переключатель Приложить логи к отзыву (Attach logs to feedback) и приглашение в Discord для живой помощи. Тарифов здесь нет; апгрейд живёт на вкладке Аккаунт.
Siri и Быстрые команды
Приложение регистрирует два App Intents: Подключить URnetwork VPN (Connect URnetwork VPN) и Отключить URnetwork VPN (Disconnect URnetwork VPN). Они появляются в приложении «Быстрые команды» (Shortcuts), работают голосом («Привет, Siri, подключи URnetwork») и встраиваются в автоматизации — например, подключаться, когда вы покидаете домашний Wi-Fi.
Старт без почты и фраза, которая его хранит
Создать мгновенный аккаунт (Create Instant Account) на экране входа даёт настоящую, постоянную сеть в одно касание. Без почты, без телефона, без пароля — как говорит сам экран. Охраняет её вместо этого сид-фраза: список слов, который платформа генерирует и показывает вам ровно один раз, на экране сразу после создания, а дальше держит только хешированные формы. Сохраните её там и тогда. Это единственная дорога назад с устройства, которое ещё не в системе. Пока такое устройство у вас есть, Настройки → Сид-фраза чеканит свежую фразу и отправляет старую в отставку. С сохранённой фразой аккаунт переживает переустановку или новый iPhone с нетронутыми тарифом и историей — чего идентичность, запертая в устройстве, не умеет никогда. Ничего второсортного в этом нет: Настройки → Способы входа (Sign-In Methods) привязывают почту, телефон, вход через Apple или Google или кошелёк к той же самой сети, сохраняя ваш баланс данных и историю. Анонимность — в аккаунте, а не в платеже: подписка, купленная в приложении, привязана к вашему аккаунту Apple, код баланса — ни к кому.
Устранение неполадок
Одобрение конфигурации VPN
Первое подключение просит добавить конфигурацию VPN. Если вы отказались, туннель не сможет стартовать никогда. Одобрите при следующей попытке подключения или проверьте Настройки → Основные → VPN и управление устройством, где конфигурация URnetwork должна быть в списке.
Несколько профилей VPN и как приложение ими управляет
За переустановки и обновления iOS может накопить больше одного профиля VPN URnetwork. Приложение этого ждёт: при подключении оно перечисляет все профили, сбрасывает и повторяет любой, который не стартует, затем переходит к следующему. Если туннель уже работает, оно усыновляет его по RPC устройства, а не перезапускает. Сломанные профили сбрасываются или удаляются, с потолком на удаления, чтобы уборка не могла разогнаться, и каждая операция с профилем ограничена дедлайном, чтобы заклинивший системный демон не подвесил приложение. Всё это автоматически. Описано здесь только затем, чтобы список профилей в Настройках имел смысл, когда вы на него посмотрите.
«Не удалось загрузить профили VPN» (ошибка 12)
Если подключение падает с ошибкой «Не удалось загрузить профили VPN» (Failed to load VPN profiles, код ошибки 12), системное хранилище настроек VPN отказывается перечислять профили — состояние, которое приложение не может починить изнутри. Чините руками:
- Откройте Настройки → Основные → VPN и управление устройством.
- Удалите конфигурацию (или конфигурации) VPN URnetwork.
- Вернитесь в приложение и подключитесь. Вас попросят одобрить свежую конфигурацию, и туннель стартует начисто.
Как здесь работает kill switch
Приложение поставляет переключатель Kill switch в Аккаунт → Настройки → Подключения — тот же SDK-контрол, что у каждого приложения URnetwork, выключенный, пока вы его не включите. Со включённым клиент отказывается откатываться на ваш локальный маршрут, поэтому трафик останавливается, а не утекает вне туннеля. Чего iOS ему не даёт — так это принуждения на уровне ОС. Приложение не выставляет includeAllNetworks, поэтому если туннельный процесс неожиданно умирает, iOS восстанавливает обычную сеть, а не блокирует трафик. Опека, повторы и восстановление профилей держат туннель здоровым, но приложение не просит ОС жёстко падать в закрытое состояние. Если ваша модель угроз требует гарантированно закрытой при сбое сети, планируйте с учётом этого.
Чтение логов туннеля
Туннельное расширение пишет в единый системный журнал, а не в файлы. Чтобы смотреть:
- Подключите устройство к Mac и откройте Console.app.
- Выберите устройство и в меню «Действие» включите Включить информационные сообщения (Include Info Messages) и Включить отладочные сообщения (Include Debug Messages). Интересные строки — на этих уровнях.
- Отфильтруйте по подсистеме
network.ur.extensionили ищите «URnetwork».
Сон и поведение в фоне
Туннель сконфигурирован с выключенным disconnectOnSleep: VPN остаётся поднятой через сон устройства, а не пережимает рукопожатие при каждой блокировке экрана. С двухпроцессной конструкцией она переживает и смахивание приложения. Отключение — то, что вы делаете кнопкой, Siri или удалением профиля.
Куда дальше
- Начало работы на iOS — короткий путь.
- Тур по macOS — тот же движок в форме Mac.
- FAQ и обзор — о самой сети.