Главная
» Как сделать
»
Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.
Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.
Чтобы исправить проблему с вызовом Nextcloud Talk, который не удается установить соединение или имеет одностороннюю передачу данных, настройте доступный ретранслятор TURN, введите его имя хоста, порт и общий секрет в настройках Talk и разрешите трафик как через прослушиватель TURN, так и через его порты ретрансляции. TURN предоставляет WebRTC маршрут через ретранслятор при сбое прямого соединения; он не восстанавливает слабый Wi-Fi, потерю пакетов или перегруженную сеть.
Показательный пример: представьте небольшую организацию, сотрудники которой могут присоединиться к звонку Talk из офиса, но не могут надежно передавать видео из сети отеля. Межсетевой экран отеля может блокировать прямой канал передачи мультимедиа. В приведенном ниже примере показано, как администратор проверяет маршрут, настраивает coTURN и тестирует изменения; это не отчет о реальном развертывании или тестировании.
1. Убедитесь, что реле — это правильное решение.
Nextcloud Talk сначала пытается напрямую соединить участников. STUN помогает устройствам обнаружить публичный адрес и порт, созданные маршрутизатором. Если брандмауэр или ограничительный NAT по-прежнему препятствуют прямому соединению, TURN пересылает медиаданные. Один только STUN-сервер не может обеспечить такую пересылку.
Сравните звонок в офисной сети с звонком из другой сети, например, из точки доступа Wi-Fi. Если звонок устанавливается в одном месте, но неоднократно не удается установить аудио или видео в другом, разумной следующей проверкой будет TURN. Если звонок устанавливается, но изображение остается размытым или прерывистым во всех сетях, сначала измерьте пропускную способность, потерю пакетов, качество Wi-Fi и загрузку процессора; передача большего количества медиафайлов через ретранслятор может увеличить нагрузку и не создаст дополнительную пропускную способность.
Иллюстрация: страница администратора с полями конфигурации и скрытыми учетными данными, представляющими собой настройки, которые необходимо проверить перед тестовым звонком.
Запишите версию Talk, имя хоста и порт TURN, информацию о том, находится ли хост TURN за NAT, и установлен ли высокопроизводительный бэкэнд (HPB). Сохраните эту информацию в секрете. Приведенные ниже команды предполагают использование Linux с systemd; пути к пакетам могут отличаться.
2. Настройте coTURN с аутентификацией с использованием общего секретного ключа.
В документации Nextcloud Talk рекомендуется использовать coTURN версии 4.5.0.8 или более поздней, поскольку в более старых версиях есть проблема с UDP-сокетами IPv6. Установите его из репозитория вашего дистрибутива и найдите активный конфигурационный файл (часто это /etc/turnserver.conf). Сгенерируйте случайный секрет на хосте TURN:
openssl rand -hex 32
Сохраните это значение в менеджере паролей или защищенном хранилище конфигурации. В активной конфигурации coTURN задайте прослушиватель, аутентификацию с использованием общего секрета и область действия. Замените пример имени хоста и секрета реальными значениями:
В документации Talk указаны lt-cred-mechтолько версии coTURN младше 4.5.0.8; лучше обновить более старые установки, чем слепо копировать устаревшие настройки. Если coTURN находится за NAT, настройте его публичный и ретрансляционный адреса в соответствии с руководством по развертыванию и убедитесь, что DNS-имя разрешается в адрес, доступный для участников.
Иллюстрация: редактор конфигурации, отображающий параметры прослушивателя coTURN и настройки аутентификации; используйте указанные в тексте имена параметров, а не значения, выведенные из изображения.
3. Откройте путь прослушивания и ретрансляции.
Разрешите использование порта прослушивания TURN (3478 в этом примере) через брандмауэры хоста и вышестоящего сервера для протоколов UDP и TCP. Для TLS coTURN также требуется действительный сертификат и закрытый ключ, а Talk должен использовать turns:. Порт 443 может использоваться в сетях с более строгими ограничениями, но проверьте наличие конфликтов: HPB также может нуждаться в этом порте, что потребует отдельных IP-адресов или хостов.
Медиа-устройства также используют ретрансляционные порты. Разрешите диапазон UDP-адресов ретрансляции coTURN в брандмауэре хоста, группе безопасности облака и маршрутизаторе. Если вы установили min-portи max-port, откройте именно этот диапазон; разрешения только для прослушивателя недостаточно. Для хоста TURN за NAT перенаправьте как диапазон для прослушивателя, так и диапазон для ретрансляции, а также настройте его публичные/ретрансляционные адреса. Сохраните ограничения для пиров coTURN, чтобы предотвратить доступ к несвязанным внутренним службам.
Иллюстрация: записи брандмауэра представляют собой трафик прослушивания и ретрансляции, который должен быть разрешен; точный диапазон портов зависит от конфигурации coTURN.
Перезапустите coTURN после редактирования и убедитесь, что служба активна. Например, на хосте с systemd:
sudo systemctl restart coturn
sudo systemctl status coturn --no-pager
Статус службы подтверждает, что процесс запущен; он не доказывает, что удаленный браузер может связаться с ретранслятором. Проверьте брандмауэры хоста и провайдера по отдельности и просмотрите журналы coTURN на наличие ошибок привязки, сбоев аутентификации или сообщений о выделении квот.
4. Добавьте сервер в Talk и подтвердите, что это реальный звонок.
От имени администратора откройте «Администрирование» > «Talk» . Введите имя хоста и порт TURN, например turn.example.org:3478, и тот же секретный ключ, что и в static-auth-secret. Не включайте https://, turn:, или turns:в поле имени хоста; выберите схему в настройках Talk. По возможности оставляйте включенными UDP и TCP. Используйте turns:только после настройки TLS в coTURN.
Сохраните и запустите встроенную проверку TURN в Talk, если она доступна. Затем совершите звонок из сети с ограничениями в другую сеть и проверьте двустороннюю аудио- и видеосвязь. Во время звонка проверьте журналы coTURN на наличие ошибок выделения ресурсов или аутентификации. В примере администратор сравнивает соединение, аналогичное гостиничному, с офисным звонком.
Иллюстрация: окно вызова для двух участников представляет собой сквозную проверку после сохранения настроек TURN; подтвердите, что каждый участник может отправлять и получать медиафайлы.
Если проверка не удалась, сравните имя хоста, порт и секретный ключ, затем проверьте DNS, правила брандмауэра, диапазон UDP-трафика ретранслятора, переадресацию NAT и журналы служб. Базовая проверка может пропустить проблему с путем ретрансляции, поэтому проведите тестирование из внешней сети. Для диагностики только с помощью TURN следуйте процедуре Talk, специфичной для браузера; метод с использованием консоли является временным, и поведение браузера может отличаться.
TURN не масштабирует групповые звонки. Для больших групп, по данным Nextcloud, для звонков с участием более 5–10 пользователей требуется HPB. Если TURN подключается, но качество видео остается плохим, перед изменением квот ретрансляции проверьте пропускную способность, потерю пакетов, помехи Wi-Fi и загрузку сервера.
Проверка
Решение проблемы подтверждается тремя наблюдаемыми признаками: Talk принимает конфигурацию TURN, в журналах coTURN отображаются выделения ретрансляторов во время вызова, и участники из разных сетей могут обмениваться аудио- и видеосигналами в обоих направлениях. Если работает только офисный вызов или в журналах не отображается входящих запросов, значит, публичный маршрут по-прежнему заблокирован или настроенные хост и порт не совпадают. Если передача медиаданных происходит, но качество остается низким, значит, соединение TURN работает, и оставшаяся проблема, вероятно, находится в другом месте сети или инфраструктуры вызова.