Несколько секретов на одном MTProto сервере
Один секрет на всех удобен, пока не нужно отключить одного человека или считать трафик по группам. Тогда нужны раздельные секреты: каждому — свой ключ на том же адресе и порту. Серверы в таблице выше работают с одним общим ключом пула; ниже — как сделать иначе на своём.
Возможность зависит от реализации: не все сервера это умеют.
Кто умеет
telemt и подобные реализации на Rust: список пользователей в конфигурации, у каждого свой 32-символьный ключ, домен FakeTLS общий. Официальный MTProxy принимает несколько секретов через повтор параметра -S, но без учёта по ним. mtg — строго один секрет на процесс.
Выбор реализации определяется этим требованием раньше всего остального.
Зачем это нужно
Отозвать доступ одному человеку — удалить его ключ, остальные не заметят. Считать трафик по семье, друзьям, рабочей группе. Выдать разные рекламные теги разным группам, если сервер поддерживает тег на пользователя. Ограничить число соединений на ключ.
Без раздельных секретов любая из этих задач требует смены ключа у всех.
Как выглядит для пользователей
Ничего не меняется: у каждого своя ссылка tg://proxy с тем же адресом и портом, но своим секретом. Клиент не знает, что на сервере есть другие ключи. Домен легенды в хвосте секрета одинаковый у всех.
Сгенерируйте ключи так же, как обычно, — по одному на человека или группу.
Ограничения
Каждый ключ — отдельная проверка подписи при рукопожатии; на десятках ключей это незаметно, на тысячах — заметно. Отдельные ключи не изолируют трафик: все идут с одного IP, и блокировка адреса бьёт по всем. Домен FakeTLS остаётся общим.
Для настоящей изоляции нужны разные IP, а не разные секреты.
Схема для семьи и друзей
Один ключ на семью, второй на друзей, третий на рабочий чат. Каждой группе — своя ссылка с тем же адресом. Когда чья-то ссылка утекает в публичный чат и адрес начинает собирать чужих, вы видите это по счётчику соединений конкретного ключа и просто удаляете его, не трогая остальные группы.
Пользователи ничего не замечают: у их ссылок другой секрет, соединения продолжают работать. Так один сервер обслуживает несколько кругов людей с независимым управлением доступом — то, чего не даёт единый общий секрет.
Ограничения на ключ
У реализаций с пользователями обычно есть лимит одновременных соединений и объёма трафика на ключ. Для семьи ставьте лимит с запасом — несколько десятков соединений на ключ, — чтобы утечка одной ссылки не съела канал у остальных, а ваши собственные устройства не упирались в потолок.
Вопросы и ответы
Можно ли добавить второй секрет в mtg?
Нет, только запустить второй экземпляр на другом порту или IP.
Отзыв ключа отключит человека сразу?
Активные соединения доживут, новые не установятся.
Нужен ли отдельный домен FakeTLS на секрет?
Нет, домен общий для сервера.