Профили
Что такое профиль, как устроен редактор, как профиль ставится на ноды со своим портом и сертификатом и какие изменения ломают уже выданное.
На этой странице
- Профили, ноды и группы
- Протоколы — это плагины
- Список профилей
- Создание профиля
- Где работает
- Постановка профиля на ноды
- Порты и подсказка свободного порта
- Сертификаты
- Проверка до нажатия кнопки
- Ошибки, которые объясняет редактор
- Сохранение изменений и что ломает выданное
- Один и тот же сервер с WARP и без
- Удаление профиля
- Кто что может
Профиль — это настройки протокола с названием: «Hysteria2 · 443 с Salamander и Let's Encrypt», «AmneziaWG 3.1, похожий на DNS». Его делают один раз и ставят на сколько угодно нод; каждая такая постановка — профиль на ноде, то есть сервер, к которому подключаются люди. Люди получают профиль через свою группу. На этой странице — раздел Профили, редактор профиля и постановка профилей на ноды; настройки каждого протокола описаны в разделах Hysteria2 и AmneziaWG.
Профили, ноды и группы#
| Что | Что решает |
|---|---|
| Профиль | Протокол и его настройки: порт, сертификат, обфускацию, выход. |
| Профиль на ноде | Где он работает. Нода может поменять для себя порт и домен (SNI) профиля. |
| Группа | Кто его получит. Группа — это набор профилей; каждый пользователь состоит в одной группе. |
Человек получает сервер, когда выполнено всё сразу: профиль есть в его группе, он стоит на ноде, которой человеку можно пользоваться, этот профиль на ноде включён и работает или запускается, человек активен, а включённое у него приложение умеет этот протокол. Пользователи и группы описаны в разделе Пользователи и группы.
Протоколы — это плагины#
Каждый протокол — плагин панели: сейчас это Hysteria2 и AmneziaWG. Плагин приносит свои настройки в виде схемы, и редактор рисует форму по ней. Поэтому формы всех протоколов устроены одинаково:
- поля разложены по группам Основное, Обфускация и Продвинутое; в заголовке группы видно, сколько изменено («изменено 2») и сколько ошибок («1 ошибка»);
- у чисел подписаны единицы (Мбит/с, с, байт);
- у секретов (пароль обфускации Hysteria2, ключ защиты заголовков AmneziaWG) есть кнопка Сгенерировать. Секрет хранится зашифрованным и больше не показывается: поле пишет «Задан и хранится на сервере, показать его нельзя. Сгенерируй новый, чтобы заменить.»;
- часть полей критичные: если их поменять, у людей перестанут работать уже выданные настройки. Перед сохранением таких изменений редактор переспрашивает, см. ниже.
Список профилей#
Каждый профиль — карточка: название, протокол, короткая строка настроек («UDP 443 · Salamander · Let's Encrypt»), на скольких нодах он работает и сколько пользователей его получают. Жёлтые метки говорят, почему профиль никому не достаётся: Нигде не работает (не стоит ни на одной ноде) и Ни в одной группе. Жёлтая точка предупреждает, что профиль не запустился на какой-то ноде или туда не доходит UDP.
Новый профиль открывает редактор.
Создание профиля#
- Новый профиль. Если протоколов в панели больше одного, выберите его в поле Протокол. Форма начинается с настроек плагина по умолчанию, все секреты уже сгенерированы.
- Название. Пока его не ввели, оно следует за портом: «Hysteria2 · 443». До 64 символов, видно в списках панели.
- Поменяйте нужные настройки. Панель проверяет их по ходу ввода; поле с ошибкой отмечено, а предпросмотр ждёт, пока её исправят.
- Блок Сразу после создания решает, что произойдёт по кнопке:
- Поставить на ноды — отмечены все ноды или только та, с которой вы пришли. Если у профиля Let's Encrypt без домена, блок предупредит о нодах, у которых в адресе IP.
- Добавить в группы — отмечены группы, где ещё нет профиля этого протокола (без него их люди ничего не получат в этом приложении); группы, где он уже есть, не отмечены: второй профиль обычно для проверки или запасной. Если групп нет совсем, предлагается переключатель Создать группу «Все» с этим профилем.
- Создать профиль. Профиль создаётся, добавляется в группы, а затем в том же окне по очереди ставится на ноды. Если какая-то нода отказала, окно остаётся открытым: в нём причина и поле, где это исправить (другой порт, домен).
Панель справа, Как увидит клиент, показывает, что получит клиент для этого профиля, со скрытыми секретами: ссылку для Hysteria2 («Happ · URI list») или файл .conf для AmneziaWG («AmneziaVPN · .conf»).
Где работает#
Страница существующего профиля начинается с блока Где работает: строка о том, работает ли профиль («Работает: 2 ноды, 1 группа, 14 пользователей») или чего не хватает, с кнопкой, которая это исправит, а под ней три столбца:
- Ноды — каждая нода с портом и состоянием профиля на ней и с ошибкой агента, если профиль не запустился. Поставить на ноды добавляет новые.
- Группы — группы, в которых он есть; Изменить открывает группу, Добавить в группу добавляет ещё в одну.
- Пользователи — сколько людей его получают, по группам. Считаются только активные пользователи, у которых включено подходящее приложение.
Постановка профиля на ноды#
Есть два пути с одинаковыми проверками:
- со страницы профиля: Поставить на ноды, отметить ноды (или Все ноды), затем Поставить на N нод;
- со страницы ноды: Профили → Добавить профиль, выбрать профиль, затем Добавить.
Профиль можно поставить на любую ноду флота, в том числе на ту, что ещё ждёт установки; на выведенную — нельзя. Нода на связи получает новое состояние сразу, и профиль запускается за несколько секунд; нода не на связи запустит его, когда вернётся агент.
На ноде у профиля могут быть свои:
- Порт. Пусто — порт из профиля.
- Домен (SNI) (Hysteria2). Пусто — домен из профиля, а если в профиле его нет — адрес ноды, если это домен.
Первый профиль AmneziaWG на ноде вдобавок спрашивает, каким бэкендом AmneziaWG будет пользоваться нода, см. AmneziaWG.
Порты и подсказка свободного порта#
Два профиля не могут слушать один порт на одной ноде, и порт не может попадать в диапазон прыжков другого профиля. Если порт занят, окно сразу подставляет свободный и говорит об этом («Порт 443 занят профилем «Основной» — подставили свободный 8443. Можно вписать свой.»), а кнопка Взять 8443 вернёт его, если вы вписали другое. Панель сначала пробует 8443, 4443, 2053, 2083, 2087 и 2096, потом случайные порты от 10000 до 60000, и диапазоны прыжков считает занятыми.
Порт может держать и программа вне Mistgate. До запуска профиля панель этого не видит: профиль тогда не запустится с ошибкой «Порт 443 занят другой программой», доктор назовёт процесс, если сможет, а Сменить порт откроет окно со свободным портом.
Сертификаты#
У AmneziaWG сертификата нет. У профиля Hysteria2 — один из двух:
| Сертификат | Что нужно | Как его проверяет приложение |
|---|---|---|
| Let's Encrypt | Домен, у которого A-запись указывает на ноду, и порты 80 и 443, открытые из интернета. | Обычным путём: по домену и цепочке доверия. |
| Самоподписанный (с пином) | Ничего: работает и по IP. | По отпечатку SHA-256 сертификата (пину), который приходит в подписке. |
Сертификаты Let's Encrypt нода получает сама и продлевает примерно за месяц до окончания. На проверку она отвечает на TCP 443 (там же профиль Hysteria2 показывает свой сайт-маскировку) и на порту 80, если он свободен. Самоподписанный сертификат делается на ноде и действует 10 лет; нода сделает новый, с новым пином, когда останется меньше 30 дней или поменяется домен (SNI). Новый пин дойдёт до людей при следующем обновлении подписки.
На какое имя выписан сертификат: Домен (SNI) ноды, иначе Домен (SNI) профиля, иначе адрес ноды, если это домен. Для самоподписанного сертификата на ноде с IP в сертификат попадает IP.
Профиль с Let's Encrypt на ноде, у которой адрес — IP, а домен не указан, работать не может. Окно говорит об этом до нажатия кнопки и предлагает два выхода:
- Вписать домен, у которого A-запись указывает на IP ноды;
- перейти на самоподписанный сертификат: Переключить «…» на самоподписанный, если профиль ещё нигде не стоит, или Создать самоподписанный профиль для …, если он уже работает где-то с Let's Encrypt (тот профиль останется как есть).
панель пишет, что самоподписанный сертификат проверен с официальным клиентом Hysteria2 и с Mihomo, а в Happ — ещё нет. Проверьте на своём телефоне, прежде чем на него полагаться.
Проверка до нажатия кнопки#
Пока вы заполняете окно добавления профиля (и окно правки профиля на ноде), панель спрашивает у сервера, пройдёт ли настоящий запрос: примерно через 300 мс после каждого изменения она отправляет тот же запрос с флагом «только проверить». Сервер прогоняет все проверки настоящего запроса и ничего не записывает. Ответ — либо отказ, который окно пишет словами рядом с нужным полем и из-за которого кнопка недоступна, либо профиль таким, каким он будет на этой ноде (его настоящие порт и домен для подсказок в полях), с предупреждениями и свободным портом.
| Код | Когда | Что пишет или делает окно |
|---|---|---|
acme_needs_domain |
Let's Encrypt без домена на ноде с IP | Блок Let's Encrypt с кнопкой Вписать домен и путями к самоподписанному. |
port_taken |
Этот порт слушает другой профиль ноды или порт попадает в его диапазон прыжков | «Порт 443 на de1 уже занят профилем «Основной».» Подставлен свободный порт; Взять N. |
hop_taken |
Собственный диапазон прыжков профиля пересекается с другим профилем на ноде | Пересечение и Открыть профиль: поможет только смена диапазона. |
port_in_hop |
Порт попадает в собственный диапазон прыжков профиля | «Порт должен быть вне диапазона прыжков профиля (20000–30000).» |
sni_needs_domain |
В Домен (SNI) профиля с Let's Encrypt вписан IP | «Для Let's Encrypt здесь нужен домен, а «…» — не домен.» |
sni_invalid |
Ни домен, ни IP | ««…» — не домен и не IP-адрес.» |
already_on_node |
Профиль уже стоит на этой ноде | «Этот профиль уже стоит на этой ноде.» |
node_retired |
Нода выведена из флота | «Нода выведена из флота.» |
Предупреждение кнопку не блокирует. Сейчас оно одно: warp_missing — профиль выходит через WARP, а у ноды нет аккаунта WARP, WARP на ней на паузе или по последнему отчёту ноды туннель лежит. Окно говорит, что профиль там не пропустит трафик, и ведёт к карточке WARP ноды.
Те же коды возвращают API и сервер MCP в виде «код: ключ=значение&ключ=значение», так что их могут читать и скрипты. См. API.
Ошибки, которые объясняет редактор#
Поле, которое отклонил сервер, получает пояснение рядом. На эти случаи у редактора свои слова; для остальных полей и кодов он показывает короткий английский текст сервера.
| Поле | Код | Что пишет редактор |
|---|---|---|
| Порт | out_of_range |
Порт — от 1 до 65535 |
| Прыжки по портам, начало | invalid |
Порт должен быть вне диапазона прыжков |
| Прыжки по портам, начало | out_of_range |
Начало диапазона — от 1024 до 65535, чтобы не задеть SSH и служебные порты |
| Прыжки по портам, конец | too_wide |
В диапазоне не больше 20 000 портов |
| Пароль обфускации | length |
Пароль — от 8 до 128 символов |
| Домен (SNI) | invalid |
Это не похоже на домен |
Для сетей клиентов AmneziaWG показывается текст сервера: сеть пересекается с другим профилем AmneziaWG («overlaps the network of profile …») или её уже нельзя менять («the client network cannot change once the profile is on a node or has devices»).
Сохранение изменений и что ломает выданное#
Полоса внизу считает изменения («Изменено параметров: 3»), рядом Отменить и Сохранить. Сохранённое уходит на все ноды, где стоит профиль («Сохранено · раскатываю на 2 ноды»); профиль там перезапускается, а подключённые через него люди переподключаются сами.
Некоторые поля критичные: нода и приложение должны совпадать в них, поэтому уже выданные людям настройки при их смене перестают работать. Перед сохранением такого изменения редактор спрашивает Применить критичные изменения? и говорит, что будет:
| Протокол | Критичные поля | Что произойдёт |
|---|---|---|
| Hysteria2 | Порт, прыжки по портам, домен (SNI), сертификат, тип и пароль обфускации | Сервер перестанет работать у всех пользователей профиля, пока их приложение не обновит подписку (до интервала обновления, по умолчанию 12 ч). Окно перечисляет затронутых пользователей. |
| AmneziaWG | Версия протокола, порт, сети клиентов, S1–S4, H1–H4, ключ защиты заголовков, случайные хвосты | Все устройства профиля перестанут работать и будут помечены как устаревшие: каждому нужен конфиг заново. Кнопка называется Сменить и перевыдать ключи. |
Для Hysteria2 окно подсказывает два обходных пути: попросить людей обновить подписку вручную или сделать копию профиля на новом порту, а старый убрать позже.
Смена порта профиля AmneziaWG на одной ноде (на вкладке Профили ноды) тоже помечает устройства этого профиля устаревшими: в их конфигах старый порт.
Если кто-то сохранил профиль, пока вы его правили, при сохранении появится «Этот профиль изменили в другом месте» с кнопкой Перезагрузить: панель никогда молча не затирает более новую версию.
Один и тот же сервер с WARP и без#
На странице профиля, под блоком Где работает, кнопка Копия через WARP (или Копия без WARP у профиля, который уже выходит через WARP) делает двойника профиля с другим выходом. Окно перечисляет, что именно будет создано:
- название с добавленным (или убранным) « · WARP»;
- порт, свободный на всех нодах профиля;
- новые пароли и ключи: ничего секретного не копируется; двойник AmneziaWG получает ещё и свою сеть клиентов;
- без прыжков по портам (диапазоны пересеклись бы);
- те же ноды и те же группы. Ноды без рабочего WARP для двойника с WARP перечислены и не отмечены: там он ничего не пропустит.
Сначала сохраните изменения: копия делается из сохранённого профиля. После этого люди из этих групп увидят каждую ноду в приложении дважды. При шаблоне названий по умолчанию второй сервер получит номер («🇩🇪 Германия 2»); чтобы различать их по названию, добавьте в шаблон {profile}, см. Подписки. Для AmneziaWG каждому, кому нужен двойник, нужно отдельное устройство (ключ) для него. Сам WARP описан в разделе WARP.
Удаление профиля#
Опасная зона → Удалить профиль удаляет профиль насовсем, из групп он пропадает. Профиль, который ещё стоит на какой-то ноде, удалить нельзя: окно назовёт эти ноды. Сначала уберите его с них (нода → Профили → Убрать).
Кто что может#
Создавать, менять и удалять профили, ставить их на ноды, снимать с нод и делать двойников может владелец. Добавлять профиль в группу могут владелец и помощники. Смотреть профили может любой админ. См. Безопасность.