Как ядро читает конфигурацию
Между вашим выбором сервера и работой ядра есть промежуточный шаг: приложение собирает для ядра задание. Понимание этого шага объясняет добрую половину странного поведения.
Задание собирается из трёх источников
-
01
Параметры сервера — из подписки
Адрес, порт, протокол, ключи и прочее приходят готовыми: их выдал сервис, вы их не настраивали. Это та часть, которую нельзя починить настройками приложения.
ДЕЛАЕТ: подписка -
02
Правила маршрутизации — из ваших настроек
Что идёт в туннель, что мимо, какие приложения исключены. Это ваша часть: что такое маршрутизация и что такое исключения.
ДЕЛАЕТ: вы -
03
Режим работы — из настроек и системы
Туннель на всю систему или локальный прокси, какие адреса разрешать через какой DNS, слушать ли локальный порт. См. TUN и системный прокси.
ДЕЛАЕТ: приложение и система
Всё это склеивается в один документ и передаётся ядру при запуске. Ядро не спрашивает ничего дополнительно: что передали, с тем и работает — до следующего перезапуска.
Маршрутный лист водителю: откуда выехать, куда ехать, каким маршрутом, что везти, а что оставить.
Структурированный документ (в ядрах этого семейства — в формате JSON), описывающий входящие и исходящие соединения, правила маршрутизации и параметры разрешения имён.
Разбор структуры полей и синтаксиса — не наша тема: это соседний сайт сети про форматы данных.
Почему ошибка в задании выглядит как поломка приложения
Потому что вы её не составляли. Вы выбрали сервер в списке и включили пару переключателей — а результат оказался документом, который ядро не приняло. Со стороны это выглядит как «нажал кнопку, получил ошибку»; на деле между кнопкой и ошибкой был этап сборки.
Самые частые источники: правило маршрутизации с некорректной записью, конфликтующие настройки DNS и параметры сервера, которых не понимает версия ядра. Если ошибка появилась сразу после того, как вы поменяли настройки, — верните их обратно, это быстрее любых догадок.
Проверьте узел «Доступ» отдельно от остальных
Понять, какая часть схемы отказала, проще всего подстановкой: вставьте в тот же клиент другую, заведомо живую ссылку-подписку. Заработало — приложение, ядро и устройство исправны, вопрос был к доступу. Не заработало — причина выше по схеме, и разбор на этой странице остаётся в силе. Ссылка Happ Plus на 3 дня выдаётся без карты.
- ссылка приходит сразу
- карта не нужна
- проверка занимает две минуты
Что меняется без перезапуска ядра, а что нет
| Изменение | Нужен ли перезапуск | Почему |
|---|---|---|
| Выбор другого сервера | Да | Меняется исходящее соединение — это другое задание |
| Смена правил маршрутизации | Да | Правила читаются при старте |
| Обновление списка серверов | Нет, пока не переключитесь | Меняется только список в приложении |
| Смена темы, языка, настроек интерфейса | Нет | Ядра не касается |
| Продление доступа | Обычно нет | Сервер начинает принимать ваш ключ снова |
Отсюда практический вывод: если вы что-то поменяли и не видите эффекта — переподключитесь. Ядро продолжает работать по старому заданию, пока его не перезапустят.
Можно ли посмотреть это задание?
В некоторых настольных клиентах есть режим экспорта конфигурации или просмотра логов, где документ виден. В мобильных обычно нет.
Можно ли подсунуть ядру своё задание?
В части клиентов есть импорт готовой конфигурации файлом. Это возможность для тех, кто настраивает всё вручную; в обычной работе она не нужна.
Почему после смены сервера иногда рвётся текущая загрузка?
Потому что ядро перезапускается с новым заданием: старые соединения при этом закрываются. Это нормально и не является сбоем.
Схема наверху держится на одном узле, который нельзя починить настройками: серверы приходят из подписки. Есть живой доступ — приложению есть что показать, ядру есть что запустить. Нет — интерфейс исправен, а список пуст. Доступ Happ Plus закрывает этот узел: одна ссылка на все устройства, серверы обновляются сами, первые 3 дня бесплатно и без карты.
Оформить доступ →