YPN Release Channel
30 subscribers
1 photo
11 files
23 links
Канал для релизов YPN
Download Telegram
Обновление 1.3.5 — аккуратная верстка на любом экране и экспериментальный транспорт.

🎨 Адаптивная верстка на узких экранах
Исправлено отображение на телефонах с узким экраном: карточки подписки, имена серверов и длинные подписи больше не обрезаются и не выходят за край, а вертикальный скролл работает корректно. Прошлись по всем экранам приложения — главная, профили, настройки, помощь, уведомления и диалоги — чтобы текст и элементы аккуратно вписывались в окно на любом размере.

🧪 Экспериментальный транспорт XHTTP
Добавлена экспериментальная поддержка транспорта XHTTP (мультиплексирование поверх HTTP/2). Пока в режиме наблюдения — смотрим, как он ведёт себя в реальных условиях; основные подключения работают как прежде.

🔗 Стабильнее при смене сети
Соединение лучше переживает переключение между Wi-Fi и мобильной сетью: внутренняя таблица сопоставлений адресов теперь сохраняется между переподключениями, поэтому приложения не «отваливаются» после каждого скачка сети.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🤝1
CHANGELOG_1.3.5.pdf
273.2 KB
📄 Список изменений · YPN Client 1.3.5 (PDF)
Обновление 1.3.6 — надёжность соединения: чиним «наглухо», разрывы и утечки памяти.

🛡️ Соединение стало заметно стабильнее
Устранили несколько причин, из-за которых канал мог внезапно «замолчать» и не восстановиться сам. Теперь приложение замечает, когда трафик перестаёт идти, и честно показывает статус, а не висит молча «подключено». Отдельно исправлено редкое зависание при отключении из системного трея, которое могло оставить компьютер без интернета до перезапуска.

🔄 Плавные переключения серверов и сети
После смены сервера или перехода между Wi-Fi и мобильной сетью соединение восстанавливается сразу, без периода, когда «всё висит». А долгие соединения — мессенджеры, стримы, звонки — больше не обрываются сами по себе спустя несколько часов работы.

Ровнее под нагрузкой
При большом числе одновременных соединений (игры, звонки, p2p) трафик больше не «замирает» из-за одного медленного подключения — каждое соединение поднимается независимо.

🧹 Меньше памяти при долгой работе
Исправлено накопление «мёртвых» сессий: при многочасовой работе приложение больше не раздувает расход памяти.

📺 Android ТВ: подписка снова обновляется
На ТВ-приставках подписка обновляется автоматически даже при включённом VPN — раньше в этом случае обновление могло отклоняться.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
Обновление 1.3.7 — исключения из туннеля наконец работают как надо: игры и приложения «мимо VPN» больше не «немеют».

🎮 Игры и приложения вне туннеля — теперь двусторонние
Если вы добавляли игру или приложение в исключения, чтобы её трафик шёл напрямую, минуя VPN, на Windows это могло работать лишь «в одну сторону»: данные уходили, а ответы не возвращались — игра не заходила в матч, голосовая связь молчала. Причину нашли и устранили: прямой трафик теперь корректно выходит через ваш физический сетевой адаптер и получает ответы. Особенно заметно в сетевых играх.

🌐 Исключения по домену с маской снова срабатывают
Запись вида *.example.com в списке исключённых доменов раньше могла молча не сработать. Теперь такие записи автоматически приводятся к единому виду — *.example.com, .example.com и example.com дают одинаковый результат и покрывают сам домен вместе со всеми поддоменами.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🔥1👏1💘1
CHANGELOG_1.3.7.pdf
143.5 KB
📄 Список изменений · YPN Client 1.3.7 (PDF)
🚀 YPN Client v1.3.8

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

🎮 Roblox и картинки/видео в ленте больше не «зависают на загрузке»
При открытии Roblox или пролистывании ленты приложение открывает сразу пачку соединений — и часть из них могла срываться, из-за чего страница не догружалась и подвисала в бесконечной загрузке. Теперь пачка новых соединений распределяется во времени, а сорвавшееся соединение получает повторную попытку — загрузка доходит до конца.

