Исправление проблемы: ICE consent expired timeout
Проблема
После присоединения к аудиоконференции через 1-2 секунды (на самом деле ~30 секунд) соединение разрывается с ошибкой:
ICE consent expired due to timeout, moving to 'disconnected' state
mediasoup: transport ICE state failed
Анализ логов
Что работает:
- ✅ WebSocket соединение устанавливается (код 101)
- ✅ Аудио сессия запускается ("Audio session started")
- ✅ Медиа начинает течь ("Client audio is FLOWING")
- ✅ ICE соединение устанавливается ("mediasoup: transport ICE state completed")
Что не работает:
- ❌ Через ~30 секунд ICE consent истекает
- ❌ Соединение переходит в состояние "disconnected"
- ❌ Транспорт ICE переходит в состояние "failed"
Причина
ICE (Interactive Connectivity Establishment) consent истекает из-за:
1. Проблемы с NAT/firewall - пакеты не проходят через NAT
2. Неправильная конфигурация STUN/TURN - серверы не настроены или недоступны
3. Проблемы с сетью - пакеты теряются или блокируются
Решения
1. Проверить конфигурацию STUN/TURN
# Проверить конфигурацию
lxc exec BBB-CONT22-1 -- cat /etc/bigbluebutton/bbb-webrtc-sfu/production.yml
# Проверить доступность STUN серверов
lxc exec BBB-CONT22-1 -- curl http://127.0.0.1:8090/bigbluebutton/api/stuns
2. Проверить внешний IP
# Проверить внешний IP в конфигурации
lxc exec BBB-CONT22-1 -- bbb-conf --check | grep external
Убедиться, что внешний IP правильный и доступен из интернета.
3. Проверить порты
Убедиться, что порты для WebRTC открыты:
- UDP/TCP: 16384-32768
- TCP: 80, 443
4. Настроить TURN сервер (если используется)
Если используется TURN сервер, убедиться, что он правильно настроен и доступен.
Следующие шаги
- Проверить конфигурацию STUN/TURN
- Проверить внешний IP и доступность портов
- Проверить настройки брандмауэра
- При необходимости настроить TURN сервер