165 KiB
Справочник параметров конфигурации Telemt
В этом документе перечислены все ключи конфигурации, принимаемые config.toml.
[!NOTE]
Этот справочник был составлен с помощью искусственного интеллекта и сверен с базой кода (схема конфигурации, значения по умолчанию и логика проверки).
[!WARNING]
Параметры конфигурации, подробно описанные в этом документе, предназначены для опытных пользователей и для целей тонкой настройки. Изменение этих параметров без четкого понимания их функции может привести к нестабильности приложения или другому неожиданному поведению. Пожалуйста, действуйте осторожно и на свой страх и риск.
Содержание
- Ключи верхнего уровня
- general
- general.modes
- general.links
- general.telemetry
- network
- server
- server.conntrack_control
- server.api
- server.listeners
- timeouts
- censorship
- censorship.tls_fetch
- access
- upstreams
Ключи верхнего уровня
| Ключ | Тип | По умолчанию |
|---|---|---|
include |
String (специальная директива) |
— |
show_link |
"*" or String[] |
[] (ShowLink::None) |
dc_overrides |
Map<String, String or String[]> |
{} |
default_dc |
u8 |
— (эффективный резервный вариант: 2 в ME маршрутизации) |
include
-
Ограничения / валидация: значение должно быть одной строкой в виде
include = "path/to/file.toml". Значения параметра обрабатываются перед анализом TOML. Максимальное количество - 10. -
Описание: Включает еще один файл TOML с помощью
include = "relative/or/absolute/path.toml"; добавленные файлы обрабатываются рекурсивно. -
Пример:
include = "secrets.toml"
show_link
-
Ограничения / валидация: принимает
"*"или массив имен пользователей. Пустой массив означает «не показывать никому». -
Описание: Устаревший селектор видимости ссылок (
«*»для всех пользователей или списка имен пользователей). -
Пример:
# show links for all configured users show_link = "*" # or: show links only for selected users # show_link = ["alice", "bob"]
dc_overrides
-
Ограничения / валидация: значение должно быть положительным целым числом в формате строки (например,
"203"). Значения разбираются какSocketAddr(ip:port). Пустые строки игнорируются. -
Описание: Переопределяет DC эндпоинты для запросов с нестандартными DC; задается в виде строки с индексом DC, значение — один или несколько адресов
ip:port. -
Пример:
[dc_overrides] "201" = "149.154.175.50:443" "203" = ["149.154.175.100:443", "91.105.192.100:443"]
default_dc
-
Ограничения / валидация: целочисленное значение в диапазоне
1..=5. Если значение выходит за пределы диапазона, клиент направляется к DC1; Middle-end маршрутизация направляет клиента к DC2, если DC1 не задан. -
Описание: DC по умолчанию, используемый для нестандартных DC. Когда клиент запрашивает неизвестный/нестандартный DC без переопределения, telemt направляет его в этот кластер по умолчанию.
-
Пример:
# When a client requests an unknown/non-standard DC with no override, # route it to this default cluster (1..=5). default_dc = 2
[general]
data_path
-
Ограничения / валидация:
String(необязательный параметр). -
Описание: Необязательный путь к каталогу данных состояния telemt.
-
Пример:
[general] data_path = "/var/lib/telemt"
prefer_ipv6
-
Ограничения / валидация: Устарело. Используйте
network.prefer. -
Описание: Устаревший флаг предпочтения IPv6 перенесен в
network.prefer. -
Пример:
[network] prefer = 6
fast_mode
-
Ограничения / валидация:
bool. -
Описание: Включает оптимизированные маршруты для обработки трафика.
-
Пример:
[general] fast_mode = true
use_middle_proxy
-
Ограничения / валидация:
bool. -
Описание: Включает режим ME; если значение
false, telemt возвращается к прямой DC-маршрутизации. -
Пример:
[general] use_middle_proxy = true
proxy_secret_path
-
Ограничения / валидация:
String. Если этот параметр не указан, используется путь по умолчанию — «proxy-secret». Пустые значения принимаются TOML/serde, но во время выполнения произойдет ошибка (invalid file path). -
Описание: Путь к файлу кэша
proxy-secretинфраструктуры Telegram, используемому ME-handshake/аутентификацией RPC. Telemt всегда сначала пытается выполнить новую загрузку с https://core.telegram.org/getProxySecret, в случае успеха кэширует ее по этому пути и возвращается к чтению кэшированного файла в случае сбоя загрузки. -
Пример:
[general] proxy_secret_path = "proxy-secret"
proxy_config_v4_cache_path
-
Ограничения / валидация:
String. Если используется, значение не должно быть пустым или содержать только пробелы. -
Описание: Необязательный путь к кэшу для необработанного (raw) снимка getProxyConfig (IPv4). При запуске Telemt сначала пытается получить свежий снимок; в случае сбоя выборки или пустого снимка он возвращается к этому файлу кэша, если он присутствует и не пуст.
-
Пример:
[general] proxy_config_v4_cache_path = "cache/proxy-config-v4.txt"
proxy_config_v6_cache_path
-
Ограничения / валидация:
String. Если используется, значение не должно быть пустым или содержать только пробелы. -
Описание: Необязательный путь к кэшу для необработанного (raw) снимка getProxyConfigV6 (IPv6). При запуске Telemt сначала пытается получить свежий снимок; в случае сбоя выборки или пустого снимка он возвращается к этому файлу кэша, если он присутствует и не пуст.
-
Пример:
[general] proxy_config_v6_cache_path = "cache/proxy-config-v6.txt"
ad_tag
-
Ограничения / валидация:
String(необязательный параметр). Если используется, значение должно быть ровно 32 символа в шестнадцатеричной системе; недопустимые значения отключаются во время загрузки конфигурации. -
Описание: Глобальный резервный спонсируемый канал
ad_tag(используется, когда у пользователя нет переопределения вaccess.user_ad_tags). Тег со всеми нулями принимается, но не имеет никакого эффекта, пока не будет заменен реальным тегом от@MTProxybot. -
Пример:
[general] ad_tag = "00112233445566778899aabbccddeeff"
middle_proxy_nat_ip
-
Ограничения / валидация:
IpAddr(необязательный параметр). -
Описание: При установке этого параметра указанное значение публичного IP-адреса NAT используется в качестве адреса ME.
-
Пример:
[general] middle_proxy_nat_ip = "203.0.113.10"
middle_proxy_nat_probe
-
Ограничения / валидация:
bool. Возможность проверки ограничивается значением параметраnetwork.stun_use(когдаnetwork.stun_use = false, STUN-проверка отключается, даже если этот флаг имеет значениеtrue). -
Описание: Позволяет проверить NAT на основе STUN для обнаружения общедоступного IP, используемого при получении ключа ME в средах NAT.
-
Пример:
[general] middle_proxy_nat_probe = true
middle_proxy_nat_stun
-
Ограничения / валидация: Устарело. Используйте
network.stun_servers. -
Описание: Устаревший сервер STUN для проверки NAT. Во время загрузки конфигурации он объединяется с
network.stun_servers, еслиnetwork.stun_serversне задан явно. -
Пример:
[network] stun_servers = ["stun.l.google.com:19302"]
middle_proxy_nat_stun_servers
-
Ограничения / валидация: Устарело. Используйте
network.stun_servers. -
Описание: Устаревший список STUN серверов для проверки NAT-fallback. Во время загрузки конфигурации значение параметра объединяется с
network.stun_servers, еслиnetwork.stun_serversне задан явно. -
Пример:
[network] stun_servers = ["stun.l.google.com:19302"]
stun_nat_probe_concurrency
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Максимальное количество параллельных тестов STUN для обнаружения NAT/публичного эндпоинта.
-
Пример:
[general] stun_nat_probe_concurrency = 8
middle_proxy_pool_size
-
Ограничения / валидация:
usize. -
Описание: Размер пула записи ME.
-
Пример:
[general] middle_proxy_pool_size = 8
middle_proxy_warm_standby
-
Ограничения / валидация:
usize. -
Описание: Количество предварительно инициализированных резервных подключений ME.
-
Пример:
[general] middle_proxy_warm_standby = 16
me_init_retry_attempts
-
Ограничения / валидация:
0..=1_000_000(0означает неограниченное количество повторов). -
Описание: Количество повторных попыток инициализации пула ME.
-
Пример:
[general] me_init_retry_attempts = 0
me2dc_fallback
-
Ограничения / валидация:
bool. -
Описание: Перейти из режима ME в режим прямого соединения (DC) в случае сбоя запуска ME.
-
Пример:
[general] me2dc_fallback = true
me2dc_fast
-
Ограничения / валидация:
bool. Используется только, когдаuse_middle_proxy = trueиme2dc_fallback = true. -
Описание: Режим для быстрого перехода между режимами ME->DC для новых сеансов.
-
Пример:
[general] use_middle_proxy = true me2dc_fallback = true me2dc_fast = false
me_keepalive_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает периодическое добавление дополнительных кадров для ME keepalive-сообщений.
-
Пример:
[general] me_keepalive_enabled = true
me_keepalive_interval_secs
-
Ограничения / валидация:
u64(секунд). -
Описание: Базовый интервал ME keepalive-сообщений в секундах.
-
Пример:
[general] me_keepalive_interval_secs = 8
me_keepalive_jitter_secs
-
Ограничения / валидация:
u64(секунд). -
Описание: Случайная задержка (джиттер) keepalive-сообщений в секундах, которая используется для уменьшения синхронных "всплесков" нагрузки.
-
Пример:
[general] me_keepalive_jitter_secs = 2
me_keepalive_payload_random
-
Ограничения / валидация:
bool. -
Описание: Заполняет данные (payload) keepalive-пакетов случайными байтами вместо фиксированных нулей.
-
Пример:
[general] me_keepalive_payload_random = true
rpc_proxy_req_every
-
Ограничения / валидация:
0или в пределах10..=300(секунд). -
Описание: Интервал для отправки сигналов активности службы
RPC_PROXY_REQдля ME (0отключает). -
Пример:
[general] rpc_proxy_req_every = 0
me_writer_cmd_channel_capacity
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Ёмкость (размер) канала команд для каждого отправителя.
-
Пример:
[general] me_writer_cmd_channel_capacity = 4096
me_route_channel_capacity
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Количество ответов от ME, которое может одновременно находиться “в пути” или в очереди для одного соединения.
-
Пример:
[general] me_route_channel_capacity = 768
me_c2me_channel_capacity
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Емкость очереди команд для каждого клиента (client reader -> ME sender).
-
Пример:
[general] me_c2me_channel_capacity = 1024
me_c2me_send_timeout_ms
-
Ограничения / валидация:
0..=60000(миллисекунд). -
Описание: Максимальное ожидание постановки в очередь команд client->ME, если очередь для каждого клиента заполнена (
0сохраняет устаревшее неограниченное ожидание). -
Пример:
[general] me_c2me_send_timeout_ms = 4000
me_reader_route_data_wait_ms
-
Ограничения / валидация:
0..=20(миллисекунд). -
Описание: Ограничение времени ожидания при маршрутизации данных ME в очереди конкретного соединения (0 = без ожидания).
-
Пример:
[general] me_reader_route_data_wait_ms = 2
me_d2c_flush_batch_max_frames
-
Ограничения / валидация: Должно быть в пределах
1..=512. -
Описание: Максимальное количество кадров (фреймов) от ME к клиенту, объединяемых перед отправкой.
-
Пример:
[general] me_d2c_flush_batch_max_frames = 32
me_d2c_flush_batch_max_bytes
-
Ограничения / валидация: Должно быть в пределах
4096..=2097152(байт). -
Описание: Максимальный объём данных (в байтах) от ME к клиенту, который можно объединить перед отправкой.
-
Пример:
[general] me_d2c_flush_batch_max_bytes = 131072
me_d2c_flush_batch_max_delay_us
-
Ограничения / валидация:
0..=5000(миллисекунд). -
Описание: Максимальное время ожидания (в миллисекундах) для накопления дополнительных фреймов от ME к клиенту перед отправкой (0 = без ожидания).
-
Пример:
[general] me_d2c_flush_batch_max_delay_us = 500
me_d2c_ack_flush_immediate
-
Ограничения / валидация:
bool. -
Описание: Сбрасывать буфер записи клиента сразу после быстрой отправки подтверждения (quick-ack).
-
Пример:
[general] me_d2c_ack_flush_immediate = true
me_quota_soft_overshoot_bytes
-
Ограничения / валидация:
0..=16777216(байт). -
Описание: Дополнительный допустимый объём (в байтах) на маршрут, который разрешён сверх квоты, прежде чем механизм записи начнёт принудительно отбрасывать данные этого маршрута.
-
Пример:
[general] me_quota_soft_overshoot_bytes = 65536
me_d2c_frame_buf_shrink_threshold_bytes
-
Ограничения / валидация: Должно быть в пределах
4096..=16777216(байт). -
Описание: Порог, при котором слишком большие буферы агрегации фреймов ME>client уменьшаются (сжимаются) после отправки.
-
Пример:
[general] me_d2c_frame_buf_shrink_threshold_bytes = 262144
direct_relay_copy_buf_c2s_bytes
-
Ограничения / валидация: Должно быть в пределах
4096..=1048576(байт). -
Описание: Размер буфера копирования для направления client > DC в режиме прямой пересылки (direct relay).
-
Пример:
[general] direct_relay_copy_buf_c2s_bytes = 65536
direct_relay_copy_buf_s2c_bytes
-
Ограничения / валидация: Должно быть в пределах
8192..=2097152(байт). -
Описание: CoРазмер буфера копирования для направления DC > клиент в режиме прямой пересылки (direct relay).
-
Пример:
[general] direct_relay_copy_buf_s2c_bytes = 262144
crypto_pending_buffer
-
Ограничения / валидация:
usize(байт). -
Описание:Максимальный объём ожидающих (неотправленных) зашифрованных данных в буфере client writer (в байтах).
-
Пример:
[general] crypto_pending_buffer = 262144
max_client_frame
-
Ограничения / валидация:
usize(байт). -
Описание: Максимально допустимый размер кадра MTProto клиента (в байтах).
-
Пример:
[general] max_client_frame = 16777216
desync_all_full
-
Ограничения / валидация:
bool. -
Описание: Создавать полные журналы крипто-рассинхронизации для каждого события
-
Пример:
[general] desync_all_full = false
beobachten
-
Ограничения / валидация:
bool. -
Описание: Включает "криминалистическое" наблюдения для каждого IP-адреса. Анализирует поведение всех подключений и записывает возможные типы клиентов, которые посылают active-probing запросы.
-
Пример:
[general] beobachten = true
beobachten_minutes
-
Ограничения / валидация: Должно быть
> 0(минут). -
Описание: Время хранения (минуты) для сегментов наблюдения по каждому IP-адресу.
-
Пример:
[general] beobachten_minutes = 10
beobachten_flush_secs
-
Ограничения / валидация: Должно быть
> 0(секунд). -
Описание: Время удаления моментального снимка (в секундах) для файла наблюдения.
-
Пример:
[general] beobachten_flush_secs = 15
beobachten_file
-
Ограничения / валидация: Не должно быть пустым или содержать только пробелы.
-
Описание: Путь к выходному снэпшоту наблюдения.
-
Пример:
[general] beobachten_file = "cache/beobachten.txt"
hardswap
-
Ограничения / валидация:
bool. -
Описание: Включить стратегию ME-hardswap на основе генерации.
-
Пример:
[general] hardswap = true
me_warmup_stagger_enabled
-
Ограничения / валидация:
bool. -
Описание: Распределить во времени дополнительные стадии "прогрева" ME, чтобы избежать всплесков нагрузки на соединения.
-
Пример:
[general] me_warmup_stagger_enabled = true
me_warmup_step_delay_ms
-
Ограничения / валидация:
u64(миллисекунд). -
Описание: Базовая задержка в миллисекундах между этапами "прогрева".
-
Пример:
[general] me_warmup_step_delay_ms = 500
me_warmup_step_jitter_ms
-
Ограничения / валидация:
u64(миллисекунд). -
Описание: Дополнительная случайная задержка (джиттер) в миллисекундах для шагов "прогрева".
-
Пример:
[general] me_warmup_step_jitter_ms = 300
me_reconnect_max_concurrent_per_dc
-
Ограничения / валидация:
u32. -
Описание: Ограничить количество одновременно работающих процессов переподключения (reconnect workers) к DC во время восстановления работоспособности.
-
Пример:
[general] me_reconnect_max_concurrent_per_dc = 8
me_reconnect_backoff_base_ms
-
Ограничения / валидация:
u64(миллисекунд). -
Описание: Базовая задержка повторного подключения в миллисекундах.
-
Пример:
[general] me_reconnect_backoff_base_ms = 500
me_reconnect_backoff_cap_ms
-
Ограничения / валидация:
u64(миллисекунд). -
Описание: Максимальная задержка повторного подключения в миллисекундах.
-
Пример:
[general] me_reconnect_backoff_cap_ms = 30000
me_reconnect_fast_retry_count
-
Ограничения / валидация:
u32. -
Описание: Лимит немедленных повторных попыток подключения перед тем, как включается долгий backoff (увеличивающаяся задержка между попытками).
-
Пример:
[general] me_reconnect_fast_retry_count = 16
me_single_endpoint_shadow_writers
-
Ограничения / валидация: Должно быть в пределах
0..=32. -
Описание: Количество дополнительных резервных writer-процессов для групп DC, у которых есть только один конечный узел (endpoint).
-
Пример:
[general] me_single_endpoint_shadow_writers = 2
me_single_endpoint_outage_mode_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает агрессивный режим восстановления после сбоя для групп DC, когда доступен только один endpoint.
-
Пример:
[general] me_single_endpoint_outage_mode_enabled = true
me_single_endpoint_outage_disable_quarantine
-
Ограничения / валидация:
bool. -
Описание: Игнорировать карантин endpoint’а в режиме сбоя, когда доступен только один endpoint.
-
Пример:
[general] me_single_endpoint_outage_disable_quarantine = true
me_single_endpoint_outage_backoff_min_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд) и меньше или равноme_single_endpoint_outage_backoff_max_ms. -
Описание: Минимальная задержка между повторными попытками переподключения (reconnect backoff) в режиме сбоя с единственным endpoint’ом.
-
Пример:
[general] me_single_endpoint_outage_backoff_min_ms = 250
me_single_endpoint_outage_backoff_max_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд) и больше или равноme_single_endpoint_outage_backoff_min_ms. -
Описание: Максимальная задержка между попытками переподключения (reconnect backoff) в режиме сбоя с единственным endpoint’ом.
-
Пример:
[general] me_single_endpoint_outage_backoff_max_ms = 3000
me_single_endpoint_shadow_rotate_every_secs
-
Ограничения / валидация:
u64(секунды).0отключает периодическую ротацию. -
Описание: Интервал периодической ротации резервного (shadow) writer’а для DC-групп с единственным endpoint’ом
-
Пример:
[general] me_single_endpoint_shadow_rotate_every_secs = 900
me_floor_mode
-
Ограничения / валидация:
"static"или"adaptive". -
Описание: Режим политики нижнего порога (минимального ограничения) для целевых узлов/получателей ME writer’а.
-
Пример:
[general] me_floor_mode = "adaptive"
me_adaptive_floor_idle_secs
-
Ограничения / валидация:
u64(секунды). -
Описание: Время простоя, после которого адаптивный нижний порог (adaptive floor) может уменьшить целевой лимит writer’а для единственного endpoint’а.
-
Пример:
[general] me_adaptive_floor_idle_secs = 90
me_adaptive_floor_min_writers_single_endpoint
-
Ограничения / валидация: Должно быть в пределах
1..=32. -
Описание: Минимально допустимое количество writer’ов в DC-группах с одним endpoint’ом в режиме адаптивного нижнего порога (adaptive floor).
-
Пример:
[general] me_adaptive_floor_min_writers_single_endpoint = 1
me_adaptive_floor_min_writers_multi_endpoint
-
Ограничения / валидация: Должно быть в пределах
1..=32. -
Описание: Минимально допустимое количество writer’ов в DC-группах с несколькими endpoint’ами в режиме адаптивного нижнего порога (adaptive floor).
-
Пример:
[general] me_adaptive_floor_min_writers_multi_endpoint = 1
me_adaptive_floor_recover_grace_secs
-
Ограничения / валидация:
u64(секунды). -
Описание: Период “льготного ожидания”, в течение которого сохраняется фиксированный (static) нижний порог после появления активности в адаптивном режиме
-
Пример:
[general] me_adaptive_floor_recover_grace_secs = 180
me_adaptive_floor_writers_per_core_total
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Глобальный лимит записи ME writer’а на каждое логическое CPU-ядро в адаптивном режиме.
-
Пример:
[general] me_adaptive_floor_writers_per_core_total = 48
me_adaptive_floor_cpu_cores_override
-
Ограничения / валидация:
u16.0- использовать автоматическое обнаружение во время выполнения. -
Описание: Переопределить количество логических CPU-ядер, используемых при расчёте адаптивного нижнего порога (adaptive floor).
-
Пример:
[general] me_adaptive_floor_cpu_cores_override = 0
me_adaptive_floor_max_extra_writers_single_per_core
-
Ограничения / валидация:
u16. -
Описание: Максимальное количество дополнительных writer-процессов на одно CPU-ядро сверх базового требуемого уровня для DC-групп с единственным endpoint’ом.
-
Пример:
[general] me_adaptive_floor_max_extra_writers_single_per_core = 1
me_adaptive_floor_max_extra_writers_multi_per_core
-
Ограничения / валидация:
u16. -
Описание: Максимальное количество дополнительных writer-процессов на одно CPU-ядро сверх базового требуемого уровня для DC-групп с несколькими endpoint’ами.
-
Пример:
[general] me_adaptive_floor_max_extra_writers_multi_per_core = 2
me_adaptive_floor_max_active_writers_per_core
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Лимит количества ME writer-процессов на одно логическое CPU-ядро.
-
Пример:
[general] me_adaptive_floor_max_active_writers_per_core = 64
me_adaptive_floor_max_warm_writers_per_core
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Лимит количества “разогретых” (warm) ME writer-процессов на одно логическое CPU-ядро.
-
Пример:
[general] me_adaptive_floor_max_warm_writers_per_core = 64
me_adaptive_floor_max_active_writers_global
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Глобальный лимит количества ME writer-процессов.
-
Пример:
[general] me_adaptive_floor_max_active_writers_global = 256
me_adaptive_floor_max_warm_writers_global
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Глобальный лимит количества “разогретых” (warm) ME writer-процессов.
-
Пример:
[general] me_adaptive_floor_max_warm_writers_global = 256
upstream_connect_retry_attempts
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Количество попыток подключения к выбранному upstream'у перед тем, как вернуть ошибку или перейти к fallback.
-
Пример:
[general] upstream_connect_retry_attempts = 2
upstream_connect_retry_backoff_ms
-
Ограничения / валидация:
u64(миллисекунды).0- отключает задержку отсрочки (повторные попытки становятся немедленными). -
Описание: Задержка в миллисекундах между попытками подключения к upstream.
-
Пример:
[general] upstream_connect_retry_backoff_ms = 100
upstream_connect_budget_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Общий лимит времени (в миллисекундах), измеряемый по реальному времени (wall-clock), на одну попытку подключения к upstream с учётом всех повторных попыток.
-
Пример:
[general] upstream_connect_budget_ms = 3000
upstream_unhealthy_fail_threshold
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Количество неудачных запросов подряд, после которого upstream помечается, как неработоспособный.
-
Пример:
[general] upstream_unhealthy_fail_threshold = 5
upstream_connect_failfast_hard_errors
-
Ограничения / валидация:
bool. -
Описание: Если включено (true), telemt пропускает дополнительные повторные попытки для постоянных ошибок подключения к upstream.
-
Пример:
[general] upstream_connect_failfast_hard_errors = false
stun_iface_mismatch_ignore
-
Ограничения / валидация:
bool. -
Описание: Флаг совместимости, зарезервированный для будущего использования. Сейчас этот параметр читается (парсится), но не используется средой выполнения.
-
Пример:
[general] stun_iface_mismatch_ignore = false
unknown_dc_log_path
-
Ограничения / валидация:
String(необязательный параметр). Путь должен быть без..и с существующим родительским каталогом, иначе он будет отклонён во время выполнения. -
Описание: Путь к файлу логов для неизвестных (нестандартных) DC-запросов, который используется только если
unknown_dc_file_log_enabled = true. Чтобы отключить файловое логирование, не указывйте этот параметр. -
Пример:
[general] unknown_dc_log_path = "unknown-dc.txt"
unknown_dc_file_log_enabled
-
Ограничения / валидация:
bool. -
Описание: Включить файловое логирование неизвестных DC (записывает строки вида
dc_idx=<N>). Требует, чтобы был заданunknown_dc_log_path. На не-Unix платформах может не поддерживаться. Логирование очищается от дубликатов и имеет ограничения: записываются только первые ~1024 уникальных неизвестных DC-индексов. -
Пример:
[general] unknown_dc_file_log_enabled = false
log_level
-
Ограничения / валидация:
"debug","verbose","normal", или"silent". -
Описание: Уровень детализации логов во время работы системы, который используется только если переменная окружения
RUST_LOGне задана. ЕслиRUST_LOGзадана, она имеет приоритет и переопределяет этот параметр. -
Пример:
[general] log_level = "normal"
disable_colors
-
Ограничения / валидация:
bool. -
Описание: Отключает ANSI-цвета в логах. Это влияет только на форматирование вывода и не меняет уровень логирования и фильтрацию сообщений..
-
Пример:
[general] disable_colors = false
me_socks_kdf_policy
-
Ограничения / валидация:
"strict"или"compat". -
Описание: Политика fallback-поведения KDF, привязанная к SOCKS, для Middle-End-handshake.
-
Пример:
[general] me_socks_kdf_policy = "strict"
me_route_backpressure_base_timeout_ms
-
Ограничения / валидация: Должно быть в пределах
1..=5000(миллисекунд). -
Описание: Базовый таймаут (в миллисекундах) ожидания при режиме backpressure (ситуация, при которой данные обрабатываются медленне, чем получаются) для отправки через ME route-channel.
-
Пример:
[general] me_route_backpressure_base_timeout_ms = 25
me_route_backpressure_high_timeout_ms
-
Ограничения / валидация: Должно быть в пределах
1..=5000(миллисекунд) и больше или равноme_route_backpressure_base_timeout_ms. -
Описание: Увеличенный таймаут ожидания (в миллисекундах) при режиме backpressure, когда заполненность очереди превышает порог.
-
Пример:
[general] me_route_backpressure_high_timeout_ms = 120
me_route_backpressure_high_watermark_pct
-
Ограничения / валидация: Должно быть в пределах
1..=100(процентов). -
Описание: Порог заполненности очереди (в процентах), при превышении которого система переключается на увеличенный таймаут backpressure.
-
Пример:
[general] me_route_backpressure_high_watermark_pct = 80
me_health_interval_ms_unhealthy
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Интервал проверки состояния (health monitoring), который используется, когда покрытие ME-writer’ов ухудшено (деградировало).
-
Пример:
[general] me_health_interval_ms_unhealthy = 1000
me_health_interval_ms_healthy
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Интервал проверки состояния (health monitoring), который используется, когда покрытие ME-writer’ов стабильно.
-
Пример:
[general] me_health_interval_ms_healthy = 3000
me_admission_poll_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Интервал опроса (polling interval) для проверки состояния приема при выполнении условий (conditional admission).
-
Пример:
[general] me_admission_poll_ms = 1000
me_warn_rate_limit_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Период "затухания" (cooldown) для повторяющихся предупреждающих логов ME, чтобы ограничить их частоту.
-
Пример:
[general] me_warn_rate_limit_ms = 5000
me_route_no_writer_mode
-
Ограничения / валидация:
"async_recovery_failfast","inline_recovery_legacy", or"hybrid_async_persistent". -
Описание: Поведение ME-маршрута, когда ни один writer не доступен.
-
Пример:
[general] me_route_no_writer_mode = "hybrid_async_persistent"
me_route_no_writer_wait_ms
-
Ограничения / валидация: Должно быть в пределах
10..=5000(миллисекунды). -
Описание: Максимальное время ожидания, используемое в режиме async-recovery failfast перед переходом к fallback.
-
Пример:
[general] me_route_no_writer_wait_ms = 250
me_route_hybrid_max_wait_ms
-
Ограничения / валидация: Должно быть в пределах
50..=60000(миллисекунд). -
Описание: Максимальное суммарное время ожидания в гибридном режиме без writer’а перед failfast fallback.
-
Пример:
[general] me_route_hybrid_max_wait_ms = 3000
me_route_blocking_send_timeout_ms
-
Ограничения / валидация: Должно быть в пределах
0..=5000(миллисекунд).0- неограниченное время ожидания. -
Описание: Максимальное время ожидания для блокировки отправки через канал маршрутизации при fallback.
-
Пример:
[general] me_route_blocking_send_timeout_ms = 250
me_route_inline_recovery_attempts
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Количество попыток inline-восстановления в legacy-режиме
-
Пример:
[general] me_route_inline_recovery_attempts = 3
me_route_inline_recovery_wait_ms
-
Ограничения / валидация: Должно быть в пределах
10..=30000(миллисекунд). -
Описание: Максимальное время ожидания inline-восстановления в legacy-режиме.
-
Пример:
[general] me_route_inline_recovery_wait_ms = 3000
fast_mode_min_tls_record
-
Ограничения / валидация:
usize(bytes).0disables the limit. -
Описание: Минимальный размер TLS-записи при включённой агрегации fast-mode.
-
Пример:
[general] fast_mode_min_tls_record = 0
update_every
-
Ограничения / валидация:
u64(секунд). Должно быть> 0. Если этот ключ не задан явно, могут использоваться устаревшие параметрыproxy_secret_auto_reload_secsиproxy_config_auto_reload_secs(их эффективное минимальное значение должно быть> 0). -
Описание: Унифицированный интервал обновления задач ME-updater’а (getProxyConfig, getProxyConfigV6, getProxySecret). При установке переопределяет устаревшие интервалы автообновления прокси-сервера.
-
Пример:
[general] update_every = 300
me_reinit_every_secs
-
Ограничения / валидация: Должно быть
> 0(секунд). -
Описание: Интервал для выполнения цикла повторной инициализации ME с нулевым временем простоя.
-
Пример:
[general] me_reinit_every_secs = 900
me_hardswap_warmup_delay_min_ms
-
Ограничения / валидация:
u64(миллисекунд). Должно быть<= me_hardswap_warmup_delay_max_ms. -
Описание: Нижняя граница задержки между шагами "прогрева" при "принудительном" изменении состояния.
-
Пример:
[general] me_hardswap_warmup_delay_min_ms = 1000
me_hardswap_warmup_delay_max_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Верхняя граница задержки между шагами "прогрева" при "принудительном" изменении состояния.
-
Пример:
[general] me_hardswap_warmup_delay_max_ms = 2000
me_hardswap_warmup_extra_passes
-
Ограничения / валидация: Должно быть в пределах
[0, 10]. -
Описание: Количество дополнительных циклов "прогрева" сверх базового при "принудительном" изменении состояния.
-
Пример:
[general] # default: 3 (allowed range: 0..=10) me_hardswap_warmup_extra_passes = 3
me_hardswap_warmup_pass_backoff_base_ms
-
Ограничения / валидация:
u64(миллисекунд). Должно быть> 0. -
Описание: Базовая задержка повторной попытки между дополнительными проходами "прогрева" при "принудительном" изменении состояния, если нижний порог ещё не достигнут.
-
Пример:
[general] # default: 500 me_hardswap_warmup_pass_backoff_base_ms = 500
me_config_stable_snapshots
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Количество одинаковых подряд снимков конфигурации ME, необходимых для применения изменений.
-
Пример:
[general] # require 3 identical snapshots before applying ME endpoint map updates me_config_stable_snapshots = 3
me_config_apply_cooldown_secs
-
Ограничения / валидация:
u64. -
Описание: Время восстановления между примененными обновлениями карты конечных точек ME.
0отключает время восстановления. -
Пример:
[general] # allow applying stable snapshots immediately (no cooldown) me_config_apply_cooldown_secs = 0
me_snapshot_require_http_2xx
-
Ограничения / валидация:
bool. -
Описание: Требовать HTTP-ответы 2xx для применения снимков конфигурации ME. Если
false, не-2xx ответы также могут быть проанализированы/учтены программой обновления. -
Пример:
[general] # allow applying snapshots even when the HTTP status is non-2xx me_snapshot_require_http_2xx = false
me_snapshot_reject_empty_map
-
Ограничения / валидация:
bool. -
Описание: Отклоняет пустые snapshot-конфигурации ME (без endpoint’ов). Если установлено значение
false, пустой snapshot может быть применён (при выполнении других условий), что может временно очистить или уменьшить карту ME. -
Пример:
[general] # allow applying empty snapshots (use with care) me_snapshot_reject_empty_map = false
me_snapshot_min_proxy_for_lines
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Минимальное количество проанализированных строк
proxy_for, необходимое для принятия снимка. -
Пример:
[general] # require at least 10 proxy_for rows before accepting a snapshot me_snapshot_min_proxy_for_lines = 10
proxy_secret_stable_snapshots
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Количество идентичных снимков с секретом прокси-сервера, необходимых для ротации.
-
Пример:
[general] # require 2 identical getProxySecret snapshots before rotating at runtime proxy_secret_stable_snapshots = 2
proxy_secret_rotate_runtime
-
Ограничения / валидация:
bool. -
Описание: Включает ротацию proxy-secret на основе снапшотов, получаемых от обновляющего компонента.
-
Пример:
[general] # disable runtime proxy-secret rotation (startup still uses proxy_secret_path/proxy_secret_len_max) proxy_secret_rotate_runtime = false
me_secret_atomic_snapshot
-
Ограничения / валидация:
bool. -
Описание: Сохраняет селекторные и секретные байты из одного и того же снимка атомарно. Если
general.use_middle_proxy = true, автоматически включается при загрузке конфигурации для согласованности KDF-данных ME. -
Пример:
[general] # NOTE: when use_middle_proxy=true, Telemt will auto-enable this during load me_secret_atomic_snapshot = false
proxy_secret_len_max
-
Ограничения / валидация: Должно быть в пределах
[32, 4096]. -
Описание: Верхний предел длины (в байтах) принимаемого proxy-secret во время запуска и обновления.
-
Пример:
[general] # default: 256 (bytes) proxy_secret_len_max = 256
me_pool_drain_ttl_secs
-
Ограничения / валидация:
u64(секунды).0- отключает период drain-TTL и подавляет предупреждения drain-TTL для ненулевых (непустых) writer’ов, находящихся в состоянии draining. -
Описание: Временной интервал Drain-TTL для устаревших ME writer’ов после изменения карты endpoint’ов. В течение TTL устаревшие writer’ы могут использоваться только как fallback для новых биндов (в зависимости от политики биндов).
-
Пример:
[general] # disable drain TTL (draining writers won't emit "past drain TTL" warnings) me_pool_drain_ttl_secs = 0
me_instadrain
-
Ограничения / валидация:
bool. -
Описание: Принудительно удаляет устаревшие writer’ы на следующем цикле очистки, обходя TTL и таймаут ожидания.
-
Пример:
[general] # default: false me_instadrain = false
me_pool_drain_threshold
-
Ограничения / валидация:
u64. Установите значение0, чтобы отключить очистку на основе пороговых значений. -
Описание: Максимальное количество устаревших writer’ов, после которого самые старые принудительно закрываются в пакетном режиме.
-
Пример:
[general] # default: 32 me_pool_drain_threshold = 32
me_pool_drain_soft_evict_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает постепенное удаление устаревших writer’ов во время очистки/повторной инициализации вместо их немедленного закрытия.
-
Пример:
[general] # default: true me_pool_drain_soft_evict_enabled = true
me_pool_drain_soft_evict_grace_secs
-
Ограничения / валидация:
u64(секунд). Должно быть в пределах[0, 3600]. -
Описание: Дополнительный период ожидания после TTL перед началом этапа мягкого удаления.
-
Пример:
[general] # default: 10 me_pool_drain_soft_evict_grace_secs = 10
me_pool_drain_soft_evict_per_writer
-
Ограничения / валидация:
1..=16. -
Описание: Максимальное количество устаревших маршрутов, вытесняемых за один проход мягкого удаления на один writer.
-
Пример:
[general] # default: 2 me_pool_drain_soft_evict_per_writer = 2
me_pool_drain_soft_evict_budget_per_core
-
Ограничения / валидация:
1..=64. -
Описание: Лимиты работы мягкого удаления на одно CPU-ядро за один проход.
-
Пример:
[general] # default: 16 me_pool_drain_soft_evict_budget_per_core = 16
me_pool_drain_soft_evict_cooldown_ms
-
Ограничения / валидация:
u64(миллисекунд). Должно быть> 0. -
Описание: Время восстановления между повторяющимися мягкими удалениями одного и того же writer’а.
-
Пример:
[general] # default: 1000 me_pool_drain_soft_evict_cooldown_ms = 1000
me_bind_stale_mode
-
Ограничения / валидация:
"never","ttl"или"always". -
Описание: Политика разрешения новых биндов к устаревшим writer’ам.
-
Пример:
[general] # allow stale binds only for a limited time window me_bind_stale_mode = "ttl"
me_bind_stale_ttl_secs
-
Ограничения / валидация:
u64. -
Описание: TTL для разрешения биндов к устаревшим writer’ам при режиме
ttl. -
Пример:
[general] me_bind_stale_mode = "ttl" me_bind_stale_ttl_secs = 90
me_pool_min_fresh_ratio
-
Ограничения / валидация: Должно быть в пределах
[0.0, 1.0]. -
Описание: Минимальный коэффициент актуального (fresh) покрытия DC перед началом удаления устаревших writer’ов.
-
Пример:
[general] # require >=90% desired-DC coverage before draining stale writers me_pool_min_fresh_ratio = 0.9
me_reinit_drain_timeout_secs
-
Ограничения / валидация:
u64.0- используется безопасный системный fallback. Если значение> 0и< me_pool_drain_ttl_secs, повышает его до значения TTL. -
Описание: Таймаут принудительного закрытия устаревших writer’ов при очистке/повторной инициализации. При
0используется безопасный системный fallback (300 секунд). -
Пример:
[general] # use runtime safety fallback force-close timeout (300s) me_reinit_drain_timeout_secs = 0
proxy_secret_auto_reload_secs
-
Ограничения / валидация: Устарело. Используйте
general.update_every. Еслиgeneral.update_everyне задан, эффективный интервал обновления равенmin(proxy_secret_auto_reload_secs, proxy_config_auto_reload_secs)и должен быть> 0. -
Описание: Интервал обновления устаревшего секрета прокси-сервера. Используется только, если
general.update_everyне задан. -
Пример:
[general] # legacy mode: omit update_every to use proxy_*_auto_reload_secs proxy_secret_auto_reload_secs = 600 proxy_config_auto_reload_secs = 120 # effective updater interval = min(600, 120) = 120 seconds
proxy_config_auto_reload_secs
-
Ограничения / валидация: Устарело. Используйте
general.update_every. Еслиgeneral.update_everyне задан, эффективный устаревший интервал обновления равенmin(proxy_secret_auto_reload_secs, proxy_config_auto_reload_secs)и должен быть> 0. -
Описание: Интервал обновления устаревшей конфигурации ME. Используется только, если
general.update_everyне задан. -
Пример:
[general] # legacy mode: omit update_every to use proxy_*_auto_reload_secs proxy_secret_auto_reload_secs = 600 proxy_config_auto_reload_secs = 120 # effective updater interval = min(600, 120) = 120 seconds
me_reinit_singleflight
-
Ограничения / валидация:
bool. -
Описание: Упорядочивать циклы повторной инициализации ME, поступающие от разных источников триггеров.
-
Пример:
[general] me_reinit_singleflight = true
me_reinit_trigger_channel
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Емкость очереди триггеров для планировщика повторной инициализации.
-
Пример:
[general] me_reinit_trigger_channel = 64
me_reinit_coalesce_window_ms
-
Ограничения / валидация:
u64. -
Описание: Время объединения (coalescing) триггеров перед запуском переинициализации (в мс).
-
Пример:
[general] me_reinit_coalesce_window_ms = 200
me_deterministic_writer_sort
-
Ограничения / валидация:
bool. -
Описание: Включить детерминированную сортировку кандидатов при выборе writer’а.
-
Пример:
[general] me_deterministic_writer_sort = true
me_writer_pick_mode
-
Ограничения / валидация:
"sorted_rr"or"p2c". -
Описание: Режим выбора writer’а для бинда маршрута.
-
Пример:
[general] me_writer_pick_mode = "p2c"
me_writer_pick_sample_size
-
Ограничения / валидация:
2..=4. -
Описание: Количество кандидатов, отобранных сборщиком в режиме p2c.
-
Пример:
[general] me_writer_pick_mode = "p2c" me_writer_pick_sample_size = 3
ntp_check
-
Ограничения / валидация:
bool. -
Описание: Зарезервировано для будущего использования. Сейчас параметр читается, но не используется системой.
-
Пример:
[general] ntp_check = true
ntp_servers
-
Ограничения / валидация:
String[]. -
Описание: Зарезервировано для будущего использования. Сейчас параметр читается, но не используется системой.
-
Пример:
[general] ntp_servers = ["pool.ntp.org"]
auto_degradation_enabled
-
Ограничения / валидация:
bool. -
Описание: Зарезервировано для будущего использования. Сейчас параметр читается, но не используется системой.
-
Пример:
[general] auto_degradation_enabled = true
degradation_min_unavailable_dc_groups
-
Ограничения / валидация:
u8. -
Описание: Зарезервировано для будущего использования. Сейчас параметр читается, но не используется системой.
-
Пример:
[general] degradation_min_unavailable_dc_groups = 2
rst_on_close
-
Ограничения / валидация:
"off","errors","always". -
Описание: Управляет поведением
SO_LINGER(0)на принятых клиентских TCP-сокетах. На высоконагруженных прокси-серверах накапливаютсяFIN-WAIT-1и осиротевшие (orphan) сокеты от соединений, которые не завершают Telegram-рукопожатие (сканеры, DPI-зонды, боты). Эта опция позволяет отправлять немедленныйRSTвместо корректногоFINдля таких соединений, мгновенно освобождая ресурсы ядра."off"— по умолчанию. ОбычныйFINпри закрытии всех соединений; поведение не меняется."errors"—SO_LINGER(0)устанавливается приaccept(). Если клиент успешно проходит аутентификацию, linger сбрасывается и relay-сессия закрывается корректно черезFIN. Соединения, закрытые до завершения рукопожатия (таймауты, ошибки крипто, сканеры), отправляютRST."always"—SO_LINGER(0)устанавливается приaccept()и никогда не сбрасывается. Все закрытия отправляютRSTнезависимо от результата рукопожатия.
-
Пример:
[general] rst_on_close = "errors"
[general.modes]
| Ключ | Тип | По умолчанию |
|---|---|---|
classic |
bool |
false |
secure |
bool |
false |
tls |
bool |
true |
classic
-
Ограничения / валидация:
bool. -
Описание: Включает классический режим MTProxy.
-
Пример:
[general.modes] classic = true
secure
-
Ограничения / валидация:
bool. -
Описание: Включает защищённый режим (dd-ссылки).
-
Пример:
[general.modes] secure = true
tls
-
Ограничения / валидация:
bool. -
Описание: Включает режим TLS (ee-ссылки).
-
Пример:
[general.modes] tls = true
[general.links]
| Ключ | Тип | По умолчанию |
|---|---|---|
show |
"*" or String[] |
"*" |
public_host |
String |
— |
public_port |
u16 |
— |
show
-
Ограничения / валидация:
"*"илиString[]. Пустое значение означает, что нельзя показывать никому. -
Описание: Определяет пользователей, для которых показываются proxy-ссылки tg:// при запуске.
-
Пример:
[general.links] show = "*" # or: # show = ["alice", "bob"]
public_host
-
Ограничения / валидация:
String(необязательный параметр). -
Описание: Переопределение общедоступного имени хоста/IP-адреса, используемое для сгенерированных ссылок
tg://(перезаписывает автоматически определённый IP). -
Пример:
[general.links] public_host = "proxy.example.com"
public_port
-
Ограничения / валидация:
u16(необязательный параметр). -
Описание: Публичный порт для генерации tg:// ссылок (перезаписывает server.port).
-
Пример:
[general.links] public_port = 443
[general.telemetry]
| Ключ | Тип | По умолчанию |
|---|---|---|
core_enabled |
bool |
true |
user_enabled |
bool |
true |
me_level |
"silent", "normal", or "debug" |
"normal" |
core_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает метрики ядра (hot-path telemetry counters).
-
Пример:
[general.telemetry] core_enabled = true
user_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает счетчики телеметрии для каждого пользователя.
-
Пример:
[general.telemetry] user_enabled = true
me_level
-
Ограничения / валидация:
"silent","normal"или"debug". -
Описание: Уровень детализации телеметрии Middle-End.
-
Пример:
[general.telemetry] me_level = "normal"
[network]
| Ключ | Тип | По умолчанию |
|---|---|---|
ipv4 |
bool |
true |
ipv6 |
bool |
false |
prefer |
u8 |
4 |
multipath |
bool |
false |
stun_use |
bool |
true |
stun_servers |
String[] |
Встроенный STUN-лист (13 записей) |
stun_tcp_fallback |
bool |
true |
http_ip_detect_urls |
String[] |
["https://ifconfig.me/ip", "https://api.ipify.org"] |
cache_public_ip_path |
String |
"cache/public_ip.txt" |
dns_overrides |
String[] |
[] |
ipv4
-
Ограничения / валидация:
bool. -
Описание: Включает возможность подключения по IPv4.
-
Пример:
[network] ipv4 = true
ipv6
-
Ограничения / валидация:
bool. -
Описание: Включает возможность подключения по IPv6. Если не задан - используется значение
false. -
Пример:
[network] # enable IPv6 explicitly ipv6 = true # or: disable IPv6 explicitly # ipv6 = false
prefer
-
Ограничения / валидация: Должно быть
4или6. Еслиprefer = 4, аipv4 = false, Telemt принудительно используетprefer = 6. Еслиprefer = 6, аipv6 = false, Telemt принудительно используетprefer = 4. -
Описание: Предпочтительный IP-протокол (IPv4 или IPv6) при выборе, если доступны оба.
-
Пример:
[network] prefer = 6
multipath
-
Ограничения / валидация:
bool. -
Описание: Включает многопоточное (multipath) сетевое поведение, если оно поддерживается платформой и средой выполняния.
-
Пример:
[network] multipath = true
stun_use
-
Ограничения / валидация:
bool. -
Описание: Глобальный переключатель STUN; если установлено значение «false», проверка STUN отключается и остается только обнаружение без STUN.
-
Пример:
[network] stun_use = false
stun_servers
-
Ограничения / валидация:
String[]. Значения обрезаются; пустые значения удаляются; список очищается от дубликатов. Если этот ключ не задан явно, Telemt использует встроенный список STUN по умолчанию. -
Описание: Список STUN-серверов для определения публичного IP-адреса.
-
Пример:
[network] stun_servers = [ "stun.l.google.com:19302", "stun.stunprotocol.org:3478", ]
stun_tcp_fallback
-
Ограничения / валидация:
bool. -
Описание: Включает резервный TCP для STUN в случае недоступности UDP-соединения.
-
Пример:
[network] stun_tcp_fallback = true
http_ip_detect_urls
-
Ограничения / валидация:
String[]. -
Описание: HTTP-эндпоинты, используемые для определения публичного IP (резервный вариант после STUN).
-
Пример:
[network] http_ip_detect_urls = ["https://ifconfig.me/ip", "https://api.ipify.org"]
cache_public_ip_path
-
Ограничения / валидация:
String. -
Описание: Путь к файлу, в котором кэшируется определённый публичный IP.
-
Пример:
[network] cache_public_ip_path = "cache/public_ip.txt"
dns_overrides
-
Ограничения / валидация:
String[]. Каждая запись должна использовать форматhost:port:ip.host: доменное имя (не должно быть пустым и не должно содержать:)port:u16ip: IPv4 (1.2.3.4) или IPv6 в квадратных скобках ([2001:db8::1]). Значения IPv6 без скобок отклоняются!
-
Описание: Переопределение DNS во время работы для
host:port-соединений. Позволяет принудительно задавать IP для указанных доменов, не изменяя системный DNS. -
Пример:
[network] dns_overrides = [ "example.com:443:127.0.0.1", "example.net:8443:[2001:db8::10]", ]
[server]
| Ключ | Тип | По умолчанию |
|---|---|---|
port |
u16 |
443 |
listen_addr_ipv4 |
String |
"0.0.0.0" |
listen_addr_ipv6 |
String |
"::" |
listen_unix_sock |
String |
— |
listen_unix_sock_perm |
String |
— |
listen_tcp |
bool |
— (auto) |
proxy_protocol |
bool |
false |
proxy_protocol_header_timeout_ms |
u64 |
500 |
proxy_protocol_trusted_cidrs |
IpNetwork[] |
[] |
metrics_port |
u16 |
— |
metrics_listen |
String |
— |
metrics_whitelist |
IpNetwork[] |
["127.0.0.1/32", "::1/128"] |
max_connections |
u32 |
10000 |
accept_permit_timeout_ms |
u64 |
250 |
port
-
Ограничения / валидация:
u16. -
Описание: Main proxy listen port (TCP).
-
Пример:
[server] port = 443
listen_addr_ipv4
-
Ограничения / валидация:
String(необязательный параметр). Если задан, должен содержать валидный IPv4-адрес в формате строки. -
Описание: Прослушиваемый адрес в формате IPv4 (не задавайте этот параметр, если необходимо отключить прослушивание по IPv4).
-
Пример:
[server] listen_addr_ipv4 = "0.0.0.0"
listen_addr_ipv6
-
Ограничения / валидация:
String(необязательный параметр). Если задан, должен содержать валидный IPv6-адрес в формате строки. -
Описание: Прослушиваемый адрес в формате IPv6 (не задавайте этот параметр, если необходимо отключить прослушивание по IPv6).
-
Пример:
[server] listen_addr_ipv6 = "::"
listen_unix_sock
-
Ограничения / валидация:
String(необязательный параметр). Не должен быть пустым, если задан. Unix only. -
Описание: Путь к Unix-сокету для прослушивания. Если этот параметр задан,
server.listen_tcpпо умолчанию устанавливается вfalse(если только не переопределён явно). -
Пример:
[server] listen_unix_sock = "/run/telemt.sock"
listen_unix_sock_perm
-
Ограничения / валидация:
String(необязательный параметр). Если задан, должен содержать восьмеричную строку со значением прав, например"0666"или"0777". -
Описание: Необязательные права доступа для Unix-сокета, применяемые после биндинга через chmod. Если параметр не указан, права не изменяются и используются настройки umask.
-
Пример:
[server] listen_unix_sock = "/run/telemt.sock" listen_unix_sock_perm = "0666"
listen_tcp
- Ограничения / валидация:
bool(необязательный параметр). Если этот параметр не задан, Telemt автоматически использует: true, еслиlisten_unix_sockне задан;false, если заданlisten_unix_sock.-
Описание: Явное переопределение включения или отключения TCP-прослушивания.
-
Пример:
[server] # force-enable TCP even when also binding a unix socket listen_unix_sock = "/run/telemt.sock" listen_tcp = true
-
proxy_protocol
-
Ограничения / валидация:
bool. -
Описание: Включает поддержку разбора PROXY protocol от HAProxy (v1/v2) на входящих соединениях. При включении исходный IP клиента берётся из PROXY-заголовка.
-
Пример:
[server] proxy_protocol = true
proxy_protocol_header_timeout_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Таймаут чтения и анализа заголовков протокола PROXY (мс).
-
Пример:
[server] proxy_protocol = true proxy_protocol_header_timeout_ms = 500
proxy_protocol_trusted_cidrs
-
Ограничения / валидация:
IpNetwork[].- Если этот параметр не задан, по умолчанию в качестве доверенных используются доверительные все CIDR (
0.0.0.0/0и::/0). - Если явно задан пустой массив, все заголовки PROXY отклоняются.
- Если этот параметр не задан, по умолчанию в качестве доверенных используются доверительные все CIDR (
-
Описание: Список доверенных CIDR-диапазонов, которым разрешено передавать PROXY protocol-заголовки (механизм безопасности).
-
Пример:
[server] proxy_protocol = true proxy_protocol_trusted_cidrs = ["127.0.0.1/32", "10.0.0.0/8"]
metrics_port
-
Ограничения / валидация:
u16(необязательный параметр). -
Описание: Порт для Prometheus-совместимого endpoint’а метрик. При задании включает прослушивание метрик (поведение прослушивания может быть переопределено через
metrics_listen). -
Пример:
[server] metrics_port = 9090
metrics_listen
-
Ограничения / валидация:
String(необязательный параметр). Если задан, значение должно быть в форматеIP:PORT. -
Описание: Полный адрес привязки метрик (
IP:PORT), переопределяетmetrics_portи запускает прослушивание только на указанном адресе.. -
Пример:
[server] metrics_listen = "127.0.0.1:9090"
metrics_whitelist
-
Ограничения / валидация:
IpNetwork[]. -
Описание: Белый список CIDR для доступа к endpoint’у метрик.
-
Пример:
[server] metrics_port = 9090 metrics_whitelist = ["127.0.0.1/32", "::1/128"]
max_connections
-
Ограничения / валидация:
u32.0- без ограничений. -
Описание: Максимальное количество одновременных клиентских соединений.
-
Пример:
[server] max_connections = 10000
accept_permit_timeout_ms
-
Ограничения / валидация:
0..=60000(milliseconds).0- неограниченное время ожидания. -
Описание: Максимальное время ожидания получения разрешения на подключение, прежде чем принятое соединение будет разорвано.
-
Пример:
[server] accept_permit_timeout_ms = 250
Примечание. Когда server.proxy_protocol включен, входящие заголовки протокола PROXY анализируются с первых байтов соединения, а исходный адрес клиента заменяется на src_addr из заголовка. В целях безопасности IP-адрес прямого соединения проверяется по server.proxy_protocol_trusted_cidrs; если этот список пуст, заголовки PROXY отклоняются и соединение считается ненадежным.
[server.conntrack_control]
Примечание. Рабочий процесс conntrack-control работает только в Linux. В других операционных системах не запускается; если inline_conntrack_control имеет значение true, в логи записывается предупреждение. Для эффективной работы также требуется CAP_NET_ADMIN и пригодный к использованию бэкенд (nft или iptables/ip6tables в PATH). Утилита conntrack используется для удаления необязательных записей таблицы под нагрузкой.
| Ключ | Тип | По умолчанию |
|---|---|---|
inline_conntrack_control |
bool |
true |
mode |
String |
"tracked" |
backend |
String |
"auto" |
profile |
String |
"balanced" |
hybrid_listener_ips |
IpAddr[] |
[] |
pressure_high_watermark_pct |
u8 |
85 |
pressure_low_watermark_pct |
u8 |
70 |
delete_budget_per_sec |
u64 |
4096 |
inline_conntrack_control
-
Ограничения / валидация:
bool. -
Описание: Главный переключатель для задачи conntrack-control: согласовывает правила сетевого фильтра raw/notrack для входяшего трафика (см.
mode), раз в секунду измеряет нагрузку и при активном режиме нагрузки может выполнять удаления черезconntrack -Dдля подходящих событий закрытия соединений (см.delete_budget_per_sec). Если отключён (false), notrack-правила удаляются, а удаление при нагрузке отключается. -
Пример:
[server.conntrack_control] inline_conntrack_control = true
mode
-
Ограничения / валидация:
tracked,notrackилиhybrid(чувствителен к регистру, используется нижний регистр). -
Описание:
tracked: не устанавливать notrack-правила, соединения полностью отслеживаются conntrack.notrack: помечает входящий TCP-трафик к server.port как notrack; цели берутся из[server.listeners], либо изserver.listen_addr_ipv4 / server.listen_addr_ipv6(неуказанные адреса означают «любой» для этого семейства).hybrid: notrack применяется только к адресам изhybrid_listener_ips(не должно быть пустым, проверяется при загрузке), остальные соединения отслеживаются обычным образом.
-
Пример:
[server.conntrack_control] mode = "notrack"
backend
-
Ограничения / валидация:
auto,nftablesилиiptables(чувствителен к регистру, используется нижний регистр). -
Описание: Выбор набора инструментов для применения notrack-правил.
auto: используетnft, если доступен, иначе -iptables/ip6tables.nftables / iptables: принудительно выбирает соответствующий backend; при отсутствии бинарника правила не применяются. В nft-режиме используется таблицаinet telemt_conntrack, вiptables— цепочка TELEMT_NOTRACK в таблице raw.
-
Пример:
[server.conntrack_control] backend = "auto"
profile
-
Ограничения / валидация:
conservative,balancedилиaggressive(чувствителен к регистру, используется нижний регистр). -
Описание: При активном режиме conntrack pressure mode граничивает таймауты для снижения нагрузки: idle-время клиента, таймауты активности direct relay и политики idle middle relay. Более агрессивные профили используют более короткие ограничения.
-
Пример:
[server.conntrack_control] profile = "balanced"
hybrid_listener_ips
-
Ограничения / валидация:
IpAddr[]. Значение не должно быть пустым, еслиmode = "hybrid". Игнорируется для режимовtracked/notrack. -
Описание: Явный список прослушиваемых IP-адресов, к которым применяется notrack в hybrid-режиме (разделяется на IPv4 и IPv6 правила).
-
Пример:
[server.conntrack_control] mode = "hybrid" hybrid_listener_ips = ["203.0.113.10", "2001:db8::1"]
pressure_high_watermark_pct
-
Ограничения / валидация: Должно быть в пределах
[1, 100]. -
Описание: Порог входа в conntrack pressure mode. Переход происходит при любом из следующих условий: заполненность соединений относительно
server.max_connections(в процентах, еслиmax_connections > 0), использование файловых дескрипторов относительно мягкого лимитаRLIMIT_NOFILE, ненулевое значениеaccept_permit_timeoutили дельта относитель счетчика ME c2me send-full. Сравниваются соответствующие проценты с верхней отметкой указанных параметров (см. update_pressure_state в conntrack_control.rs). -
Пример:
[server.conntrack_control] pressure_high_watermark_pct = 85
pressure_low_watermark_pct
-
Ограничения / валидация: Должно быть сторого ниже значения
pressure_high_watermark_pct. -
Описание: Режим conntrack pressure mode отключается только после трех последовательных односекундных выборок, когда все сигналы находятся на уровне этой нижней границы или ниже, а дельты времени ожидания приема/ME-очереди равны нулю (гистерезис).
-
Пример:
[server.conntrack_control] pressure_low_watermark_pct = 70
delete_budget_per_sec
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Максимальное количество попыток удаления через
conntrack -Dв секунду во время режима conntrack pressure mode. Ограничение реализовано через токен-бакет; применяется только к событиям закрытия с причинами timeout, pressure или reset. -
Пример:
[server.conntrack_control] delete_budget_per_sec = 4096
[server.api]
Примечание: В этом разделе также задается устаревший параметр [server.admin_api] (аналогично [server.api]).
| Ключ | Тип | По умолчанию |
|---|---|---|
enabled |
bool |
true |
listen |
String |
"0.0.0.0:9091" |
whitelist |
IpNetwork[] |
["127.0.0.0/8"] |
auth_header |
String |
"" |
request_body_limit_bytes |
usize |
65536 |
minimal_runtime_enabled |
bool |
true |
minimal_runtime_cache_ttl_ms |
u64 |
1000 |
runtime_edge_enabled |
bool |
false |
runtime_edge_cache_ttl_ms |
u64 |
1000 |
runtime_edge_top_n |
usize |
10 |
runtime_edge_events_capacity |
usize |
256 |
read_only |
bool |
false |
enabled
-
Ограничения / валидация:
bool. -
Описание: Включает возможность управления через REST API.
-
Пример:
[server.api] enabled = true
listen
-
Ограничения / валидация:
String. Должно быть в форматеIP:PORT. -
Описание: Адрес биндинга API в формате
IP:PORT. -
Пример:
[server.api] listen = "0.0.0.0:9091"
whitelist
-
Ограничения / валидация:
IpNetwork[]. -
Описание: Список CIDR-адресов, которым разрешён доступ к API.
-
Пример:
[server.api] whitelist = ["127.0.0.0/8"]
auth_header
-
Ограничения / валидация:
String. Пустая строка отключает проверку заголовка аутентификации. -
Описание: Точное ожидаемое значение заголовка
Authorization(static shared secret). -
Пример:
[server.api] auth_header = "Bearer MY_TOKEN"
request_body_limit_bytes
-
Ограничения / валидация: Должно быть
> 0(байт). -
Описание: Максимальный принимаемый размер тела HTTP-запроса (в байтах).
-
Пример:
[server.api] request_body_limit_bytes = 65536
minimal_runtime_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает логику минимальных runtime-снимков endpoint’а.
-
Пример:
[server.api] minimal_runtime_enabled = true
minimal_runtime_cache_ttl_ms
-
Ограничения / валидация:
0..=60000(миллисекунд).0- отключает кэширование. -
Описание: Время жизни минимальных runtime-снимков (в мс).
-
Пример:
[server.api] minimal_runtime_cache_ttl_ms = 1000
runtime_edge_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает runtime endpoint’ы для edge-данных (статистики/метрик).
-
Пример:
[server.api] runtime_edge_enabled = false
runtime_edge_cache_ttl_ms
-
Ограничения / валидация:
0..=60000(миллисекунд). -
Описание: Время жизни кэша (в миллисекундах) для агрегированных данных (payload’ов) runtime edge.
-
Пример:
[server.api] runtime_edge_cache_ttl_ms = 1000
runtime_edge_top_n
-
Ограничения / валидация:
1..=1000. -
Описание: Размер выборки Top-N для рейтинга (leaderboard) edge-соединений.
-
Пример:
[server.api] runtime_edge_top_n = 10
runtime_edge_events_capacity
-
Ограничения / валидация:
16..=4096. -
Описание: Ёмкость кольцевого буфера для runtime edge-событий.
-
Пример:
[server.api] runtime_edge_events_capacity = 256
read_only
-
Ограничения / валидация:
bool. -
Описание: Переводит API в режим "только чтение".
-
Пример:
[server.api] read_only = false
server.listeners
| Ключ | Тип | По умолчанию |
|---|---|---|
ip |
IpAddr |
— |
announce |
String |
— |
announce_ip |
IpAddr |
— |
proxy_protocol |
bool |
— |
reuse_allow |
bool |
false |
ip
-
Ограничения / валидация: Обязательный параметр. Значение должно содержать IP-адрес в формате строки.
-
Описание: Адрес для listener’а.
-
Пример:
[server.listeners] ip = "0.0.0.0"
announce
-
Ограничения / валидация:
String(необязательный параметр). Не должен быть пустым, если задан. -
Описание: Публичный IP-адрес или домен, объявляемый в proxy-ссылках для данного listener’а. Имеет приоритет над
announce_ip. -
Пример:
[server.listeners] ip = "0.0.0.0" announce = "proxy.example.com"
announce_ip
-
Ограничения / валидация:
IpAddr(необязательный параметр). Устарел. Используйтеannounce. -
Описание: Устаревший параметр для анонсирования IP. Во время загрузки конфигурации он переносится в
announceеслиannounceне задан. -
Пример:
[server.listeners] ip = "0.0.0.0" announce_ip = "203.0.113.10"
proxy_protocol
-
Ограничения / валидация:
bool(необязательный параметр). Если задан, перезаписывает значениеserver.proxy_protocolдля этого listener’а. -
Описание: Переопределение протокола PROXY для каждого listener’а.
-
Пример:
[server] proxy_protocol = false [server.listeners] ip = "0.0.0.0" proxy_protocol = true
reuse_allow"
reuse_allow-
Ограничения / валидация:
bool. -
Описание: Включает
SO_REUSEPORTдля совместного использования привязки нескольких экземпляров (позволяет нескольким экземплярам telemt прослушивать один и тот жеip:port). -
Пример:
[server.listeners] ip = "0.0.0.0" reuse_allow = false
-
[timeouts]
| Ключ | Тип | По умолчанию |
|---|---|---|
client_handshake |
u64 |
30 |
relay_idle_policy_v2_enabled |
bool |
true |
relay_client_idle_soft_secs |
u64 |
120 |
relay_client_idle_hard_secs |
u64 |
360 |
relay_idle_grace_after_downstream_activity_secs |
u64 |
30 |
tg_connect |
u64 |
10 |
client_keepalive |
u64 |
15 |
client_ack |
u64 |
90 |
me_one_retry |
u8 |
12 |
me_one_timeout_ms |
u64 |
1200 |
client_handshake
-
Ограничения / валидация: Должно быть
> 0. Значение указано в секундах. Также используется в качестве верхней границы некоторых задержек эмуляции TLS (см.censorship.server_hello_delay_max_ms). -
Описание: Таймаут выполнения "рукопожатия" для клиента (в секундах).
-
Пример:
[timeouts] client_handshake = 30
relay_idle_policy_v2_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает политику простоя клиента для промежуточного узла.
-
Пример:
[timeouts] relay_idle_policy_v2_enabled = true
relay_client_idle_soft_secs
-
Ограничения / валидация: Должно быть
> 0; Должно быть меньше или равноrelay_client_idle_hard_secs. -
Описание: Мягкий порог простоя (в секундах) для неактивности uplink клиента в промежуточном узле. При достижении этого порога сессия помечается как кандидат на простой и может быть удалена в зависимости от политики.
-
Пример:
[timeouts] relay_client_idle_soft_secs = 120
relay_client_idle_hard_secs
-
Ограничения / валидация: Должно быть
> 0; Должно быть больше или равноrelay_client_idle_soft_secs. -
Описание: Жёсткий порог простоя (в секундах) для неактивности uplink клиента в промежуточном узле. При достижении этого порога сессия принудительно закрывается.
-
Пример:
[timeouts] relay_client_idle_hard_secs = 360
relay_idle_grace_after_downstream_activity_secs
-
Ограничения / валидация: Должно быть
<= relay_client_idle_hard_secs. -
Описание: Дополнительный период отсрочки жёсткого простоя (в секундах), добавляемый после недавней активности downstream.
-
Пример:
[timeouts] relay_idle_grace_after_downstream_activity_secs = 30
tg_connect
-
Ограничения / валидация:
u64(секунд). -
Описание: Таймаут подключения к upstream-серверу Telegram (в секундах).
-
Пример:
[timeouts] tg_connect = 10
client_keepalive
-
Ограничения / валидация:
u64(секунд). -
Описание: Таймаут keepalive для клиента..
-
Пример:
[timeouts] client_keepalive = 15
client_ack
-
Ограничения / валидация:
u64(секунд). -
Описание: Таймаут подтверждения (ACK) от клиента в секундах.
-
Пример:
[timeouts] client_ack = 90
me_one_retry
-
Ограничения / валидация:
u8. -
Описание: Лимит быстрых попыток переподключения в сценариях DC с единственным endpoint'ом.
-
Пример:
[timeouts] me_one_retry = 12
me_one_timeout_ms
-
Ограничения / валидация:
u64(миллисекунд). -
Описание: Таймаут на одну быструю попытку переподключения (в миллисекундах) в логике reconnect для DC с единственным endpoint'ом.
-
Пример:
[timeouts] me_one_timeout_ms = 1200
[censorship]
| Ключ | Тип | По умолчанию |
|---|---|---|
tls_domain |
String |
"petrovich.ru" |
tls_domains |
String[] |
[] |
unknown_sni_action |
"drop", "mask", "accept" |
"drop" |
tls_fetch_scope |
String |
"" |
tls_fetch |
Table |
built-in defaults |
mask |
bool |
true |
mask_host |
String |
— |
mask_port |
u16 |
443 |
mask_unix_sock |
String |
— |
fake_cert_len |
usize |
2048 |
tls_emulation |
bool |
true |
tls_front_dir |
String |
"tlsfront" |
server_hello_delay_min_ms |
u64 |
0 |
server_hello_delay_max_ms |
u64 |
0 |
tls_new_session_tickets |
u8 |
0 |
tls_full_cert_ttl_secs |
u64 |
90 |
alpn_enforce |
bool |
true |
mask_proxy_protocol |
u8 |
0 |
mask_shape_hardening |
bool |
true |
mask_shape_hardening_aggressive_mode |
bool |
false |
mask_shape_bucket_floor_bytes |
usize |
512 |
mask_shape_bucket_cap_bytes |
usize |
4096 |
mask_shape_above_cap_blur |
bool |
false |
mask_shape_above_cap_blur_max_bytes |
usize |
512 |
mask_relay_max_bytes |
usize |
5242880 |
mask_classifier_prefetch_timeout_ms |
u64 |
5 |
mask_timing_normalization_enabled |
bool |
false |
mask_timing_normalization_floor_ms |
u64 |
0 |
mask_timing_normalization_ceiling_ms |
u64 |
0 |
tls_domain
-
Ограничения / валидация: Не должно быть пустым. Не должно содержать пробелы или
/. -
Описание: Основной TLS-домен, используемый в профиле FakeTLS handshake и как домен SNI по умолчанию.
-
Пример:
[censorship] tls_domain = "example.com"
tls_domains
-
Ограничения / валидация:
String[]. Когда задан, значение объединяется сtls_domainи очищается от дубликатов (первичный tls_domain всегда остается первым). -
Описание: Дополнительные домены TLS для создания нескольких прокси-ссылок.
-
Пример:
[censorship] tls_domain = "example.com" tls_domains = ["example.net", "example.org"]
unknown_sni_action
-
Ограничения / валидация:
"drop","mask"или"accept". -
Описание: Действие для TLS ClientHello с неизвестным/ненастроенным SNI.
-
Пример:
[censorship] unknown_sni_action = "drop"
tls_fetch_scope
-
Ограничения / валидация:
String. Значение обрезается во время загрузки; значение, состоящее только из пробелов, становится пустым. -
Описание: Тег области upstream, используемый для TLS-front метаданных при их получении. Пустое значение сохраняет стандартное поведение маршрутизации upstream.
-
Пример:
[censorship] tls_fetch_scope = "fetch"
censorship.tls_fetch
-
Ограничения / валидация: Таблица, см. секцию
[censorship.tls_fetch]ниже. -
Описание: Настройки стратегии получения TLS-front метаданных (поведение загрузки и обновления bootstrap и данных эмуляции TLS)..
-
Пример:
[censorship.tls_fetch] strict_route = true attempt_timeout_ms = 5000 total_budget_ms = 15000
mask
-
Ограничения / валидация:
bool. -
Описание: Включает режим маскировки/верхнего уровня. Принимаются все SNI, которые похожи на заданный в
tls_domain. -
Пример:
[censorship] mask = true
mask_host
-
Ограничения / валидация:
String(необязательный параметр).- Если задан параметр
mask_unix_sock,mask_hostне должен быть задан. - Если не задан параметр
mask_hostиmask_unix_sockне задан, Telemt по умолчанию устанавливает дляmask_hostзначениеtls_domain.
- Если задан параметр
-
Описание: Хост, используемый для маскировки при TLS-fronting.
-
Пример:
[censorship] mask_host = "www.cloudflare.com"
mask_port
-
Ограничения / валидация:
u16. -
Описание: Порт маскирующего upstream для TLS fronting.
-
Пример:
[censorship] mask_port = 443
mask_unix_sock
-
Ограничения / валидация:
String(optional).- Значение не должно быть пустым, если задан.
- Unix only;
- На Unix системах, должно быть
\le 107байт (ограничение длины пути). - Взаимоисключающий с
mask_host.
-
Описание: Путь к Unix-сокету для mask-бэкенда вместо использования TCP
mask_host/mask_port. -
Пример:
[censorship] mask_unix_sock = "/run/telemt/mask.sock"
fake_cert_len
-
Ограничения / валидация:
usize. Когдаtls_emulation = falseи используется значение по умолчанию, Telemt может рандомизировать его при запуске для обеспечения вариативности. -
Описание: Длина синтетического сертификатного payload’а, используемого при отсутствии данных для эмуляции.
-
Пример:
[censorship] fake_cert_len = 2048
tls_emulation
-
Ограничения / валидация:
bool. -
Описание: Включает эмуляцию поведения сертификата/TLS из кэшированных реальных сайтов.
-
Пример:
[censorship] tls_emulation = true
tls_front_dir
-
Ограничения / валидация:
String. -
Описание: Путь к директории для хранения кэша сайтов.
-
Пример:
[censorship] tls_front_dir = "tlsfront"
server_hello_delay_min_ms
-
Ограничения / валидация:
u64(миллисекунд). -
Описание: Минимальная задержка
server_hello(в миллисекундах) для защиты от идентификации по fingerprint'у. -
Пример:
[censorship] server_hello_delay_min_ms = 0
server_hello_delay_max_ms
-
Ограничения / валидация:
u64(миллисекунд). Должно быть<timeouts.client_handshake * 1000. -
Описание: Максимальная задержка
server_hello(в миллисекундах) для защиты от идентификации по fingerprint'у. -
Пример:
[timeouts] client_handshake = 30 [censorship] server_hello_delay_max_ms = 0
tls_new_session_tickets
-
Ограничения / валидация:
u8. -
Описание: Количество сообщений
NewSessionTicket, отправляемых после рукопожатия. -
Пример:
[censorship] tls_new_session_tickets = 0
tls_full_cert_ttl_secs
-
Ограничения / валидация:
u64(секунд). -
Описание: TTL для отправки полного сертификатного payload’а для каждой пары (домен, IP клиента).
-
Пример:
[censorship] tls_full_cert_ttl_secs = 90
alpn_enforce
-
Ограничения / валидация:
bool. -
Описание: Принудительно изменяет поведение возврата ALPN в соответствии с предпочтениями клиента.
-
Пример:
[censorship] alpn_enforce = true
mask_proxy_protocol
-
Ограничения / валидация:
u8.0= выключен,1= v1 (текстовый),2= v2 (бинарный). -
Описание: Отправляет заголовок PROXY protocol при подключении к mask-бэкенду, позволяя бэкенду видеть реальный IP клиента.
-
Пример:
[censorship] mask_proxy_protocol = 0
mask_shape_hardening
-
Ограничения / валидация:
bool. -
Описание: Усиливает защиту канала формирования/маскировки (shape-channel) трафика client->mask за счёт контролируемого добавления хвостового padding'а к границам групп данных при завершении работы mask relay.
-
Пример:
[censorship] mask_shape_hardening = true
mask_shape_hardening_aggressive_mode
-
Ограничения / валидация: Требует, чтобы
mask_shape_hardening = true. -
Описание: Опциональный агрессивный профиль формирования трафика (более сильное противодействие классификаторам с изменённой логикой шейпинга).
-
Пример:
[censorship] mask_shape_hardening = true mask_shape_hardening_aggressive_mode = false
mask_shape_bucket_floor_bytes
-
Ограничения / валидация: Должно быть
> 0; должно быть меньше или равноmask_shape_bucket_cap_bytes. -
Описание: Минимальный размер группы данных, используемый при усилении канала формирования/маскировки трафика (shape-channel).
-
Пример:
[censorship] mask_shape_bucket_floor_bytes = 512
mask_shape_bucket_cap_bytes
-
Ограничения / валидация: Должно быть
>= mask_shape_bucket_floor_bytes. -
Описание: Максимальный размер группы данных, используемого для усиления канала формирования/маскировки трафика (shape-channel); трафик, превышающий этот лимит, больше не подвергается bucket-padding'у.
-
Пример:
[censorship] mask_shape_bucket_cap_bytes = 4096
mask_shape_above_cap_blur
-
Ограничения / валидация: Требует, чтобы
mask_shape_hardening = true. -
Описание: Добавляет ограниченное количество случайных байтов в конец данных (tail), даже если передаваемый размер уже превышает лимит.
-
Пример:
[censorship] mask_shape_hardening = true mask_shape_above_cap_blur = false
mask_shape_above_cap_blur_max_bytes
-
Ограничения / валидация: Должно быть
<= 1048576. Должно быть> 0, еслиmask_shape_above_cap_blur = true. -
Описание: Максимальное количество случайных дополнительных байтов, добавляемых сверх лимита, когда включено размытие данных(blur).
-
Пример:
[censorship] mask_shape_above_cap_blur = true mask_shape_above_cap_blur_max_bytes = 64
mask_relay_max_bytes
-
Ограничения / валидация: Должно быть
> 0; Должно быть меньше или равно67108864. -
Описание: Максимальное количество байт, передаваемых в каждом направлении, на неаутентифицированной fallback маскировке.
-
Пример:
[censorship] mask_relay_max_bytes = 5242880
mask_classifier_prefetch_timeout_ms
-
Ограничения / валидация: Должно быть в пределах
[5, 50](миллисекунд). -
Описание: Лимит времени ожидания (в миллисекундах) для расширения первых входящих данных в режиме fallback-маскировки.
-
Пример:
[censorship] mask_classifier_prefetch_timeout_ms = 5
mask_timing_normalization_enabled
-
Ограничения / валидация: Когда
true, требует, чтобыmask_timing_normalization_floor_ms > 0иmask_timing_normalization_ceiling_msбыл больше или равенmask_timing_normalization_floor_ms. Значение должно быть меньше или равно60000. -
Описание: Включает выравнивание и сглаживание временных паттернов (таймингов) трафика после применения маскировки.
-
Пример:
[censorship] mask_timing_normalization_enabled = false
mask_timing_normalization_floor_ms
-
Ограничения / валидация: Должно быть
> 0, еслиmask_timing_normalization_enabled = true; Должно быть меньше или равноmask_timing_normalization_ceiling_ms. -
Описание: Lower bound (ms) for masking outcome normalization target.
-
Пример:
[censorship] mask_timing_normalization_floor_ms = 0
mask_timing_normalization_ceiling_ms
-
Ограничения / валидация: Должно быть
>= mask_timing_normalization_floor_ms; Должно быть<= 60000. -
Описание: Минимально допустимое значение таймингов/задержек, к которому система “приводит” (нормализует) поведение маскированного трафика.
-
Пример:
[censorship] mask_timing_normalization_ceiling_ms = 0
Примечания по усилению shape-channel ([censorship])
Эти параметры предназначены для снижения одного конкретного источника fingerprinting при маскировке: точного количества байт, отправляемых от прокси к mask_host при невалидном или зондирующем (probe) трафике.
Без усиления защиты цензор часто может очень точно сопоставить длину входящего пробного запроса с длиной, наблюдаемой на стороне бэкенда (например, 5 + body_sent на ранних этапах отклонения TLS). Это является сигналом для классификации на основе длины.
Когда mask_shape_hardening = true, Telemt дополняет (padding) хвост потока client → mask до границы группы данных при завершении работы промежуточного звена:
- Сначала измеряется общее количество байт, отправленных в mask.
- Затем выбирается bucket (группа данных), используя степени двойки, начиная с
mask_shape_bucket_floor_bytes. - Padding добавляется только если общее количество байт меньше
mask_shape_bucket_cap_bytes. - Если количество байт уже превышает cap, дополнительные данные не добавляются
Это означает, что несколько близких по размеру пробных запросов (probe) объединяются в одну и ту же группу данных, наблюдаемых на стороне backend'а, что усложняет активную классификацию.
Что каждый параметр меняет на практике:
mask_shape_hardeningВключает или отключает весь этап формирования (shaping) длины на fallback'е. Еслиfalse, наблюдаемая на backend длина остаётся близкой к реальной длине переданного probe-запроса. Еслиtrue, при быстром завершении соединения промежуточное звено может добавлять случайные padding-байты, чтобы итоговый размер попадал в заданную группу данных.mask_shape_bucket_floor_bytesУстанавливает первую границу bucket’а, используемого для небольших probe-запросов. Например: при значении 512 некорректный probe-запрос, который в обычном случае передал бы 37 байт, может быть дополнен до 512 байт при корректном завершении соединения (clean EOF). Более высокие значенияmask_shape_bucket_floor_bytesлучше скрывают очень маленькие probe-запросы, но увеличивают объём исходящего трафика.mask_shape_bucket_cap_bytesУстанавливает наибольший bucket, до которого Telemt может выполнять padding по bucket-логике. Например: при значении cap =4096итоговые1800байт могут быть дополнены до2048или4096в зависимости от "лестницы" bucket’ов, но если объём уже превышает4096байт, дальнейшее bucket-дополнение не выполняется. Более высокие значения cap расширяют диапазон, в котором размеры объединяются в классы, но также увеличивают максимальные накладные расходы.- Clean EOF имеет значение в conservative режиме В профиле по умолчанию padding формы трафика намеренно реализован консервативно: он применяется только при корректном завершении соединения (clean relay shutdown), а не при каждом таймауте или "капельной" (drip) передаче. Это позволяет избежать появления новых артефактов тайм-аута, которые некоторые серверные части или тесты интерпретируют как отдельные fingerprint'ы.
Практические компромиссы:
- Улучшенная защита от fingerprinting'a для канала формирования/маскировки трафика.
- Немного выше выходные накладные расходы для небольших зондов из-за padding'а.
- Система намеренно использует "консервативный" режим и это поведение включено по умолчанию.
Рекомендуемые начальные настройки:
mask_shape_hardening = true(default)mask_shape_bucket_floor_bytes = 512mask_shape_bucket_cap_bytes = 4096
Уточнения по агрессивным режимам работы ([censorship])
mask_shape_hardening_aggressive_mode - это параметр, который включается вручную и предназначен для более сильного противодействия классификаторам.
- Значение по умолчанию -
false, чтобы сохранить консервативное поведение по тайм-ауту. - Требует, чтобы
mask_shape_hardening = true. - Когда включено, не завершающиеся (non-EOF) запросы для маскировки, не передающие данные на backend, могут подвергаться shaping’у (формированию трафика).
- Когда включено вместе с "размытием" трафика выше порога cap, случайный дополнительный tail использует
[1, max]instead of[0, max].
Что меняется при включении агрессивного режима:
- Могут быть сформированы пути тайм-аута, не требующие бэкенда. В режиме по умолчанию клиент, который держит сокет полуоткрытым и имеет тайм-аут, обычно не будет получать заполнение формы по этому пути. В агрессивном режиме Telemt все равно может применять shaping к такому backend-silent соединению, если от backend не было получено ответа. Это специально предназначено для активных зондов, которые пытаются избежать EOF, чтобы сохранить точную наблюдаемую длину.
- "Размытие" трафика выше порога cap всегда добавляет как минимум один байт. В режиме по умолчанию для размытия трафика (blur) над максимальным пределом может быть выбрано значение «0», поэтому некоторые зонды слишком большого размера по-прежнему попадают на точную базовую длину пересылки. В агрессивном режиме эта базовая выборка удаляется автоматически.
- Компромисс Агрессивный режим повышает устойчивость к активным классификаторам на основе длины, но он более жесткие ограничения и менее консервативен. Если вам важна строгая совместимость с логикой таймаутов и no-tail semantics, лучше оставить его выключенным. Если же ваша модель угроз включает повторяющееся активное зондирование со стороны цензора, этот режим является более сильным вариантом защиты.
Используйте этот режим только в том случае, если ваша модель угроз отдает приоритет устойчивости классификатора над строгой совместимостью с консервативной семантикой маскировки.
О "размытии" трафика ([censorship])
mask_shape_above_cap_blur Добавляет второй этап blur (размытия) для очень больших probe-запросов, которые уже превышают mask_shape_bucket_cap_bytes.
- Рандомное дополнение конца данных
[0, mask_shape_above_cap_blur_max_bytes]добавляется в режиме по умолчанию. - В агрессивном режиме система всегда добавляет хотя бы немного дополнительных байт в конец трафика:
[1, mask_shape_above_cap_blur_max_bytes]. - Система хуже “раскрывает” точный размер больших запросов, но делает это так, чтобы не сильно увеличивать лишний трафик.
- Используйте
mask_shape_above_cap_blur_max_bytesв базовом режиме, чтобы избежать ненужного роста исходящего трафика
Что это означает на практике:
- Без above-cap blur
Probe-запрос, который пересылает
5005байт, всё равно будет выглядеть для backend как5005байт, если он уже превышает cap. - С включённым above-cap blur
Тот же самый probe-запрос может выглядеть как любое значение в ограниченном диапазоне выше его исходной длины.
Например, если
mask_shape_above_cap_blur_max_bytes = 64: Наблюдаемый на backend размер становится диапазоном5005..5069в режиме по умолчанию или5006..5069в агрессивном режиме. - Выбор
mask_shape_above_cap_blur_max_bytesМалые значения уменьшают cost, но сохраняют большую различимость между сильно различающимися классами трафика, которые по размеру существенно больше обычного. Большие значения сильнее размывают (blur) классы трафика, которые по размеру существенно больше обычного, но увеличивают исходящий трафик и вариативность выходных данных.
Примечания по нормализации таймингов ([censorship])
mask_timing_normalization_enabled сглаживает разницу во времени между результатами маскировки, применяя целевой диапазон длительности.
- Случайное целевое значение выбирается в
[mask_timing_normalization_floor_ms, mask_timing_normalization_ceiling_ms]. - Быстрые запросы задерживаются до выбранной цели.
- Медленные запросы мягко ограничиваются верхним пределом.
Рекомендованный начальный конфиг для шейпинга таймингов:
mask_timing_normalization_enabled = truemask_timing_normalization_floor_ms = 180mask_timing_normalization_ceiling_ms = 320
Если ваш backend или сеть сильно ограничены по пропускной способности, сначала уменьшите cap. Если в вашей среде пробные запросы (probes) всё ещё слишком легко различимы, постепенно увеличивайте нижнее значение.
[censorship.tls_fetch]
| Ключ | Тип | По умолчанию |
|---|---|---|
profiles |
String[] |
["modern_chrome_like", "modern_firefox_like", "compat_tls12", "legacy_minimal"] |
strict_route |
bool |
true |
attempt_timeout_ms |
u64 |
5000 |
total_budget_ms |
u64 |
15000 |
grease_enabled |
bool |
false |
deterministic |
bool |
false |
profile_cache_ttl_secs |
u64 |
600 |
profiles
-
Ограничения / валидация:
String[]. Пустой список возвращает значения по умолчанию; дубликаты удаляются с сохранением порядка. -
Описание: Упорядоченная цепочка fallback-профилей ClientHello для получения TLS-front метаданных.
-
Пример:
[censorship.tls_fetch] profiles = ["modern_chrome_like", "compat_tls12"]
strict_route
-
Ограничения / валидация:
bool. -
Описание: Если значние
trueи настроен upstream-маршрут, то при ошибках подключения к upstream TLS-запрос завершается с ошибкой вместо перехода на прямое TCP-соединение. -
Пример:
[censorship.tls_fetch] strict_route = true
attempt_timeout_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Лимит таймаута на одну попытку получения профиля TLS (мс).
-
Пример:
[censorship.tls_fetch] attempt_timeout_ms = 5000
total_budget_ms
-
Ограничения / валидация: Должно быть
> 0(миллисекунд). -
Описание: Общий бюджет “реального времени” (wall-clock) на все попытки получения данных через TLS (в миллисекундах).
-
Пример:
[censorship.tls_fetch] total_budget_ms = 15000
grease_enabled
-
Ограничения / валидация:
bool. -
Описание: Включает случайные GREASE-style значения в выбранных расширениях ClientHello для получения трафика.
-
Пример:
[censorship.tls_fetch] grease_enabled = false
deterministic
-
Ограничения / валидация:
bool. -
Описание: Включает детерминированную случайность ClientHello для отладки и тестов. Dместо настоящей случайности в TLS ClientHello используется фиксированная (повторяемая) “псевдослучайность”, чтобы поведение можно было воспроизводить.
-
Пример:
[censorship.tls_fetch] deterministic = false
profile_cache_ttl_secs
-
Ограничения / валидация:
u64(секунд).0- отключает кэширование. -
Описание: Время жизни (TTL) записей кэша “победившего профиля” (winner-profile), используемых для получения данных через TLS.
-
Пример:
[censorship.tls_fetch] profile_cache_ttl_secs = 600
[access]
| Ключ | Тип | По умолчанию |
|---|---|---|
users |
Map<String, String> |
{"default": "000…000"} |
user_ad_tags |
Map<String, String> |
{} |
user_max_tcp_conns |
Map<String, usize> |
{} |
user_max_tcp_conns_global_each |
usize |
0 |
user_expirations |
Map<String, DateTime<Utc>> |
{} |
user_data_quota |
Map<String, u64> |
{} |
user_max_unique_ips |
Map<String, usize> |
{} |
user_max_unique_ips_global_each |
usize |
0 |
user_max_unique_ips_mode |
"active_window", "time_window", or "combined" |
"active_window" |
user_max_unique_ips_window_secs |
u64 |
30 |
replay_check_len |
usize |
65536 |
replay_window_secs |
u64 |
120 |
ignore_time_skew |
bool |
false |
users
-
Ограничения / валидация: Не должно быть пустым (должен существовать хотя бы один пользователь). Каждое значение должно состоять ровно из 32 шестнадцатеричных символов.
-
Описание: Учетные данные пользователей, используемые для аутентификации клиентов. Ключи — это имена пользователей; значения являются секретами MTProxy.
-
Пример:
[access.users] alice = "00112233445566778899aabbccddeeff" bob = "0123456789abcdef0123456789abcdef"
user_ad_tags
-
Ограничения / валидация: Каждое значение должно содержать ровно 32 шестнадцатеричных символа (тот же формат, что и в
general.ad_tag). Тег со всеми нулями разрешен, но в логи будет записано предупреждение. -
Описание: Переопределение рекламного тега спонсируемого канала для каждого пользователя. Когда у пользователя есть запись здесь, она имеет приоритет над
general.ad_tag. -
Пример:
[general] ad_tag = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" [access.user_ad_tags] alice = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
user_max_tcp_conns
-
Ограничения / валидация:
Map<String, usize>. -
Описание: Максимальное количество одновременных TCP-соединений для каждого пользователя.
-
Пример:
[access.user_max_tcp_conns] alice = 500
user_max_tcp_conns_global_each
-
Ограничения / валидация:
usize.0- отключает лимит. -
Описание: Глобальное максимальное количество одновременных TCP-соединений для каждого пользователя, применяется, когда у пользователя нет записи в
[access.user_max_tcp_conns](отсутствующее или равное0значения подпадают под это условие). Ограничения на пользователя, превышающие0в параметреuser_max_tcp_conns, имеют приоритет. -
Пример:
[access] user_max_tcp_conns_global_each = 200 [access.user_max_tcp_conns] alice = 500 # uses 500, not the global cap # bob has no entry > uses 200
user_expirations
-
Ограничения / валидация:
Map<String, DateTime<Utc>>. Каждое значение должно быть валидной датой и временем в формате RFC3339/ISO-8601. -
Описание: Временные метки истечения срока действия учетной записи пользователя (UTC).
-
Пример:
[access.user_expirations] alice = "2026-12-31T23:59:59Z"
user_data_quota
-
Ограничения / валидация:
Map<String, u64>. -
Описание: Квота трафика на пользователя в байтах.
-
Пример:
[access.user_data_quota] alice = 1073741824 # 1 GiB
user_max_unique_ips
-
Ограничения / валидация:
Map<String, usize>. -
Описание: Ограничение на количество уникальных IP-адресов, с которых выполняется подключение, для каждого пользователя.
-
Пример:
[access.user_max_unique_ips] alice = 16
user_max_unique_ips_global_each
-
Ограничения / валидация:
usize.0- отключает лимит. -
Описание: Глобальный лимит на количество уникальных IP-адресов, с которых выполняется подключение, для каждого пользователя, когда у пользователя нет индивидуального переопределения в
[access.user_max_unique_ips]. -
Пример:
[access] user_max_unique_ips_global_each = 8
user_max_unique_ips_mode
-
Ограничения / валидация:
"active_window","time_window","combined". -
Описание: Режим учета лимита уникальных IP-адресов.
-
Пример:
[access] user_max_unique_ips_mode = "active_window"
user_max_unique_ips_window_secs
-
Ограничения / валидация: Должно быть
> 0. -
Описание: Размер временного окна (в секундах), используемого режимами учёта уникальных IP, которые работают с ограничением по времени (значения
"time_window"и"combined"). -
Пример:
[access] user_max_unique_ips_window_secs = 30
replay_check_len
-
Ограничения / валидация:
usize. -
Описание: Количество последних сообщений/запросов, которое система запоминает, чтобы не допустить их повторной отправки (replay).
-
Пример:
[access] replay_check_len = 65536
replay_window_secs
-
Ограничения / валидация:
u64. -
Описание: Как долго система "помнит" уже обработанные запросы, чтобы не принять их повторно (в секундах).
-
Пример:
[access] replay_window_secs = 120
ignore_time_skew
-
Ограничения / валидация:
bool. -
Описание: Отключает проверку расхождения (смещения) времени между клиентом и сервером в валидации защиты от повторной отправки (replay)
-
Пример:
[access] ignore_time_skew = false
[upstreams]
| Ключ | Тип | По умолчанию |
|---|---|---|
type |
"direct", "socks4", "socks5", or "shadowsocks" |
— |
weight |
u16 |
1 |
enabled |
bool |
true |
scopes |
String |
"" |
interface |
String |
— |
bind_addresses |
String[] |
— |
url |
String |
— |
address |
String |
— |
user_id |
String |
— |
username |
String |
— |
password |
String |
— |
type
-
Ограничения / валидация: Обязательный параметр.
"direct","socks4","socks5","shadowsocks". -
Описание: Выбирает реализацию upstream-транспорта для этой записи в
[upstreams]. -
Пример:
[upstreams] type = "direct" [upstreams] type = "socks5" address = "127.0.0.1:9050" [upstreams] type = "shadowsocks" url = "ss://2022-blake3-aes-256-gcm:BASE64PASSWORD@127.0.0.1:8388"
weight
-
Ограничения / валидация:
u16(0..=65535). -
Описание: Приоритет, используемый при случайном выборе upstream-сервера (чем выше значение, тем чаще он выбирается).
-
Пример:
[upstreams] type = "direct" weight = 10
enabled
-
Ограничения / валидация:
bool. -
Описание: Если установлено значение
false, эта запись игнорируется и не используется при выборе upstream-сервера -
Пример:
[upstreams] type = "socks5" address = "127.0.0.1:9050" enabled = false
scopes
-
Ограничения / валидация:
String. CСписок, разделенный запятыми; пробелы обрезаются во время сопоставления -
Описание: Теги области (
scope), используемые для фильтрации upstream-серверов на уровне запроса. Если в запросе указанscope, выбираются только те upstream’ы, у которых полеscopesсодержит этот тег. Если scope в запросе не указан, допускаются только upstream’ы с пустым scopes. -
Пример:
[upstreams] type = "socks4" address = "10.0.0.10:1080" scopes = "me, fetch, dc2"
interface
-
Ограничения / валидация:
String(необязательный параметр).- для
"direct": может быть IP-адресом (используется как явный local bind) или именем сетевого интерфейса ОС (резолвится в IP во время выполнения; только Unix). - для
"socks4"/"socks5": поддерживает только, еслиaddress- этоIP:port; еслиaddress- это имя хоста, interface binding игнорируется. - для
"shadowsocks": passed to the shadowsocks connector as an optional outbound bind hint.
- для
-
Описание: Передаётся в коннектор Shadowsocks как необязательная подсказка для outbound bind.
-
Пример:
[upstreams] type = "direct" interface = "eth0" [upstreams] type = "socks5" address = "203.0.113.10:1080" interface = "192.0.2.10" # explicit local bind IP
bind_addresses
-
Ограничения / валидация:
String[](необязательный параметр). Применяется в случае, еслиtype = "direct".- Каждая запись должна быть IP-адресом в формате строки.
- Во время выполнения Telemt выбирает адрес, соответствующий целевому семейству (IPv4 или IPv6). Если установлен параметр «bind_addresses», и ни один из них не соответствует целевому семейству, попытка подключения считается неудачной.
-
Описание: Явно заданные локальные source адреса для исходящих прямых TCP-соединений. Если указано несколько адресов, они выбираются по алгоритму round-robin.
-
Пример:
[upstreams] type = "direct" bind_addresses = ["192.0.2.10", "192.0.2.11"]
url
-
Ограничения / валидация: Применяется в случае, если
type = "shadowsocks".- Должен быть действительный URL-адрес Shadowsocks, принятый
shadowsocksконтейнером. - Плагины Shadowsocks не поддерживаются.
- Требует, чтобы
general.use_middle_proxy = false( Shadowsocks upstreams отклоняются в режиме ME (Middle-End)).
- Должен быть действительный URL-адрес Shadowsocks, принятый
-
Описание: URL-адрес сервера Shadowsocks, используемый для подключения к Telegram через Shadowsocks.
-
Пример:
[general] use_middle_proxy = false [upstreams] type = "shadowsocks" url = "ss://2022-blake3-aes-256-gcm:BASE64PASSWORD@127.0.0.1:8388"
address
-
Ограничения / валидация: Необходим в случае, если
type = "socks4"иtype = "socks5". Значение должно быть в форматеhost:portилиip:port. -
Описание: Endpoint прокси-сервера SOCKS, используемый для upstream-подключений.
-
Пример:
[upstreams] type = "socks5" address = "127.0.0.1:9050"
user_id
-
Ограничения / валидация:
String(необязательный параметр). Используется только приtype = "socks4". -
Описание: User ID для команды CONNECT в SOCKS4. Примечание: если для запроса выбран scope, Telemt может переопределить это значение на выбранный scope.
-
Пример:
[upstreams] type = "socks4" address = "127.0.0.1:1080" user_id = "telemt"
username
-
Ограничения / валидация:
String(необязательный параметр). Используется только приtype = "socks5". -
Описание: Имя пользователя SOCKS5 (для аутентификации по username/password). Примечание: если для запроса выбран scope, Telemt может переопределить это значение на выбранный scope.
-
Пример:
[upstreams] type = "socks5" address = "127.0.0.1:9050" username = "alice"
password
-
Ограничения / валидация:
String(необязательный параметр). Используется только приtype = "socks5". -
Описание: Пароль SOCKS5 (для аутентификации по username/password). Примечание: если для запроса выбран scope, Telemt может переопределить это значение на выбранный scope.
-
Пример:
[upstreams] type = "socks5" address = "127.0.0.1:9050" username = "alice" password = "secret"