Как настроить сервер Matrix Coturn TURN/STUN для аудио- и видеозвонков

Текущее изменение в работе Matrix Call затрагивает обнаружение, но не учетные данные TURN или порты Coturn. В своем обновлении от 21 августа 2026 года Matrix.org сообщила, что в Element Call 0.24 прекращено обнаружение транспортных протоколов MatrixRTC через /.well-known/matrix/clientфайл homeserver. Автономные развертывания Element Call должны поддерживать конечную точку транспортных протоколов MatrixRTC; Element Web/Desktop и Element X сохраняли старый метод обнаружения в качестве резервного варианта на время перехода клиентов. Это не связано с классической настройкой TURN.

В этом руководстве описана настройка Coturn для службы TURN от Synapse, которая предоставляет временные учетные данные ICE клиентам, использующим традиционные вызовы WebRTC. Текущие групповые вызовы Element Call и MatrixRTC используют блок выборочной пересылки LiveKit (SFU) и службу авторизации MatrixRTC. Coturn сам по себе не заменяет эти компоненты. Если ваша цель — самостоятельное размещение Element Call, используйте путь LiveKit, описанный в официальном руководстве Element Call; добавляйте Coturn только в том случае, если выбранная вами медиаархитектура требует отдельной службы TURN.

Сначала выберите правильный путь вызова.

Путь вызоваЧто нужно настроитьКогда применяется данное руководство Coturn
Традиционный или устаревший вызов WebRTCCoturn плюс Synapse turn_urisи общий секретИспользуйте приведенную ниже конфигурацию, когда клиент запрашивает учетные данные TURN у /voip/turnServerконечной точки Synapse.
MatrixRTC / Element CallLiveKit SFU, служба авторизации MatrixRTC и обнаружение транспортного уровня домашнего сервера.Coturn не заменяет LiveKit. LiveKit включает в себя дополнительный встроенный сервис TURN; следуйте его собственной конфигурации сети и TURN.

Для MatrixRTC на Synapse текущее руководство по самостоятельному размещению Element Call использует matrix_rtc.transportsи включает реестр транспорта домашнего сервера с помощью описанного экспериментального флага функции. В уведомлении Matrix.org 2026 говорится, что это изменение в обнаружении наиболее важно для автономных развертываний Element Call; другие администраторы могут подготовить конечную точку, в то время как поддерживаемые клиенты сохраняют резервный вариант. Проверьте руководство для клиентов и версии Synapse, которые вы используете.

Чем занимается Котурн

STUN позволяет клиенту WebRTC обнаружить общедоступный сетевой адрес, который он может рекламировать. TURN ретранслирует медиапоток, когда два клиента не могут установить прямое соединение через свои маршрутизаторы или межсетевые экраны. Coturn реализует обе эти службы. Без доступного ретранслятора вызов может поступать, но оставаться в статусе «Подключение», если участники находятся в сетях с ограниченными правами доступа или не связанных между собой.

Сервер TURN требует наличия публичного IP-адреса или NAT-шлюза с публичным IP-адресом и корректными правилами переадресации. Сервер, работающий только с частными ресурсами, не может выступать в качестве интернет-ретранслятора для удаленных пользователей Matrix. Для небольшого развертывания Synapse можно установить Coturn на домашнем сервере или использовать отдельный публичный хост. Отдельный хост обеспечивает более четкие границы брандмауэра и независимое масштабирование; установка на том же хосте проще, но требует тщательного соблюдения правил брандмауэра, чтобы ретранслятор не предоставлял доступ к частным сервисам.

1. Установите Coturn и подготовьте общий секретный ключ.

В Debian или Ubuntu установите следующий дистрибутивный пакет:

sudo apt update
sudo apt install coturn

Этот пакет предоставляет службу systemd, а основной конфигурационный файл обычно находится по адресу /etc/turnserver.conf. В других дистрибутивах используются собственные имена пакетов, управление службами и путь к конфигурации.

Создайте надёжный, личный секрет. Например:

openssl rand -hex 32

Используйте один и тот же секретный ключ в Coturn и Synapse. Относитесь к нему как к паролю: не используйте повторно пример значения из документации, не добавляйте его в общедоступный репозиторий и не включайте в публичный отчет об ошибке. Если ваша версия Synapse поддерживает эту функцию turn_shared_secret_path, вы можете хранить секретный ключ в защищенном файле, а не непосредственно в YAML-файле. Synapse добавил эту настройку в версии 1.116.0; проверьте версию, в которой вы развернуты, прежде чем использовать ее.