🇷🇺 Российские сайты вне списков открываются с первого раза
Раньше самое первое подключение к российскому сайту, которого нет ни в одном списке, могло по инерции уйти через зарубежный выход и потому тормозить или не открываться. Теперь маршрут для таких сайтов определяется сразу, на первом же обращении — и для обычных соединений, и для видеозвонков/игр (QUIC).

📄 Диагностика снова пишется после ротации логов
У части пользователей после смены суток лог обнулялся, и «Отправить лог» приходил пустым. Причину устранили — лог теперь пишется непрерывно, и при любой ошибке записи файл автоматически переоткрывается.

🗺️ Гео-базы обновляются сами
Базы определения стран/сайтов теперь автоматически обновляются в фоне, если устарели, — чтобы маршрутизация оставалась точной.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/

⬇️ Скачать (все платформы): ypncore.ru/downloads
❤‍🔥1🔥1
🚀 YPN Client v1.3.9

Обновление 1.3.9 — длинные ответы не обрываются, ноутбук после сна не висит с «подключено», защитное правило больше не рубит сам туннель.

🛡️ Защитное правило больше не отключало интернет вместо того, чтобы защищать
С включённым режимом «не выпускать трафик мимо туннеля» связь пропадала через несколько секунд после подключения, а после сна ноутбука туннель не восстанавливался вообще: правило ставилось без исключений — ни для трафика через сам туннель, ни для соединений приложения с сервером. Теперь исключения на месте. Защита DNS при этом не ослаблена, а если правило не удалось применить — приложение об этом скажет, раньше это было видно только в логе.

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

Длинные ответы (SSE, streaming API, Claude Code) больше не рвутся на пятой минуте
Таймаут простоя считался отдельно для каждого направления, хотя должен срабатывать, только когда молчат оба: на длинном ответе отваливалась отправляющая половина, соединение оставалось полуживым, и следующий запрос уходил в никуда. Теперь бюджет общий, а сам таймаут поднят с 5 до 30 минут.

📄 Обрыв по простою больше не теряется в логе
Раньше такие закрытия писались уровнем, который при обычных настройках не сохраняется, и присланный лог не объяснял ничего. Теперь причина видна, а в диагностику добавлены счётчики.

📌 Закреплённый вручную сервер больше не молчит о том, что он мёртв
При ручном закреплении автопереключение выключено по построению, и неудачные проверки уходили только в лог. Теперь причина показывается на экране, с кнопками «Переключить сейчас» и «Переподключиться».

🔍 Клиент сам подбирает рабочий адрес подключения
Рабочее имя, под которым приложение представляется серверу, зависит от оператора: в замерах одно и то же имя давало у одного оператора 5 успехов из 5, у другого — 0 из 5 в тот же час. Раньше при неудаче сервер просто считался нерабочим. Теперь приложение пробует запасные варианты, если их указал владелец подписки, и запоминает сработавший для этой сети. Своего списка адресов в приложении нет — только то, что пришло от вашего провайдера. Подбор работает не на всех типах серверов: часть настроек ведёт подключение по отдельному пути, где перебор невозможен, — это зависит от того, как сервер настроен у вашего провайдера.

🕵️ Диагностика, которую не страшно переслать
Новый режим записи (YPN_TRACE) сохраняет только «форму» трафика: время, направление и размер порции. Ни адресов, ни доменов, ни имён серверов, ни паролей, ни байта содержимого — время отсчитывается от начала записи, а метки времени самого файла обнуляются, так что по нему не видно, в какие часы вы были в сети. При этом видно, оборвался ли длинный ответ и на каком именно выходе проблема. Файл рассчитан на пересылку в поддержку: сама последовательность размеров и пауз — это тоже данные, поэтому выкладывать его публично не стоит. Подробности — в описании режима на сайте.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/

