Предлагаю добавить в backend Remnawave механизм постоянных персональных назначений: возможность закрепить за пользователем определённую ноду, адрес подключения (IP/домен) или SNI-маршрут. Хотелось бы управлять этим из панели, а применять назначения при генерации подписки независимо от используемой страницы подписки и способа её получения.
Общий пул и сохранение выбора
Администратор создаёт общий пул допустимых подключений, а backend выбирает подходящий элемент и сохраняет привязку к UUID пользователя. При последующих обновлениях пользователь получает свежую подписку, но с тем же назначением, без случайной смены ноды на каждом запросе.
Для начала было бы достаточно случайного распределение в процентном соотношении, backend выбирает элемент при первом получении подписки и сохраняет результат
В дальнейшем можно добавить выбор ближайшей ноды или входного сервера по GeoIP, распределение по весам и лимитам, предпочтения по странам, ручное назначение. Алгоритм первоначального выбора при этом должен быть отделён от сохранения привязки.
Независимые назначения и плейсхолдеры
Важно предусмотреть независимое закрепление входного адреса. Например, пользователь подключается через msk.example.com, а SNI fi-04.example.com указывает на заранее настроенный маршрут (если есть балансировщик); смена входа на spb.example.com не должна автоматически менять закреплённый выход.
Одним из вариантов реализации могли бы стать общие пулы и персональные плейсхолдеры в Hosts/Templates: backend подставляет адрес, порт и SNI из сохранённого назначения. Это предложение нового механизма, а не требование конкретного синтаксиса переменных.
Выбирать желательно целую совместимую запись подключения, а не независимо случайные address и SNI. Назначение должно учитывать учётные данные и TLS/REALITY-параметры, чтобы подстановка не создавала неработающую конфигурацию.
Дальнейшее развитие
Можно предусмотреть несколько независимых назначений одного пользователя: разные хосты В панели было бы удобно видеть текущий выбор, менять его вручную, устанавливать пин и явно запускать перераспределение.
Главная идея: backend хранит назначения и формирует персонализированную подписку, а subscription-page только отображает результат. Закрепление при этом означает сохранение выбранной ноды или маршрута, а не гарантию выделенного внешнего IP.