2. Настройте Coturn для аутентифицированного ретранслятора.

Отредактируйте /etc/turnserver.confи задайте имя службы и аутентификацию с использованием общего секрета. Замените заполнители домена и секрета:

listening-port=3478
tls-listening-port=5349

fingerprint
use-auth-secret
static-auth-secret=REPLACE_WITH_THE_SAME_RANDOM_SECRET
realm=turn.example.org

min-port=49152
max-port=65535

no-tcp-relay
no-multicast-peers
user-quota=12
total-quota=1200

syslog

use-auth-secretВключает механизм учетных данных TURN с ограниченным сроком действия, используемый Synapse. Не настраивайте анонимный доступ и не открывайте ретранслятор. Приведенные выше значения квот являются отправной точкой, взятой из рекомендаций Synapse по Coturn; скорректируйте их в соответствии с ожидаемым количеством пользователей и пропускной способностью. no-tcp-relayПредотвращает запросы клиентов к ретранслятору на подключение к произвольным TCP-адресам; это не означает, что вы должны отключить TCP в качестве транспортного протокола от клиента к TURN.

TURN может использоваться в качестве ретранслятора для доступа к внутренним или конфиденциальным сетевым адресам. Примените полный диапазон адресов запрещенных узлов из текущего примера безопасности Synapse Coturn, включая диапазоны, относящиеся к вашим сетям IPv4 и IPv6. Перед копированием правил проверьте их, если пользователям действительно необходимо получить доступ к узлам частной сети. Также регулярно обновляйте Coturn и отслеживайте его журналы и квоты.

Установите публичный адрес, если Coturn находится за NAT.

Если хост TURN находится за маршрутизатором, добавьте его публичный адрес в конфигурацию, чтобы Coturn объявлял доступный адрес ретранслятора:

external-ip=YOUR_PUBLIC_IPV4
listening-ip=YOUR_PRIVATE_IPV4

Замените примерные значения фактическими адресами; адрес прослушивания необязателен, если Coturn уже привязан к нужному интерфейсу. Перенаправьте диапазон адресов прослушивателя и ретранслятора TURN с маршрутизатора на этот сервер. Несоответствие внешнего адреса является распространенной причиной сбоев при звонках, работающих в одной локальной сети, но прерывающихся между разными сетями.

3. Откройте порты прослушивания и ретрансляции.

Разрешите порты, соответствующие вашей конфигурации Coturn, как в брандмауэре хоста, так и в любом облачном брандмауэре или маршрутизаторе:

  • TCP и UDP 3478 для обычного TURN-слушателя.
  • Диапазон UDP 49152–65535 указан выше для диапазона ретрансляции по умолчанию. Если вы выберете меньший диапазон, настройте тот же диапазон в Coturn и межсетевом экране.
  • TCP 5349 используется для TURN over TLS, а UDP 5349 — только если вы включили и планируете предоставлять DTLS.

Для UFW базовый набор правил прослушивания UDP/TCP и ретрансляции UDP может выглядеть следующим образом:

sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw allow 49152:65535/udp

Добавляйте правила 5349 только тогда, когда соответствующий TLS или DTLS-слушатель настроен и объявлен. Проверьте также группу безопасности вашего провайдера; правило UFW на уровне хоста не может переопределить правило блокировки входящего трафика из облака. Не публикуйте интерфейс административного управления Coturn в Интернете.

4. Настройте Synapse для выдачи учетных данных Coturn.

Добавьте следующие параметры TURN в активную конфигурацию Synapse, обычно это homeserver.yaml: . Имя хоста должно разрешаться публично в хост TURN:

turn_uris:
  - "turn:turn.example.org:3478?transport=udp"
  - "turn:turn.example.org:3478?transport=tcp"
turn_shared_secret: "REPLACE_WITH_THE_SAME_RANDOM_SECRET"
turn_user_lifetime: 1h
turn_allow_guests: true

Первые два URI рекламируют обычные транспортные протоколы TURN на порту 3478. Если TLS настроен и протестирован, вы также можете рекламировать URI, например turns:turn.example.org:5349?transport=tcp, . Не рекламируйте turns:URI, если не обеспечена совместимость сертификата, прослушивателя, брандмауэра и клиента. Сертификат TLS и закрытый ключ Coturn устанавливаются с помощью certи pkeyв его конфигурации.