⬇️ Скачать (все платформы): ypncore.ru/downloads
1❤‍🔥1🔥1🎉1
CHANGELOG_1.3.9.pdf
557.3 KB
📄 Список изменений · YPN Client 1.3.9 (PDF)
Обновление 1.3.10 — на Windows туннель больше не включается «наполовину» и не уносит с собой всю сеть.

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

🚦 Туннель поднимался без маршрутов и забирал с собой всю сеть
Порядок действий был опасным: сначала приложение переводило на себя обработку имён и делало свой адаптер главным, и только потом прокладывало маршруты. Если маршруты проложить не удавалось, подключение всё равно продолжалось — и система оставалась с обработчиком имён, который отвечает служебными адресами, и без единого пути до них. Падало всё, включая то, что в туннель и не собиралось. Само по себе это не проходило: обработчик отвечает всегда, поэтому состояние переживало и возвращение сети, и переподключение. Теперь маршруты прокладываются первыми, а их неудача — это честная ошибка подключения с возвратом системы в исходное состояние. Если сеть ещё не поднялась (первые секунды после включения компьютера или после сна), приложение подождёт её до десяти секунд и только потом сообщит об ошибке.

📡 Подключение без шлюза убивало связь наглухо
У части подключений — телефонные линии, USB-модемы, часть корпоративных адаптеров — путь в интернет описан без промежуточного адреса. Приложение принимало служебное слово из системной таблицы за адрес и подставляло его в команды. В результате исключения не создавались вовсе, включая исключение для самого сервера, — и трафик туннеля заворачивался в туннель. Замкнутый круг, каждый раз, на любой настройке. Теперь отсутствие промежуточного адреса — это отдельное состояние, а не строка, и такие исключения привязываются к сетевому адаптеру напрямую.

«Подключено» теперь означает проверенный путь
После прокладки маршрутов приложение отдельно перечитывает системную таблицу и убеждается, что они действительно там. Успешный ответ команды — более слабое утверждение, чем наличие маршрута.

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

🧹 Мелочи того же корня
Приложение больше не добавляет системе лишний путь по умолчанию при каждом отключении — оно считало, что перед этим сам его убрало, хотя не убирало. Адаптер без адреса больше не считается рабочим. А проверка «маршрут уже есть» перестала зависеть от языка системы: раньше она сравнивала английскую строку и на русской Windows не сработала бы никогда.

Изменения касаются только Windows. На Linux, macOS и Android поведение прежнее — версия поднята для единообразия.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
CHANGELOG_1.3.10.pdf
271.9 KB
📄 Список изменений · YPN Client 1.3.10 (PDF)
YPN 1.3.11

Релиз по двум жалобам: «на VPN иногда рвётся соединение» и «на телевизоре зависла полоска загрузки». Разбирая их, нашли ещё несколько мест, где клиент вёл себя нечестно — показывал, что всё в порядке, когда это было не так.

Связь восстанавливается сама

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

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

Windows: смена сети больше не обрывает работу

Переключились с Wi-Fi на кабель, выдернули провод, сменили оператора на модеме — VPN оставался «подключённым», но не пропускал ничего. Это происходило всегда, а не изредка: из-за ошибки в коде обработчик смены сети не срабатывал вообще.

Kill switch больше не вводит в заблуждение

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

Телевизор: полоска загрузки больше не висит

«Загрузка данных маршрутизации» могла остаться на экране навсегда, хотя ничего не скачивалось. Теперь она исчезает в любом случае, а при неудаче честно об этом пишет.

Телефон: заработали Hysteria2 и TUIC

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

Ещё

Обновление подписки больше не пропадает молча. Приложение перестало держать соединение с сервером после того, как вы отключили VPN. Когда сервер перегружен и соединения ждут очереди, появляется понятное предупреждение вместо необъяснимых обрывов.

Скачать

Windows, macOS, Linux (deb / rpm / AppImage / Arch), Android — включая Android TV.

ypncore.ru/downloads

Приложение не подписано цифровой подписью: Windows и macOS предупредят при первом запуске, это ожидаемо.

