Исправление ошибки ICE 1010 через настройку TURN сервера
Дата: 2026-01-09
Контейнер: BBB-CONT22-1
Проблема: Ошибка ICE 1010 - тайм-аут согласования соединения, потеря соединения
Обнаруженная проблема
Пользователи получают:
- Ошибку ICE 1010 - тайм-аут согласования соединения
- Потерю соединения
- Попытки переподключения не успешны
Анализ
Из проверки видно:
- ✅ TURN сервер (coturn) работает на порту 3478
- ✅ Конфигурация TURN сервера правильная
- ❌ TURN сервер не настроен в конфигурации bbb-webrtc-sfu
- ❌ Клиенты не могут использовать TURN для обхода NAT
Причина
Ошибка ICE 1010 возникает, когда WebRTC не может установить соединение через NAT. Это происходит потому, что:
- Клиенты не могут напрямую подключиться к серверу через NAT
- TURN сервер не настроен в конфигурации bbb-webrtc-sfu
- Клиенты не получают TURN сервер в ICE candidates
Решение
Настройка TURN сервера в bbb-webrtc-sfu
Добавить конфигурацию TURN сервера в /etc/bigbluebutton/bbb-webrtc-sfu/production.yml:
turn:
enabled: true
urls:
- turn:school.cdto.life:3478?transport=udp
- turn:school.cdto.life:3478?transport=tcp
secret: 8e3f6c01a3bbac78ad826d04c03cd4ab3de2fba747943005af2427e7865a09fa
username: bbb
Выполненные исправления
- ✅ Добавлена конфигурация TURN сервера в production.yml
- ✅ TURN сервер включен (
enabled: true) - ✅ Настроены URL для UDP и TCP транспортов
- ✅ Указан секрет для аутентификации
- ✅ bbb-webrtc-sfu перезапущен
Полная конфигурация production.yml
mediasoup:
webrtc:
listenIps:
- ip: 0.0.0.0
announcedIp: 89.179.242.240
plainRtp:
listenIp:
ip: 10.218.14.37
announcedIp: 89.179.242.240
freeswitch:
ip: 10.218.14.37
sip_ip: 10.218.14.37
esl_password: 0d2fdc71733c127c
turn:
enabled: true
urls:
- turn:school.cdto.life:3478?transport=udp
- turn:school.cdto.life:3478?transport=tcp
secret: 8e3f6c01a3bbac78ad826d04c03cd4ab3de2fba747943005af2427e7865a09fa
username: bbb
Почему это важно
TURN (Traversal Using Relays around NAT) сервер необходим для:
1. Обхода проблем с NAT и файрволами
2. Установления соединения между клиентами, которые не могут подключиться напрямую
3. Обеспечения стабильного WebRTC соединения
Без TURN сервера:
- Клиенты за NAT не могут установить соединение
- Возникают ошибки ICE 1010
- Соединения нестабильны или не устанавливаются
С TURN сервером:
- Клиенты могут использовать TURN для ретрансляции трафика
- ICE соединение устанавливается успешно
- Соединения стабильны
Проверка работы
1. Проверка логов
После перезапуска проверьте логи:
lxc exec BBB-CONT22-1 -- journalctl -u bbb-webrtc-sfu --since "1 minute ago" | grep -i "turn\|error"
2. Проверка в браузере
- Откройте конференцию BigBlueButton
- Откройте консоль браузера (F12)
- Проверьте, что в SDP есть TURN серверы
- Откройте
about:webrtcв Firefox илиchrome://webrtc-internalsв Chrome - Проверьте, что используется TURN сервер
3. Проверка TURN сервера
Убедитесь, что TURN сервер доступен:
# Проверка портов
lxc exec BBB-CONT22-1 -- ss -tuln | grep 3478
# Проверка логов TURN
lxc exec BBB-CONT22-1 -- tail -f /var/log/turnserver/turnserver.log
Дополнительные проверки
1. Порты TURN на роутере
Убедитесь, что на роутере проброшены порты:
- 3478 (UDP/TCP) - для TURN протокола
- 32769-65535 (UDP) - для relay трафика (если настроено)
2. Конфигурация TURN сервера
Проверьте конфигурацию /etc/turnserver.conf:
lxc exec BBB-CONT22-1 -- cat /etc/turnserver.conf | grep -E "listening-ip|external-ip|realm|static-auth-secret"
Должно быть:
- listening-ip=0.0.0.0 или listening-ip=10.218.14.37
- external-ip=89.179.242.240
- realm=school.cdto.life
- static-auth-secret=8e3f6c01a3bbac78ad826d04c03cd4ab3de2fba747943005af2427e7865a09fa
3. Проверка доступности TURN
Проверьте, что TURN сервер доступен извне:
# С внешнего сервера или через онлайн-сервис
turnutils_stunclient school.cdto.life:3478
Следующие шаги
- ✅ TURN сервер настроен в bbb-webrtc-sfu
- ✅ bbb-webrtc-sfu перезапущен
- ⏳ Требуется тестирование
Протестируйте:
- Создайте новую конференцию
- Подключитесь с микрофоном
- Проверьте, что ошибка ICE 1010 исчезла
- Проверьте, что соединение стабильно
- Проверьте в браузере (about:webrtc), что используется TURN
Дополнительная диагностика
Если проблема сохраняется:
1. Проверка ICE candidates
В браузере откройте about:webrtc и проверьте:
- Есть ли TURN candidates
- Какой тип соединения используется (host, srflx, relay)
- Есть ли ошибки ICE
2. Проверка портов
Убедитесь, что порты WebRTC проброшены:
# На хосте
sudo ss -tuln | grep -E "24577|32768|3478"
# В контейнере
lxc exec BBB-CONT22-1 -- ss -tuln | grep -E "24577|32768|3478"
3. Проверка файрвола
Убедитесь, что файрвол не блокирует трафик:
sudo ufw status
sudo iptables -L -n | grep -E "3478|24577|32768"
Статус
- ✅ TURN сервер работает
- ✅ Конфигурация TURN добавлена в bbb-webrtc-sfu
- ✅ bbb-webrtc-sfu перезапущен
- ⏳ Требуется тестирование
Примечание: После настройки TURN сервера клиенты должны автоматически получать TURN сервер в ICE candidates и использовать его для обхода NAT. Это должно решить проблему ICE 1010.