Обновление 1.3.4 — диагностика и доверие: лог одной кнопкой, приватная телеметрия, защита от белого экрана.
🩺 Диагностика в один клик
Кнопка «Отправить лог» теперь на странице «Логи» — заметная, на телефоне и на ТВ. Лог собирается полностью на всех устройствах (включая ТВ и Android), а статус отправки — на языке приложения.
🔒 Приватная телеметрия ошибок — по желанию
По умолчанию выключена. Всё, что уходит, прогоняется через скрабер: IP-адреса, ключи рукопожатий, токены и заголовки авторизации не утекают.
📄 Приватность и прозрачность
Новый раздел в «Помощи» и на сайте: что мы видим (ничего лишнего) и чего не видим. Перед отправкой диагностики — предпросмотр того, что именно загружается.
🎨 Аккуратные диалоги, единые уведомления и доступность
Все подтверждения — в одном оформленном окне вместо системных; уведомления собраны в один стек с ручным закрытием. Подсказки не только цветом (иконка + подпись) и корректные метки — удобнее для дальтоников и скринридеров.
🚦 Стабильность соединения
Трафик больше не «замирает» под нагрузкой: при перегрузке исходящего канала раньше могли застыть все UDP-потоки (включая DNS на Android) — приложение работает, а данные не идут. Теперь лишние пакеты аккуратно сбрасываются вместо подвисания канала, плюс защитный таймаут. Устранена и утечка фоновых задач/дескрипторов в одном из транспортов, копившаяся при частых переподключениях.
🧠 Меньше памяти
Глобальный аллокатор теперь сразу возвращает освобождённую память системе. При частых переподключениях и рукопожатиях потребление больше не разрастается — приложение остаётся лёгким в долгих сессиях.
✅ Больше никакого «белого экрана»
Сбой в интерфейсе больше не гасит весь экран при включённом туннеле — приложение остаётся управляемым. Плюс надёжность фонового сервиса на Android и видимость ошибок (профили больше не молчат при сбое).
🪟 Аппаратная «Назад» на телефоне
Системная «Назад» на Android-телефоне больше не выкидывает из приложения с одного нажатия: сначала закрывает диалог, затем уводит на главную, и только на главной спрашивает подтверждение выхода.
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🩺 Диагностика в один клик
Кнопка «Отправить лог» теперь на странице «Логи» — заметная, на телефоне и на ТВ. Лог собирается полностью на всех устройствах (включая ТВ и Android), а статус отправки — на языке приложения.
🔒 Приватная телеметрия ошибок — по желанию
По умолчанию выключена. Всё, что уходит, прогоняется через скрабер: IP-адреса, ключи рукопожатий, токены и заголовки авторизации не утекают.
📄 Приватность и прозрачность
Новый раздел в «Помощи» и на сайте: что мы видим (ничего лишнего) и чего не видим. Перед отправкой диагностики — предпросмотр того, что именно загружается.
🎨 Аккуратные диалоги, единые уведомления и доступность
Все подтверждения — в одном оформленном окне вместо системных; уведомления собраны в один стек с ручным закрытием. Подсказки не только цветом (иконка + подпись) и корректные метки — удобнее для дальтоников и скринридеров.
🚦 Стабильность соединения
Трафик больше не «замирает» под нагрузкой: при перегрузке исходящего канала раньше могли застыть все UDP-потоки (включая DNS на Android) — приложение работает, а данные не идут. Теперь лишние пакеты аккуратно сбрасываются вместо подвисания канала, плюс защитный таймаут. Устранена и утечка фоновых задач/дескрипторов в одном из транспортов, копившаяся при частых переподключениях.
🧠 Меньше памяти
Глобальный аллокатор теперь сразу возвращает освобождённую память системе. При частых переподключениях и рукопожатиях потребление больше не разрастается — приложение остаётся лёгким в долгих сессиях.
✅ Больше никакого «белого экрана»
Сбой в интерфейсе больше не гасит весь экран при включённом туннеле — приложение остаётся управляемым. Плюс надёжность фонового сервиса на Android и видимость ошибок (профили больше не молчат при сбое).
🪟 Аппаратная «Назад» на телефоне
Системная «Назад» на Android-телефоне больше не выкидывает из приложения с одного нажатия: сначала закрывает диалог, затем уводит на главную, и только на главной спрашивает подтверждение выхода.
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
Обновление 1.3.5 — аккуратная верстка на любом экране и экспериментальный транспорт.
🎨 Адаптивная верстка на узких экранах
Исправлено отображение на телефонах с узким экраном: карточки подписки, имена серверов и длинные подписи больше не обрезаются и не выходят за край, а вертикальный скролл работает корректно. Прошлись по всем экранам приложения — главная, профили, настройки, помощь, уведомления и диалоги — чтобы текст и элементы аккуратно вписывались в окно на любом размере.
🧪 Экспериментальный транспорт XHTTP
Добавлена экспериментальная поддержка транспорта XHTTP (мультиплексирование поверх HTTP/2). Пока в режиме наблюдения — смотрим, как он ведёт себя в реальных условиях; основные подключения работают как прежде.
🔗 Стабильнее при смене сети
Соединение лучше переживает переключение между Wi-Fi и мобильной сетью: внутренняя таблица сопоставлений адресов теперь сохраняется между переподключениями, поэтому приложения не «отваливаются» после каждого скачка сети.
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🎨 Адаптивная верстка на узких экранах
Исправлено отображение на телефонах с узким экраном: карточки подписки, имена серверов и длинные подписи больше не обрезаются и не выходят за край, а вертикальный скролл работает корректно. Прошлись по всем экранам приложения — главная, профили, настройки, помощь, уведомления и диалоги — чтобы текст и элементы аккуратно вписывались в окно на любом размере.
🧪 Экспериментальный транспорт 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/
🛡️ Соединение стало заметно стабильнее
Устранили несколько причин, из-за которых канал мог внезапно «замолчать» и не восстановиться сам. Теперь приложение замечает, когда трафик перестаёт идти, и честно показывает статус, а не висит молча «подключено». Отдельно исправлено редкое зависание при отключении из системного трея, которое могло оставить компьютер без интернета до перезапуска.
🔄 Плавные переключения серверов и сети
После смены сервера или перехода между Wi-Fi и мобильной сетью соединение восстанавливается сразу, без периода, когда «всё висит». А долгие соединения — мессенджеры, стримы, звонки — больше не обрываются сами по себе спустя несколько часов работы.
⚡ Ровнее под нагрузкой
При большом числе одновременных соединений (игры, звонки, p2p) трафик больше не «замирает» из-за одного медленного подключения — каждое соединение поднимается независимо.
🧹 Меньше памяти при долгой работе
Исправлено накопление «мёртвых» сессий: при многочасовой работе приложение больше не раздувает расход памяти.
📺 Android ТВ: подписка снова обновляется
На ТВ-приставках подписка обновляется автоматически даже при включённом VPN — раньше в этом случае обновление могло отклоняться.
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
YPN Release Channel
Обновление 1.3.6 — надёжность соединения: чиним «наглухо», разрывы и утечки памяти. 🛡️ Соединение стало заметно стабильнее Устранили несколько причин, из-за которых канал мог внезапно «замолчать» и не восстановиться сам. Теперь приложение замечает, когда…
CHANGELOG_1.3.6.pdf
381 KB
YPN Client 1.3.6 — список изменений (PDF)
🔥1
Обновление 1.3.7 — исключения из туннеля наконец работают как надо: игры и приложения «мимо VPN» больше не «немеют».
🎮 Игры и приложения вне туннеля — теперь двусторонние
Если вы добавляли игру или приложение в исключения, чтобы её трафик шёл напрямую, минуя VPN, на Windows это могло работать лишь «в одну сторону»: данные уходили, а ответы не возвращались — игра не заходила в матч, голосовая связь молчала. Причину нашли и устранили: прямой трафик теперь корректно выходит через ваш физический сетевой адаптер и получает ответы. Особенно заметно в сетевых играх.
🌐 Исключения по домену с маской снова срабатывают
Запись вида
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
🎮 Игры и приложения вне туннеля — теперь двусторонние
Если вы добавляли игру или приложение в исключения, чтобы её трафик шёл напрямую, минуя 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.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 в тот же час. Раньше при неудаче сервер просто считался нерабочим. Теперь приложение пробует запасные варианты, если их указал владелец подписки, и запоминает сработавший для этой сети. Своего списка адресов в приложении нет — только то, что пришло от вашего провайдера. Подбор работает не на всех типах серверов: часть настроек ведёт подключение по отдельному пути, где перебор невозможен, — это зависит от того, как сервер настроен у вашего провайдера.
🕵️ Диагностика, которую не страшно переслать
Новый режим записи (
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/
⬇️ Скачать (все платформы): ypncore.ru/downloads
Обновление 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/
Небольшой срочный выпуск по одной жалобе: на 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 проверено автотестами, но не на живой машине — её у нас сейчас нет. Если поймаете странное поведение при смене сети, напишите — разберём в первую очередь.
Релиз по двум жалобам: «на 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/
Начнём с неприятного: 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/
🔥2❤1
Обновление 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/
Выпуск вырос из одной жалобы: «низкая скорость и нестабильность» на 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/
Выпуск вырос из одной жалобы: длинные запросы обрываются на ровном месте. За день журнал с одной машины дал 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/
Выпуск вырос из жалобы «всё стало плоховато»: всплывающее предупреждение про сервер, обрывы, нестабильность. Разбор занял день и трижды менял подозреваемого. Виноват оказался не сервер и не сеть, а собственная защита клиента.
⛔️ Клиент сам отклонял ваши соединения — сервер об этом не просил
Внутри стоял счётчик: не больше 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/
Выпуск начался с жалобы «выбрал профиль — не подключается», а закончился находкой посерьёзнее: клиент мог отдать служебные данные постороннему сайту и считать, что всё в порядке.
🔐 Клиент больше не отдаёт данные чужой стороне
На профилях 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/
YPN Release Channel
Обновление 1.3.16 — клиент проверяет, что на том конце действительно ваш сервер. Выпуск начался с жалобы «выбрал профиль — не подключается», а закончился находкой посерьёзнее: клиент мог отдать служебные данные постороннему сайту и считать, что всё в порядке.…
Вслед за этим релизом на следующей неделе будет большое обновление по @ypncorebot - и старые клиенты YPN перестанут работать с обновлёнными подписками. Объявление будет за 1-2 дня.
Обновление 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/
🎯 Главное: функция, которой не было, хотя она числилась
Когда сеть мешает подключиться по имени сервера, клиент умеет подобрать другое имя и пройти. На Windows, Linux и macOS эта функция не работала вовсе — по трём независимым причинам сразу.
Отказ соединения клиент опознавал по СЛОВАМ в тексте ошибки, а слова там пишутся слитно, и не совпадало ничего. Когда это чинили в прошлый раз, починили не тот внутренний механизм: настольный клиент собирается в режиме повышенной маскировки и идёт через другой, где всё осталось по-старому. И третье — посторонний мог одним поддельным пакетом заставить клиент перебирать имена в удобном себе порядке или стереть уже подобранное.
Теперь отказ определяется по коду из самого протокола, оба механизма ведут себя одинаково, а поддельный пакет ничего не решает. Проверено на стенде: обычные тесты такое не ловят — ломается не арифметика, а добывание кода из чужой библиотеки, и всё остаётся зелёным.
🎭 Приветствие клиента стало ближе к обычному браузеру
В режиме повышенной маскировки клиент отправлял двенадцать признаков там, где Chrome отправляет шестнадцать. Наборы шифров совпадали знак в знак, а признаки — нет, и заметить это было нечем: самопроверка закрепляла вид отпечатка, а не его значение. Два признака добраны, самопроверка теперь закрепляет само значение и показывает, чему оно не равно. Оставшиеся два добрать нельзя — они записаны прямо в коде библиотеки.
⏱ Подбор имени перестал замирать на полминуты
После смены сети и после прерванного подключения он вставал в паузу, хотя причина паузы уже отпала.
⚙️ Настройки больше не затирают сами себя
Если экран настроек не смог получить ваши значения, он молча показывал встроенные умолчания — и выглядел как обычный открытый экран. Первое же «Сохранить» записывало их поверх всего, что вы меняли: списки исключений, домены, порты, пресеты. На ТВ хуже — там сохранение автоматическое, и хватало любой правки. Теперь сохранение не срабатывает, пока значения не загружены, а сверху висит понятное сообщение с кнопкой повтора.
🔐 Загрузка списка серверов снова проверяет сертификат
Настройка «разрешить небезопасный TLS» понималась буквально: включена — не проверять вовсе. Замер на живых адресах показал, что нужды в этом не было ни разу. Теперь проверяемый канал пробуется первым всегда, а разрешение означает «принять плохой сертификат, только если иначе никак». Сетевой сбой больше не может понизить защищённость соединения.
💬 Подсказка про сертификат панели наконец доходит до человека
При отказе по сертификату клиент писал «error sending request» и молчал о причине. Текст с объяснением существовал, но не показывался ни разу: признак искали не там, где он лежит.
🗺 Первая загрузка баз маршрутизации не требует второй попытки
На скачивание 18,9 МБ стоял общий срок в две минуты — вместе с чтением данных. На медленной связи честная загрузка не укладывалась и рвалась посередине. Теперь срок отсчитывает молчание канала, а не длительность, и разовую неудачу клиент переживает сам. Неудачное обновление больше не может оставить вас вообще без базы.
🧹 Удаление на Windows убирает за собой полностью
Раньше после удаления в папке программы оставалось 18,9 МБ, включая файл со ссылкой на вашу подписку. Причина: на Windows клиент портативный и хранит данные рядом с собой, а стандартный деинсталлятор искал их в профиле пользователя. Теперь при удалении вы решаете сами: снимете галку «удалить данные» — профили и подписка останутся. Переустановка и обновление версии данные не трогают вовсе.
🐧 Linux: после установки пакета всё работает сразу
Права на создание туннеля выставляются самим пакетом при установке и при каждом обновлении. Раньше скрипт для этого лежал в исходниках, но в пакет не попадал — и запускать приходилось от root, чего делать не стоит.
Все платформы (Windows · Linux · macOS · Android для телефона и ТВ), прямые загрузки и контрольные суммы — на сайте: ypncore.ru/downloads/