Отдельно скажем честно: переподключение по смене сети на Windows проверено автотестами, но не на живой машине — её у нас сейчас нет. Если поймаете странное поведение при смене сети, напишите — разберём в первую очередь.
🔥2💘1
Обновление 1.3.12 — на Windows туннель больше не рвётся по кругу. И извинения за 1.3.11.

Начнём с неприятного: 1.3.11 мы выпустили сломанной. На Windows туннель обрывался через пару секунд после подключения, снова подключался, снова обрывался — и так без конца. Пользоваться VPN было нельзя, помогал только откат на 1.3.10. Если вы потратили вечер, пытаясь понять, что не так с вашей сетью, — с сетью всё было в порядке. Извините.

🔁 Почему так вышло
В 1.3.11 мы починили обработчик смены сети: до этого он на Windows состоял из недостижимого кода и не срабатывал никогда. Починили — и он начал отрабатывать каждое системное уведомление об изменении сетевых адресов. В том числе те, которые приложение создаёт само: поднимая туннель, оно выставляет своему адаптеру адрес, потом DNS, потом приоритет. Клиент видел «сеть изменилась», рвал соединение, переподключался — и снова видел «сеть изменилась». Защита от частых событий не спасала: она рассчитана на всплеск, а цикл подъёма занимает около восьми секунд и укладывается в неё каждый раз заново.

Теперь клиент реагирует не на факт уведомления, а на реальную разницу: изменился ли физический путь в интернет — адаптер, шлюз, адрес. Собственный туннель, чужой VPN-адаптер, docker-мост такой разницы не создают, и туннель их больше не замечает. Реальное переключение Wi-Fi кабель модем, смена шлюза и переезд по DHCP по-прежнему переподключают — ровно один раз. Если путь пропал вовсе, туннель оставляют в покое: переподключаться не через что. Сверху предохранитель — не больше трёх переподключений в минуту.

Остальное — про российский сегмент, и тема одна: клиент знал правду, но не доносил её до вас.

⚙️ Рекомендованный профиль дотянут до реальности
При первой установке применяется набор рекомендованных настроек. В нём не хватало двух вещей: автопереподключения и автоопределения российских приложений. В сети, где обрыв — будни, туннель без автопереподключения просто умирает и лежит, пока вы не заметите. А банковские, государственные и маркетплейс-сервисы проверяют IP выхода и закрепляют сертификаты, поэтому через иностранный выход они либо не открываются, либо требуют капчу. Теперь обе настройки в профиле. Это касается только новых установок и кнопки «Применить рекомендованные» — при обновлении ваши настройки никто не трогает.

🇷🇺 Выключенный защитный пин теперь видно
Пин уводит российские сайты напрямую, мимо туннеля. Если его выключить, российский трафик идёт через иностранный выход, и банки, Госуслуги и маркетплейсы начинают отваливаться. Раньше об этом сообщала одна строка в журнале — то есть практически никто. Теперь, пока пин выключен, на главном экране висит предупреждение с указанием, где его вернуть. Оно не всплывающее и не закрывается: исчезает ровно тогда, когда исчезает причина.

🐢 Когда «VPN тормозит» — теперь понятно, почему
Часть серверов не умеет вести много соединений через одно рукопожатие. На занятом компьютере таких рукопожатий набирается больше, чем сервер готов принять, и новые соединения встают в очередь до полуминуты. Снаружи это выглядит как необъяснимые тормоза. Подсказка теперь называет причину и предлагает сервер с gRPC или HTTP/2 — раньше она советовала XHTTP, который на наших серверах не работает. При автовыборе транспорта мультиплексирующий сервер предпочитается, но только при равной скорости и только после нескольких подтверждений подряд, чтобы выбор не скакал.

📋 О неполной подписке узнаёт её владелец
Если панель отдаёт по одному формату меньше серверов, чем по другому, клиент молча берёт полный список. Для вас ничего не ломается, но владелец подписки о дефекте своей панели не узнавал никогда. Теперь при импорте и ручном обновлении об этом сообщают в интерфейсе. Фоновое автообновление молчит: напоминание о чужом дефекте, которого никто не просил, — это назойливость, а не забота.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🔥21
Обновление 1.3.13 — клиент перестаёт душить сам себя.