Настройте параметры turn_allow_guestsв соответствии с правилами вашего номера и политикой в ​​отношении гостей. Включение этой функции может позволить неавторизованным пользователям-гостям запрашивать учетные данные TURN, которые могут быть необходимы для звонков гостей, но могут увеличить риск злоупотреблений. Отключение этой функции может сделать звонки ненадежными для гостей. В любом случае используйте мониторинг и квоты.

После внесения изменений в файлы Coturn и Synapse перезапустите их:

sudo systemctl restart coturn
sudo systemctl restart matrix-synapse

Используйте фактическое имя юнита systemd в Synapse, если оно отличается. Перезагрузите или перезапустите затронутые клиенты; настройки TURN в Synapse периодически обновляются, поэтому клиент может не сразу увидеть изменения.

Следует ли включить TURN через TLS?

Начните с UDP/TCP TURN на порту 3478 и убедитесь, что кандидат на ретрансляцию работает. Добавляйте TURN через TLS только в том случае, если это необходимо в сетях ваших пользователей, например, в корпоративных межсетевых экранах, которые разрешают трафик, подобный TLS, но блокируют обычный UDP. TLS расширяет возможности подключения, но добавляет необходимость обновления сертификатов, еще одного прослушивателя и проверки совместимости клиентов.

Есть одно важное замечание, касающееся Matrix: в текущем руководстве Synapse Coturn указано, что TLS/DTLS с сертификатами Let's Encrypt не работает с клиентами Matrix, использующими библиотеку WebRTC Chromium, включая Element для Android и iOS, как указано в этом руководстве. Перед публикацией URI TLS проверьте совместимость с вашими версиями клиента. В том же руководстве рекомендуется сначала настроить базовую службу, а затем добавить TLS/DTLS.

5. Проверьте учетные данные и проведите тестирование во внешней сети.

Сначала убедитесь, что Coturn запущен, и просмотрите его журналы:

sudo systemctl status coturn
sudo journalctl -u coturn -f

Затем, в рамках авторизованной клиентской сессии Matrix, проверьте запрос к текущей конечной точке API клиент-сервер Synapse /_matrix/client/v3/voip/turnServer. Успешный ответ должен содержать имя пользователя, пароль, время жизни и настроенные вами URI TURN. Не публикуйте этот ответ; учетные данные являются временными токенами доступа для вашего ретранслятора.

Используйте официальный пример WebRTC Trickle ICE для тестирования с именем пользователя и паролем, полученными от Synapse. Добавьте свой TURN URI и учетные данные, запустите тест сбора ICE и найдите кандидата, тип которого равен relay. Сервер, который просто отвечает на STUN, может показать кандидата, рефлексивного по отношению к серверу, но при этом не сможет передавать медиаданные. Протестируйте с мобильного соединения или сети за пределами вашей локальной сети, а затем совершите реальный звонок между участниками из разных сетей.

Диагностика распространенных неисправностей

  • Учетные данные TURN отсутствуют: убедитесь, что Synapse загрузил правильную конфигурацию, успешно перезапустился и имеет установленный общий секрет. Проверьте ответ на запрос для /voip/turnServer.
  • Учетные данные отображаются, но кандидаты на ретрансляцию не формируются: проверьте TCP/UDP 3478, заявленное имя хоста, совпадение секретного ключа, журналы Coturn и диапазон UDP-ретрансляции через каждый межсетевой экран.
  • Звонки работают в одной локальной сети, но не работают в других сетях: проверка external-ip, переадресация портов и обратный маршрут. Coturn должен объявить публичный адрес, к которому могут обращаться клиенты.
  • Вызовы устанавливаются только при отключенном TLS: необходимо подтвердить цепочку сертификатов, прослушиватель TLS, заявленный turns:URI и совместимость с конкретным клиентом.
  • Традиционные звонки работают, но Element Call — нет: проверьте настройку транспортного протокола MatrixRTC/LiveKit отдельно. Успешный тест Coturn не подтверждает работоспособность LiveKit SFU или службы авторизации MatrixRTC.

Для браузерных клиентов диагностика WebRTC может показать, выбрал ли медиаплеер кандидата на ретрансляцию. Для MatrixRTC убедитесь, что Synapse публикует транспортную конечную точку и что маршруты LiveKit WebSocket и авторизации доступны. Проверьте как текущую конечную точку, так и любой задокументированный резервный вариант обнаружения, необходимый для поддерживаемых вами клиентов.

