Подключено, а часть трафика идёт мимо
Так и задумано: внутри работает профиль маршрутизации, который раскладывает адреса и домены по трём корзинам — через прокси, напрямую и в блок. Сайт, попавший во вторую или третью, ведёт себя ровно так, будто доступ выключен, хотя соединение честно установлено.
Отдельно от этих трёх корзин задаются внешний и внутренний DNS. Это вторая причина знакомого «включено, но не открывается»: имя может разрешиться не там, где вы ожидали.
Короткий ответ: почему трафик расходится
Потому что решение принимается не в момент подключения, а на каждом адресе отдельно — по профилю маршрутизации.
- Исходов ровно три: через прокси, напрямую, блокировать. Правила расставляются по доменам и по IP-адресам.
- Два из трёх исходов выглядят как «не работает». «Напрямую» — сайт ведёт себя как без доступа вовсе. «Блокировать» — не открывается совсем.
- DNS живёт своей жизнью. Внешний и внутренний серверы имён настраиваются отдельно от корзин, и путаница здесь даёт тот же симптом.
- Профиль может приехать вместе с доступом. Он передаётся заголовками подписки — разбор на листе про подписку.
- Раздельный туннель по приложениям есть не везде. На Android и на компьютере он есть, на iPhone и iPad его нет — подробности ниже.
Как профиль делит трафик
Слева — открытый адрес, справа — три возможные судьбы запроса. Ни одна из них не сопровождается сообщением на экране.
Раздельный туннель по приложениям: где он есть, а где его нет
Есть на Android и в настольной сборке. На iPhone и iPad его нет — это не спрятанная настройка, а отсутствующая возможность.
- Что это вообще такое. Выбор, какие программы идут через туннель, а какие в обход, — независимо от того, какие домены прописаны в профиле.
- Признак первый. В таблице возможностей у разработчика напротив раздельного туннеля в мобильной колонке стоит не «есть», а слово «Android».
- Признак второй. В отзывах App Store эту функцию просят добавить и ссылаются на другой клиент, где она уже работает.
- Почему это важно знать заранее. Человек с iPhone ищет переключатель, которого не существует, и уходит искать причину в маршрутах, сети и подписке. Разделять трафик на этой системе можно только правилами профиля — по доменам и адресам, а не по названиям программ.
Может ли профиль обновляться сам
Да. Профиль привязывается к адресу и перечитывается по расписанию — этот режим называется autorouting. Одноразовый импорт устроен иначе: он кладёт правила один раз и адрес источника не запоминает.
- Разница задаётся командой.
://autorouting/включает обновляемый профиль,://routing/— разовый импорт без запоминания источника. - Интервалы обновления: 12 часов, 24 часа (значение по умолчанию), 3 дня, 7 дней.
- Проверка идёт чаще интервала — каждые 30 минут. Программа смотрит, не пора ли обновиться; сама загрузка происходит по расписанию.
- Ссылка на GitHub чинится сама. Адрес вида
github.com/…/blob/…при импорте и при каждом обновлении превращается в «сырой»raw.githubusercontent.com/…— вручную переделывать не нужно. - Данные можно передать параметром запроса —
://routing/add?data={base64}. Это запасной путь для совместимости, когда длинную строку неудобно передать в самом адресе.
Откуда берётся профиль, если источников несколько
Порядок жёсткий и знать его полезно: если ваш профиль не тот, которого вы ждали, значит выиграл источник рангом выше.
- Заголовок
autoroutingв ответе подписки. - Строка с адресом профиля в теле подписки.
- Заголовок
routing. - Строка с профилем в base64 в теле подписки.
Как выключить маршрутизацию целиком
Командой ://routing/off — она отключает встроенную маршрутизацию полностью. Выбранный профиль при этом не стирается: он сохраняется и возвращается обратно, когда маршрутизацию включают снова.
Что происходит, если туннель упал
Трафик обрубается. Это kill switch: при падении туннеля программа не пускает данные в обход, вместо того чтобы молча вернуть вас в открытую сеть.
- Побочный эффект знакомый. Интернет перестаёт работать целиком, и это выглядит страшнее, чем «часть сайтов не открывается». Зато не бывает незаметной утечки в обычный канал.
- Это не то же самое, что три корзины. Корзины решают, куда отправить запрос при живом туннеле. Kill switch срабатывает, когда туннеля уже нет.
Фрагментация TLS-приветствия: зачем резать первый пакет
Чтобы оборудование глубокой фильтрации не увидело в первом пакете имя узла целиком. Приветствие TLS разрезается на части, и настраивается это по трём величинам: типу пакетов, длине куска и интервалу между отправками.
- Настройка живёт не только в приложении. Те же три величины передаются прямо в ссылке отдельного сервера — параметрами
fragmentPackets,fragmentLengthиfragmentInterval. То есть у разных серверов из одной подписки настройки резки могут отличаться. - Продавец доступа тоже вмешивается. Он может задать фрагментацию, подмену адреса подключения (
resolveAddress,hostHeader) и предварительное разрешение имени сервера через DoH. - И может её потерять. При превышении тарифного лимита провайдера туннель продолжает работать, а часть надстроек отключается — тема оформления, фрагментация и подмена адреса. Разбор этого механизма — на листе про отпечаток устройства.
Что ещё управляет подключением, кроме правил
Три вещи, о которых чаще всего спрашивают отдельно.
- Always-On на Android. Режим, в котором туннель поднимается сам и держится постоянно, без ручного включения после перезагрузки.
- Раздача через хотспот на Android. Через один подключённый телефон могут выходить и другие устройства рядом.
- Виджеты и быстрые команды. Подключение и отключение без открытия приложения. В настольной сборке вместо виджета — значок в трее.
Частые вопросы про маршруты
Значок подключения горит, а сайт не открывается — это поломка?
Не обязательно. Значок отвечает за состояние туннеля, а судьба каждого адреса решается профилем: он мог отправить этот адрес напрямую или в блок. Такой же жалобой — «горит значок, что впн работает, а по факту нет» — полны отзывы в магазинах, но отзыв фиксирует симптом, а не причину.
Почему на iPhone не получается пустить через туннель только одно приложение?
Потому что раздельного туннеля по приложениям там нет. Он работает на Android и на компьютере. На системах Apple разделять можно только правилами профиля — по доменам и адресам.
Правила обновляются сами?
Если профиль привязан к адресу — да. По умолчанию раз в сутки, доступны также 12 часов, 3 дня и 7 дней, а сама проверка выполняется каждые полчаса. Профиль, добавленный разовым импортом, не обновляется: у него нет запомненного источника.
Правила приезжают вместе с подпиской или их нужно задавать самому?
Может быть и так и так. У подписки есть заголовки, которыми продавец присылает профиль или адрес профиля. Если пришло сразу несколько источников, побеждает старший по порядку: заголовок с обновляемым профилем сильнее строки в теле подписки.
Соединение рвётся при запуске одного конкретного приложения — это маршруты?
Проверяемого ответа тут нет. Такая жалоба в отзывах App Store есть — с указанием конкретной программы и оговоркой «на всех серверах», — но официального разбора этого случая у разработчика не опубликовано.
Что известно точно: официальный приём проблем у него один, и в обращение просят приложить версию приложения, платформу и логи. Собранные дословные жалобы — на листе про ошибки.
Можно ли выключить маршрутизацию совсем?
Да, для этого есть отдельная команда. Выбранный профиль при этом сохраняется и возвращается, когда маршрутизацию включают обратно, — заново собирать правила не придётся.