Выпуск вырос из одной жалобы: «низкая скорость и нестабильность» на macOS. Сервер у пользователя действительно отвечал плохо — с паузами до трёх минут. Но дальше клиент превращал плохую связь в неработающую: четыре механизма умножали первичный отказ сети, и ни один из них не был в нём виноват.

🔒 Клиент начинал отбрасывать ваши же соединения

У движка есть потолок одновременных исходящих соединений — защита от исчерпания системных ресурсов. Остановка движка снимала только приёмные петли, а уже запущенные задачи продолжали жить и занимать места, до получаса каждая. Счётчик общий на всё приложение, а за полтора часа движок перезапускался двадцать раз. Занятое складывалось — и клиент начинал отбрасывать собственные соединения пользователя: за 76 минут около 1659 штук. Снаружи это выглядело так: чем дольше работает приложение, тем хуже открываются сайты, помогает только перезапуск. Теперь остановка движка завершает все задачи, и места возвращаются.

Мёртвое соединение держало место полчаса

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

📡 Ограничитель новых UDP-сессий не мог сработать по построению

Он стоял в правильном месте и работал как написан, но ёмкость его «ведра» равнялась всей таблице сессий. Такое ведро по определению позволяет одному всплеску занять таблицу целиком, а паузы между всплесками успевали его долить. В журнале: 4400 созданных сессий за окно и три отсеянных, около 800 вытеснений в секунду — живые видеозвонки и загрузки постоянно выбивались ради новых. Ведро уменьшено до восьмой части таблицы.

🐌 Один тумблер сажал скорость в разы, и об этом нигде не было сказано

«Защита от ML-анализа» включает джиттер тайминга. Окно джиттера по умолчанию стояло в значении «применять к каждой отправке всю жизнь соединения» — при диапазоне 5–50 мс это около 27 мс сна перед каждой записью в сеть. На стенде: 20 отправок за 946 мс вместо 60. Отметим прямо: это был наш умолчательный параметр, а не ошибка пользователя.

Теперь джиттер применяется к первым отправкам и на этом прекращается — защита работает против сопоставления задержек на установлении соединения, а это как раз они. Замер на живом туннеле после правки: 10.36 МБ/с без режима против 7.87 МБ/с с ним. Цена стала соразмерной, и при включении режима теперь показывается предупреждение о ней. Сохранённые профили чинятся сами.

🍏 На macOS не работало восстановление после аварийного завершения

Сторожевой процесс, который откатывает маршруты и DNS после жёсткого падения приложения, не клался в macOS-сборку — он был объявлен только для Windows. После аварии мак мог остаться без интернета до следующего запуска. Теперь он входит в сборки macOS и Linux. Портативная сборка для Windows тоже шла без него — исправлено.

🔇 Отказ в подключении не попадал в журнал

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

Чего в этом выпуске нет

Живая приёмка была на macOS. Windows и Linux собраны и проверены тестами, но полевого прогона правок на них не было. Нагрузку на UDP живьём воспроизвести не удалось — эта правка держится на тестах.

И главное: автопереключение на живой сервер по-прежнему выключено по умолчанию. У человека из жалобы было четыре сервера, а клиент полтора часа стучался в один мёртвый. Вернуть пока не готовы: в 1.3.0 такая проверка ложно срабатывала на медленных серверах и по цепочке роняла оценку соседних. Сначала укрепим проверку.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🔥2💘1
Обновление 1.3.14 — запрос доходит до сервера целиком.

Выпуск вырос из одной жалобы: длинные запросы обрываются на ровном месте. За день журнал с одной машины дал 1003 обрыва, из них 663 — когда сервер не прислал в ответ ни байта. С резкой закономерностью: короткие запросы проходят почти всегда, крупные почти никогда. Причина оказалась у нас.

📤 Клиент считал запрос отправленным, пока байты лежали в его же буфере