Ссылки на конфигурацию

Оставить комментарий

Как настроить бота для работы с матрицами с помощью Python и библиотеки Simple-Matrix-Bot-Lib

Как настроить бота для работы с матрицами с помощью Python и библиотеки Simple-Matrix-Bot-Lib

Создайте бота для Matrix с помощью Python и Simple-Matrix-Bot-Lib, сравните варианты аутентификации и развертывания, протестируйте команды и разберитесь, когда следует использовать matrix-nio вместо этого.

Как установить Jitsi Meet на Ubuntu 24.04 с SSL-сертификатом Let's Encrypt

Как установить Jitsi Meet на Ubuntu 24.04 с SSL-сертификатом Let's Encrypt

Установите Jitsi Meet на Ubuntu 24.04 с настройкой DNS, правилами брандмауэра, официальными репозиториями, SSL-сертификатом Let's Encrypt, проверкой служб и устранением неполадок NAT.

Устраните ошибку «Проверка SSL-сертификата не удалась» в клиенте синхронизации ownCloud Desktop.

Устраните ошибку «Проверка SSL-сертификата не удалась» в клиенте синхронизации ownCloud Desktop.

Устраните ошибки синхронизации сертификатов ownCloud Desktop, проверив URL-адрес сервера, имя и цепочку сертификатов, системное время, версию клиента и хранилище доверенных центров сертификации.

Как настроить кэширование Redis для Nextcloud на Ubuntu 24.04

Как настроить кэширование Redis для Nextcloud на Ubuntu 24.04

Настройка блокировки файлов Redis и распределенного кэширования для Nextcloud на Ubuntu 24.04 с использованием PhpRedis, APCu, службы Redis, работающей только через loopback, и практические шаги проверки.

Исправление ошибок сквозного шифрования (E2EE) в Element Web «Не удалось расшифровать событие».

Исправление ошибок сквозного шифрования (E2EE) в Element Web «Не удалось расшифровать событие».

Устраните ошибки расшифровки Element Web, проверив подлинность устройства, резервную копию ключа, ключи восстановления и отсутствующие ключи комнаты — без риска потери истории сообщений.

Как настроить и обеспечить двухфакторную аутентификацию (2FA) в Nextcloud

Как настроить и обеспечить двухфакторную аутентификацию (2FA) в Nextcloud

Узнайте, как включить поставщиков двухфакторной аутентификации Nextcloud, обеспечить двухфакторную аутентификацию для пользователей или групп, подготовить средства восстановления, а также проверить вход в систему и клиентские приложения.

Как ограничить исходящую пересылку электронной почты по IP-адресу в Zimbra

Как ограничить исходящую пересылку электронной почты по IP-адресу в Zimbra

Ограничьте неаутентифицированную исходящую пересылку почты в Zimbra только доверенными IP-адресами с помощью zimbraMtaMyNetworks. Узнайте, как безопасно проверять, обновлять, перезагружать и подтверждать список разрешенных адресов.

Исправлена ​​ошибка, вызывающая предупреждение Nextcloud об ограничении памяти PHP.

Исправлена ​​ошибка, вызывающая предупреждение Nextcloud об ограничении памяти PHP.

Установите параметр memory_limit для PHP в Nextcloud не менее чем на 512 МБ, найдите правильную конфигурацию веб-версии PHP, перезапустите Apache или PHP-FPM и убедитесь, что предупреждение исчезло.

Как настроить сервер Matrix Coturn TURN/STUN для аудио- и видеозвонков

Как настроить сервер Matrix Coturn TURN/STUN для аудио- и видеозвонков

Настройте Coturn с Synapse для вызовов Matrix WebRTC. Сконфигурируйте общие учетные данные, NAT, порты брандмауэра, параметры TLS и разграничьте устаревший TURN от MatrixRTC и LiveKit.

Как настроить почтовое приложение Nextcloud с аутентификацией OAuth2

Как настроить почтовое приложение Nextcloud с аутентификацией OAuth2

Настройте почту Nextcloud с использованием OAuth2 для Gmail или Microsoft 365, проверьте доступ по протоколам IMAP/SMTP, устраните проблемы с переадресацией и узнайте об ограничениях.