Windows-приложение в подробностях
Это глубокое погружение: каждая крупная поверхность Windows-приложения, чем она управляет, её умолчания и как чинить, когда что-то ломается. Предполагается, что вы уже установили приложение и подключились. Если нет, начните с начала работы. Как работает сеть за приложением — в обзоре.
Windows-клиент — это две программы с разными привилегиями, драйвер ядра для раздельного туннелирования по приложениям и UI, выровненный с macOS-приложением. Всё это открыто на github.com/urnetwork/windows.
Настройки одним взглядом
Умолчания защищают вас без настройки. Каждый контрол ниже живёт в шторке подключения, кроме правил разделения по приложениям в Настройках.
| Настройка | По умолчанию | Эффект | Главная цена |
|---|---|---|---|
| Режим соединения (Connection mode) | Авто | выбирает окна провайдеров; Авто ведёт качество и скорость вместе | Веб (Web) или Стриминг (Streaming) сужают до одного окна |
| Строгая анонимизация (Strong Anonymization) | Вкл | скрывает ваш исходный IP от провайдера | больше задержки |
| Постквантовое шифрование (Post Quantum Encryption) | Вкл | шифрует от приложения до провайдера | пропускает провайдеров, с которыми не запечатать сеанс |
| Kill switch (аварийный стоп) | Выкл | останавливает локальный откат, когда туннель лежит | нет трафика, пока провайдеры отказывают |
| Фиксированный IP (Fixed IP) | Выкл | один провайдер, один адрес выхода | нет замены при сбое; неактивен в Авто |
| Блокировать рекламу и трекеры (Block ads and trackers) | Выкл | фильтрует трафик рекламы и трекеров | фильтрация может ломать некоторые сайты |
| Собственный DNS (Custom DNS) | зашифрованный DoH через туннель | DNS остаётся зашифрованным и внутри туннеля | ослабить его — и есть размен |
| Режим раздачи (Provide mode) | Никогда (Never) | раздаёт свободную полосу как выход для других | чужой трафик выходит с вашего IP |
| Правила разделения по приложениям (App split rules) | пусто | перечисленные приложения обходят туннель | их трафик не защищён |
| Правила разделения (домен/IP) | пусто | перечисленные назначения используют ваше локальное подключение | этот трафик не защищён |
Оговорки к таблице:
- Выключить Строгую анонимизацию — это прямой режим: клиент говорит с провайдером напрямую и ускоряется, и этот провайдер тогда видит ваш реальный адрес. Умолчание защищает вашу личность. Тратьте её сознательно.
- Настройки-переключатели сохраняются между режимами соединения. Фиксированный IP неактивен, пока вы не выберете Веб или Стриминг.
- Kill switch решает и судьбу пакета, который отбрасывает фильтр безопасности (см. режим раздачи): включён — блокируется напрочь, выключен — уходит вашим обычным маршрутом.
- Удаления аккаунта на Windows нет. Делайте это в веб-приложении, которое управляет тем же аккаунтом.
Два процесса, один туннель
Приложение намеренно разделено на две программы:
- URnetwork.exe. Трей-приложение на WinUI 3, с которым вы взаимодействуете. Работает без привилегий, в вашей пользовательской сессии: всплывающая панель из системного трея плюс полное окно для подключения, аккаунта, кошелька, таблицы лидеров, поддержки и настроек.
- urnetworkd. Служба Windows от имени LocalSystem — самой привилегированной встроенной учётной записи Windows: сила, нужная, чтобы создавать сетевые адаптеры и ставить маршруты, которой приложение, по которому вы кликаете, не получает никогда. Она встраивает URnetwork SDK, владеет виртуальным адаптером wintun, качает пакеты, применяет маршруты, DNS и MTU и держит свой управляющий трафик вне туннеля.
Они говорят по двум каналам, каждый со своей работой:
- RPC устройства.
DeviceRemoteприложения ведётDeviceLocalслужбы по собственному RPC SDK: взаимно аутентифицированный TLS-WebSocket на loopback. Оба конца доказывают идентичность сертификатами, и соединение никогда не покидает вашу машину, поэтому другая локальная программа не может просто подключиться и командовать службой. Всё, что вы делаете в UI, едет по этому каналу: подключение, выбор локации, переключение раздачи. - Именованный канал (
\\.\pipe\urnetwork.control). Несёт только жизненный цикл и конфигурацию: запуск и остановку туннеля, применение правил раздельного туннеля, выход из аккаунта. Он зеркалит то, как macOS-приложение говорит со своим сетевым расширением, поэтому две кодовые базы держатся вровень.
Зачем разделение: VPN-туннелю нужны привилегии, а UI не должен иметь их никогда. Почти каждая Windows-VPN — две программы именно поэтому. Вы одобряете один запрос UAC, при установке, когда регистрируется служба. Повседневная работа прав администратора не просит никогда.
Это же значит, что ваша защита не зависит от открытого окна. Закройте окно — оно спрячется в трей. Выйдите из меню трея — туннель всё ещё поднят, потому что им владеет служба. Опускают его только Отключить (Disconnect), выход из аккаунта или остановка службы.
Окно
Навигация: Подключение, Аккаунт, Кошелёк, Таблица лидеров, Поддержка, Настройки (Connect, Account, Wallet, Leaderboard, Support, Settings).
Подключение — глобус и шторка под ним. В шторке живёт сеанс:
- Выбранная локация и пиры. Через что вы подключены и сколько провайдеров сейчас несут ваш трафик. Кликните счётчик пиров — откроется лист подключённых провайдеров: глобус над строками по одному провайдеру, с его идентификатором клиента, городом/регионом/страной, координатами и тем, как давно он в вашем окне, плюс удаление на месте.
- Опции подключения (Connect options). Режим соединения (Авто, Веб или Стриминг: насколько агрессивно клиент меняет число провайдеров на пропускную способность) и четыре переключателя из таблицы выше: Фиксированный IP, Строгая анонимизация, Постквантовое шифрование и kill switch.
- Карточки Статистика клиента (Client statistics) и Локальная статистика (Local statistics), каждая открывает лист деталей: живые контракты с одной стороны, правила разделения и активность заблокированного трафика с другой.
- Собственный DNS. Карточка статуса над полным редактором резолверов (ниже).
- Блокировать рекламу и трекеры. Один переключатель.
- Тариф и использование. Ваш уровень, полоса использовано/ожидает/доступно, дневной лимит, рефералы, Получить UR Pro (Get UR Pro) и активация кода баланса.
Аккаунт несёт тариф и использование, активированные коды баланса, имя вашей сети и рефералов. Кошелёк покрывает ваш тариф и путь апгрейда и кошельковые настройки участия в протоколе UR (ur.xyz). Кошельки Bittensor можно привязать, но они записываются только на будущее, и приложение говорит об этом там, где вы ожидаете. Таблица лидеров ранжирует сети провайдеров. Поддержка отправляет отзыв и выходит на feedback.ur.io. Настройки держат правила разделения по приложениям и выход из аккаунта.
Одна оговорка на входе: экран входа всё ещё предлагает Попробовать гостевой режим (Try Guest Mode). Он создаёт обычный, постоянный аккаунт, но Windows-приложение выбрасывает сид-фразу восстановления, которую возвращает сервер, а входа по сид-фразе здесь нет. Добавьте к этому аккаунту почту или кошелёк, прежде чем на него полагаться.
Трей
Классическое поведение трея Win32, потому что у WinUI нет собственного API трея:
- Левый клик открывает окно рядом со значком трея, в стиле всплывающей панели.
- Правый клик даёт меню с подключением/отключением, показом окна и выходом.
- Четыре состояния значка зеркалят матрицу строки меню macOS (подключено или нет, раздаёте или нет), каждое в светлой и тёмной отрисовке, переключаемой под тему панели задач.
Выбор провайдеров и что он означает
Выбор локации — собственная группировка SDK: сначала подключённые пиры сети, затем лучший доступный, затем страны с живыми счётчиками провайдеров. Наберите запрос в поиске — и результаты пересоберутся в лучшие совпадения плюс регионы, города и устройства. Прицел — на уровне города; до города добираются поиском, а не прокруткой.
За каждым ретранслируемым сеансом стоят две защиты, и ни одна не требует тронутой настройки. Провайдер, выводящий ваш трафик, никогда не узнаёт, кто вы, потому что между вами стоит оператор. Оператор не может прочитать пакеты, которые пересылает, потому что Постквантовое шифрование по умолчанию запечатывает сеанс сквозным шифрованием до провайдера. Вместе — ни одна сторона не держит одновременно вашу личность и вашу активность. Полный путь, включая звено экстендера, которое несёт ваш зашифрованный сеанс к оператору, — в обзоре.
| Режим | Видит оператор | Видит провайдер | По умолчанию и доступность |
|---|---|---|---|
| Ретранслируемый запечатанный | аккаунт и исходное подключение, связь с провайдерами, шифртекст с таймингом и объёмом | назначения, которые он выводит, идентификатор устройства/контракта, не ваш реальный IP | заводское умолчание: Постквантовое шифрование включено в шторке |
| Ретранслируемый стандартный | аккаунт и исходное подключение, связь с провайдерами, внутренние назначения и байты пакетов | назначения, которые он выводит, идентификатор устройства/контракта, не ваш реальный IP | по явному выбору: выключите Постквантовое шифрование |
| Прямой | меньше участия в ретрансляции | ваш реальный IP и назначения, которые он выводит | по явному выбору: выключите Строгую анонимизацию |
Модель угроз прорабатывает эти строки против именованных противников и прямо говорит, где каждая из них отказывает.
В Авто два окна провайдеров работают бок о бок, поэтому трафик обычно выходит через 3–8 провайдеров сразу, с каждым сайтом, закреплённым за одним. Отдельный провайдер только и видит, что срез вашего сеанса. Веб и Стриминг ведут по одному окну, уже. Фиксированный IP схлопывает всё до одного провайдера и одного адреса выхода.
Раздельное туннелирование по приложениям и драйвер
«Пусть это приложение обходит VPN» — чтобы игра держала свой минимальный пинг, а враждебное к VPN банковское приложение оставалось на вашем обычном подключении, — нельзя сделать хорошо из пользовательского пространства Windows. Решение о перенаправлении должно происходить там, где создаётся сокет, внутри сетевого стека. Поэтому приложение поставляет SplitTunnel.sys, callout-драйвер Windows Filtering Platform (WFP):
- Чистая комната. Реализован с нуля по документации Microsoft и публичным спецификациям, а не выведен из драйвера другого вендора.
- Лицензия MPL-2.0, разрабатывается в том же открытом репозитории, что и приложение.
- По процессам, никогда по назначениям. Драйвер регистрирует ровно один callout, на слое bind-redirect Windows. Когда любой процесс открывает сокет, драйвер сравнивает путь исполняемого файла этого процесса с вашим списком исключений и при совпадении переписывает локальный адрес сокета на физический интерфейс, поэтому поток уходит через ваше обычное подключение. Удалённый адрес он не читает вовсе. Служба освобождает собственный трафик по идентификатору процесса.
- Дочерние процессы наследуют. Вспомогательные процессы лаунчера следуют за приложением, которое вы исключили.
- Отказывает в открытую, никогда в чёрную дыру. Если физический интерфейс не задан, перенаправление становится инертным, а не отбрасывает трафик.
Список управляется в Настройки → правила разделения по приложениям (Settings → app split rules). Три ограничения. Сокеты, которые процесс уже держал открытыми, сохраняют свой путь до переподключения. DNS-запросы исключённого приложения всё равно идут через общий сервис резолвера Windows, поэтому могут следовать за туннелем, даже когда само приложение — нет. И драйвер — опция сборки: MSI, упакованный без него, устанавливает работающий туннель без правил по приложениям.
Отдельно лист правил разделения в шторке подключения делает правила уровня доменов и IP через сам туннель — та же поверхность, что у приложений Apple и Linux. Двое сочетаются: драйвер решает по приложению, правила решают по назначению.
Как служба держится вне собственного туннеля
У туннельного процесса есть проблема бутстрапа: его собственный трафик к платформе не должен идти через туннель, который он создаёт, иначе первый же пакет зацикливается навсегда. Служба решает это на уровне сокетов. SDK открывает хук привязки выхода, и служба пришпиливает свои управляющие и ретрансляционные сокеты к физическому интерфейсу, под присмотром монитора выхода, который пересчитывает правильный интерфейс при каждой смене сети (Wi-Fi на Ethernet, адаптеры появляются и исчезают).
Маршруты и DNS
Когда туннель поднимается, служба не удаляет ваш маршрут по умолчанию. Она его перебивает: всё пространство IPv4, кроме приватных диапазонов LAN (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), устанавливается набором более специфичных маршрутов через туннельный адаптер. Они выигрывают у вашего существующего умолчания, не трогая его, снос — это просто их удаление, а принтер и NAS продолжают работать локально. Туннельный адаптер получает адрес и MTU 1440 от SDK, и на этом адаптере выставляются резолверы сети.
Три ограничения, за которые приложение можно держать в ответе:
- DNS ставится на адаптер, и Windows резолвит по адаптерам. Осмысленная защита здесь — собственные DNS-настройки приложения (лист Собственный DNS, чьё умолчание — зашифрованный DNS-over-HTTPS, резолвящийся через туннель). Если у вас необычная схема резолверов, проверьте, куда действительно идут ваши запросы.
- Туннель несёт IPv4. IPv6 сегодня через него не маршрутизируется, поэтому в сети с включённым IPv6 сайт, умеющий v6, всё ещё может увидеть ваш реальный адрес. Если всё должно выходить через провайдера, отключите IPv6 на подключении.
- Закрытие при сбое — переключатель, а не допущение. Оставьте kill switch выключенным — и остановленный туннель означает, что Windows откатывается на ваше обычное подключение. Включите — и трафик вместо этого останавливается. Это перевёрнутый примитив SDK
SetRouteLocal, тот же, что привязывает каждое приложение URnetwork, и поставляется он выключенным.
Собственный DNS
Та же кроссплатформенная панель резолверов, что у приложений Apple и Linux. Умолчание — самый строгий вариант: зашифрованный DNS over HTTPS, резолвящийся через туннель. Можно осознанно разменять: DoH или незашифрованный, резолвящийся удалённо или локально, с редактируемыми списками серверов, переключателем локального резервного DNS, который пускает локальный резолвер наперегонки на старте туннеля, чтобы запросы не замирали, и одним действием возврата к безопасным умолчаниям.
Режим раздачи
Раздача по умолчанию выключена и живёт в шторке подключения: Авто, Всегда, Сеть (только устройства вашего собственного аккаунта) или Никогда (Auto, Always, Network, Never). Провайдеры участвуют в протоколе UR; ur.xyz документирует, как работают вознаграждения.
Когда вы раздаёте, вас защищает открытый слой ip_security движка connect. Он инспектирует трафик на вашем собственном выходе и отбрасывает трафик класса DMCA (сигнатуры BitTorrent и файлообмена с отслеживанием состояния, отбрасывание непрозрачных протоколов) и класса CFAA (шаблоны атак и вторжений) до того, как он покинет ваше подключение. Совпадение — отброшенный пакет, без записи назначения, домена и содержимого. Сигнатура открытого BitTorrent на трафике, который вы несёте для кого-то другого, дополнительно шлёт оператору флаг злоупотребления с идентификатором устройства пира и логическим признаком, больше ничем, и обработчика для него оператор сегодня не поставляет. Тот же фильтр работает на вашем собственном отправном пути независимо от того, раздаёте ли вы, и ваш собственный трафик не докладывается никогда. Запечатывание фильтр не обходит, потому что он работает там, где трафик выходит. Обзор покрывает слой целиком.
Что на самом деле делает Постквантовое шифрование
Ваш клиент запечатывает трафик сквозным шифрованием до провайдера по сеансу, согласованному с X25519MLKEM768 (гибрид классики плюс ML-KEM). Это запечатанное звено и делает средний узел слепым: оператор несёт байты, которые не может прочитать. Включено по умолчанию и отказывает в закрытую: пока оно включено, клиент не отправляет и не принимает данные приложения в открытом виде, поэтому провайдер, с которым не удаётся установить запечатанный сеанс, пропускается, а не используется без печати. Каждая текущая сборка провайдера включает отвечающую сторону, так что на практике запечатывание автоматическое. Цена — доступность, а не конфиденциальность: вы можете потерять провайдера, но не своё шифрование, и тихого понижения нет. Выключите настройку — и трафик снова сможет пойти по стандартному пути TLS-к-платформе. Подписи идентичности остаются Ed25519, шифр — AES-256-GCM. «Постквантовое» означает этот обмен ключами, не шире.
Ограничение: у Windows-приложения нет панели инспекции идентичности. Нет отпечатка ключа для сравнения по другому каналу и нет вердикта по подключению, запечатался ли этот сеанс. Ближайшая поверхность — лист подключённых провайдеров.
Подписи и обновления
- Windows 10 21H2 или новее и Windows 11, x64 и ARM64, MSI на машину со страницы релизов. ARM64 — нативная сборка, не эмуляция.
- Приложение, служба и установщик подписаны Authenticode.
- Драйверу нужно больше: EV-сертификат плюс аттестационная подпись Microsoft. Windows загружает только драйверы с аттестационной подписью, так что это ворота загрузки, а не церемония.
- Драйвер едет внутри MSI. Ничего не подтягивается на лету; что содержит установщик, то и работает. Закреплённые сторонние зависимости (wintun) проверяются по хешу и подписанту источника перед упаковкой.
- Обновления — работа службы, не Магазина. Microsoft Store не раскатывает обновления для листингов EXE/MSI, а пакет MSIX (тот вид, который Магазин обновляет сам) не может чисто нести драйвер ядра. Поэтому путь обновления идёт через
urnetworkd: скачать, проверить подпись, подменить бинарники. Ни одного запроса UAC на обновление, и исправления безопасности не ждут ревью магазина. Windows охраняет и этот паттерн: бинарник службы можно заменить, только когда старый и новый подписаны одним издателем.
Устранение неполадок
Приложение говорит, что не может достучаться до службы
Туннель живёт в urnetworkd. Проверьте в Службах (Services), что она работает (или sc query urnetworkd); она зарегистрирована стартовать автоматически и дважды перезапускать себя при сбое. Если она остановлена и не стартует, переустановите MSI — он перерегистрирует службу.
Подключено, но у конкретного приложения нет интернета
Проверьте Настройки → правила разделения по приложениям. Приложение из списка исключений обходит туннель по замыслу, и если вы исключили что-то, что затем не смогло достучаться до сервиса по вашему обычному подключению, — это правило работает. Изменения вступают в силу на следующем соединении этого приложения, потому что уже открытые сокеты сохраняют свой путь, — перезапустите приложение.
Раздельное туннелирование по приложениям недоступно
Драйвер — необязательный компонент установщика. Перезапустите MSI и убедитесь, что компонент раздельного туннелирования выбран. Драйверам ядра к тому же нужна сборка с аттестационной подписью; самособранный драйвер не загрузится на машине, которая не в режиме тестовой подписи.
Сайты всё ещё видят мой реальный адрес
Почти всегда IPv6. Туннель сегодня несёт IPv4; отключите IPv6 на сетевом адаптере и проверьте снова. Вторая по вероятности причина — DNS-путь на другом адаптере, который умолчание листа Собственный DNS (DoH через туннель) спроектировано закрывать.
Трафик замирает после смены сети
Переезд между Wi-Fi и Ethernet меняет интерфейс, к которому служба должна пришпиливать собственные сокеты. Она за этим следит и пересчитывает, но если сеанс заклинило, отключитесь и подключитесь снова, чтобы перестроиться начисто.
При выходе ничего не происходит
Так и задумано: выход из трей-приложения оставляет туннель работать в службе. Используйте Отключить.
Остальное
Обзор объясняет сеть из конца в конец: провайдеры, контракты, что каждая сторона может и не может видеть, и шифрование. FAQ отвечает на частые вопросы. Другие платформы: Android, iOS, macOS, Linux и браузер.