Хвост последней отправки так и не уходил на провод. Приложение видело «отправлено 1.8 МБ», сервер получал недописанный запрос и молчал — а через несколько десятков секунд приложение сдавалось по своему таймауту и показывало обрыв. На стенде это выглядит так: из 40 КБ до сервера доходит ноль. Короткие запросы выживали случайно: их дописывал служебный сброс при закрытии соединения, а у запроса, который ждёт ответа, закрытия не наступает. Теперь клиент дописывает буфер, как только поток данных встаёт.

🛡 Защита от ML-анализа на самом ходовом профиле не работала вообще

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

📦 Крупные загрузки теряли данные

Режим непрерывной маскировки отдавал наружу по одному блоку за раз, принимая при этом всё, что дали, и рапортуя это записанным. Из 1.8 МБ до сервера доходило 39 КБ, остальное оседало в памяти. Теперь уходят все готовые блоки — по одной записи на блок, чтобы равномерность размеров, ради которой режим и существует, сохранилась.

Ограничитель соединений вредил вместо защиты

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

⚙️ Настройки перестали расходиться с делом

Уход с пресета «Защита от ML-анализа» не снимал то, что пресет включил, — маскировка оставалась работать молча. Обещанная в прошлом выпуске самопочинка окна джиттера не срабатывала для уже сохранённых профилей. Уровень журнала в настройках вообще ни на что не влиял: выставленный «debug» не давал ни одной подробной строки.

🔍 Диагностика стала пригодной для разбора

В отчёте об обрыве теперь есть адрес и настоящая длительность тишины. Раньше там был безымянный номер соединения и цифра, которая на деле показывала период опроса приложения, а не паузу сервера, — 90 отчётов из 179 несли одинаковое значение. Плановое переподключение больше не выглядит как падение движка: в одном разобранном случае таких ложных «падений» было 25, и ни одно не было аварией. Диагностический отчёт освобождён от служебного шума, который занимал три четверти объёма и оставлял от истории минуты вместо часов.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
Обновление 1.3.15 — клиент перестал резать собственные соединения.

Выпуск вырос из жалобы «всё стало плоховато»: всплывающее предупреждение про сервер, обрывы, нестабильность. Разбор занял день и трижды менял подозреваемого. Виноват оказался не сервер и не сеть, а собственная защита клиента.

⛔️ Клиент сам отклонял ваши соединения — сервер об этом не просил

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

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

Со счётчиком ответили 34 соединения из 60. Без него — 59 из 60, и втрое быстрее. На записи видно, что до сети доходит 35 запросов на соединение из 60: остальные клиент отклоняет сам, не пытаясь соединиться. Сервер при этом за весь прогон не прислал ни одного отказа, хотя темп был почти в девять раз выше той самой «опасной» отметки.

В обычной работе клиент делает 3–20 рукопожатий в минуту при потолке 70. То есть счётчик не срабатывал никогда — и вредил только на старте, когда все приложения переустанавливают соединения разом. На одной машине это дало 882 отказа за четыре минуты.

Теперь пауза включается только тогда, когда путь действительно сопротивляется: после трёх подряд сбросов рукопожатия к серверу клиент на минуту переходит к осторожному режиму и сам из него выходит. Осторожный режим сохранён там, где его пользу удалось показать на реальных случаях, и снят там, где показать удалось только вред.

🔐 Загрузка подписки больше не принимает любой сертификат

Раньше принимала — с рассуждением «мы же только конфиги забираем, паролей не шлём». Рассуждение перевёрнуто: подписка и есть самое ценное, что клиент забирает. В ней перечислены все серверы, через которые пойдёт ваш трафик. Подменивший сертификат на этом одном запросе отдаёт вам свой список серверов — и дальше весь туннель идёт через него. Пароль для этого не нужен.

Если панель ваша и сертификат самоподписанный — включите соответствующую настройку; сообщение об отказе теперь прямо об этом говорит, вместо внутренней ошибки TLS.

🔍 Диагностика перестала врать про сервер

Сообщение «соединение закрылось, сервер ничего не ответил» клиент выдавал и тогда, когда отвечать было некому: у имени, к которому обращалось приложение, вообще нет адреса в DNS. Живой пример из разбора — игра, которая годами стучится в несуществующий адрес. Полтора часа ушло на поиски причины в журналах сервера, где её быть не могло.

Теперь причина проверяется после обрыва и различается: «имя не резолвится» и «сервер молчит». Во втором случае печатается адрес — чтобы утверждение можно было проверить, а не поверить.

🧩 Соединение снова знает, каким приложением открыто — теперь на Linux и Android

На Windows это работало давно. На Linux не работало вовсе, на Android не работало и не могло: система с десятой версии не даёт приложению видеть чужие сокеты, поэтому там пришлось спрашивать владельца соединения у самой системы — так, как это разрешено только VPN-приложению.

Что это меняет: на вопрос «почему у меня не работает вот эта программа» теперь отвечает журнал, а не догадки. В списке соединений видно, кто их открыл.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
1
Обновление 1.3.16 — клиент проверяет, что на том конце действительно ваш сервер.

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

🔐 Клиент больше не отдаёт данные чужой стороне
На профилях REALITY клиент принимал любой сертификат. Сервер такого типа при отказе молча передаёт соединение на посторонний сайт прикрытия — и клиент не отличал «дошли до вашего сервера» от «нас увели на чужой»: он всё равно отправлял туда служебный заголовок с идентификатором вашей подписки. Теперь подлинность сервера проверяется по его сертификату, и если ответил не ваш сервер, соединение обрывается ДО отправки чего-либо. Замер: до правки на чужую сторону уезжали все 29 байт заголовка, после — ноль.

⚠️ Почему с обновлением лучше не тянуть
При подключении по REALITY клиент сообщает серверу версию, по которой тот решает, пускать ли его. Там стояла версия нашего приложения, хотя поле означает версию другой программы — Xray. Начиная с её выпуска 26.7.28 сервер по умолчанию отклоняет тех, кто представился слишком старой версией. Владельцы серверов обновляются постепенно, поэтому у одних всё работает до сих пор, а у других уже перестало: на версиях до 1.3.16 профили REALITY перестанут подключаться, как только сервер обновят.

🔤 Настройка «смешанный регистр SNI» больше не ломает подключение
С ней ЛЮБОЙ профиль REALITY переставал работать, а в журнале это выглядело как отказ сервера — вина падала на владельца сервера, хотя причина была наша. Если вы выключали эту настройку, чтобы подключение заработало, её можно включить обратно.

🍎 macOS: имена сайтов снова разрешаются через клиент
Туннель поднимался, трафик шёл, а системный резолвер оставался прежним — запросы имён уходили в местную сеть открытым текстом. Следствие шире самой утечки: любое правило, которое смотрит на ИМЯ, на macOS не срабатывало вовсе — ни список исключённых доменов, ни правила geosite, ни курируемый список российских сервисов. Теперь при подключении резолвер переводится на клиента, а при отключении, выходе и даже при аварийном завершении возвращаются ровно те резолверы, что были у вас.

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

🇷🇺 Прямой доступ к российским сервисам включён по умолчанию
Банки, госуслуги и маркетплейсы ведутся мимо туннеля сразу, без похода в настройки: при зарубежном адресе такие сервисы отказываются работать молча, и это выглядит как поломка приложения. Заодно строже стал признак «российское приложение»: раньше им считалась сама установка из RuStore — замер на 2461 приложении показал, что под это подходит 63% каталога, включая Gmail, Google Диск и Booking.com. При обновлении ваша сохранённая настройка не меняется: если направление нужно, включите тумблер один раз.

🔎 Рядом с этим тумблером появилась кнопка «Проверить»
Она показывает, куда клиент на самом деле направляет российские адреса и почему каждое приложение попало в прямой список. Зелёный ответ возможен ровно в одном случае: российские адреса идут напрямую, а контрольный зарубежный — через туннель.

🖥 Консольный клиент и отдельный исполняемый файл Linux наконец на странице загрузок
Раньше оба собирались каждый выпуск, но туда не попадали. Пригодятся тем, кто запускает клиент без интерфейса.

Чего в этом выпуске нет
Живьём проверены Windows, macOS, Linux (deb) и Android: установка, туннель, трафик, возврат сети. Экран самопроверки человеком не открывался: измерено поведение, о котором он сообщает, а не он сам. Сборки для iOS не существует.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
Обновление 1.3.17 — подбор имени сервера наконец работает на компьютере.

🎯 Главное: функция, которой не было, хотя она числилась
Когда сеть мешает подключиться по имени сервера, клиент умеет подобрать другое имя и пройти. На Windows, Linux и macOS эта функция не работала вовсе — по трём независимым причинам сразу.

Отказ соединения клиент опознавал по СЛОВАМ в тексте ошибки, а слова там пишутся слитно, и не совпадало ничего. Когда это чинили в прошлый раз, починили не тот внутренний механизм: настольный клиент собирается в режиме повышенной маскировки и идёт через другой, где всё осталось по-старому. И третье — посторонний мог одним поддельным пакетом заставить клиент перебирать имена в удобном себе порядке или стереть уже подобранное.

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

🎭 Приветствие клиента стало ближе к обычному браузеру
В режиме повышенной маскировки клиент отправлял двенадцать признаков там, где Chrome отправляет шестнадцать. Наборы шифров совпадали знак в знак, а признаки — нет, и заметить это было нечем: самопроверка закрепляла вид отпечатка, а не его значение. Два признака добраны, самопроверка теперь закрепляет само значение и показывает, чему оно не равно. Оставшиеся два добрать нельзя — они записаны прямо в коде библиотеки.

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

⚙️ Настройки больше не затирают сами себя
Если экран настроек не смог получить ваши значения, он молча показывал встроенные умолчания — и выглядел как обычный открытый экран. Первое же «Сохранить» записывало их поверх всего, что вы меняли: списки исключений, домены, порты, пресеты. На ТВ хуже — там сохранение автоматическое, и хватало любой правки. Теперь сохранение не срабатывает, пока значения не загружены, а сверху висит понятное сообщение с кнопкой повтора.

🔐 Загрузка списка серверов снова проверяет сертификат
Настройка «разрешить небезопасный TLS» понималась буквально: включена — не проверять вовсе. Замер на живых адресах показал, что нужды в этом не было ни разу. Теперь проверяемый канал пробуется первым всегда, а разрешение означает «принять плохой сертификат, только если иначе никак». Сетевой сбой больше не может понизить защищённость соединения.

💬 Подсказка про сертификат панели наконец доходит до человека
При отказе по сертификату клиент писал «error sending request» и молчал о причине. Текст с объяснением существовал, но не показывался ни разу: признак искали не там, где он лежит.

🗺 Первая загрузка баз маршрутизации не требует второй попытки
На скачивание 18,9 МБ стоял общий срок в две минуты — вместе с чтением данных. На медленной связи честная загрузка не укладывалась и рвалась посередине. Теперь срок отсчитывает молчание канала, а не длительность, и разовую неудачу клиент переживает сам. Неудачное обновление больше не может оставить вас вообще без базы.

🧹 Удаление на Windows убирает за собой полностью
Раньше после удаления в папке программы оставалось 18,9 МБ, включая файл со ссылкой на вашу подписку. Причина: на Windows клиент портативный и хранит данные рядом с собой, а стандартный деинсталлятор искал их в профиле пользователя. Теперь при удалении вы решаете сами: снимете галку «удалить данные» — профили и подписка останутся. Переустановка и обновление версии данные не трогают вовсе.

🐧 Linux: после установки пакета всё работает сразу
Права на создание туннеля выставляются самим пакетом при установке и при каждом обновлении. Раньше скрипт для этого лежал в исходниках, но в пакет не попадал — и запускать приходилось от root, чего делать не стоит.

Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/