Полное исправление проблемы ICE 1010 в BigBlueButton

Дата: 2026-01-09
Проблема: Тайм-аут согласования соединения (Ошибка ICE 1010)
Причина: Комплексная проблема с конфигурацией WebRTC, TURN/STUN, FreeSWITCH и mediasoup

Проблема

Пользователи получают ошибку:
- "Попытка переподключения аудио. Тайм-аут согласования соединения (Ошибка ICE 1010)"
- "Обнаружена потеря соединения и звук не появляется"

В логах видны таймауты:

CRITICAL: job timed out
MEDIA_SERVER_REQUEST_TIMEOUT

Причина

Проблема вызвана несколькими факторами:
1. Дубликаты параметров в external.xml (auto-nat и переменные)
2. Отсутствие STUN сервера в конфигурации mediasoup
3. Неправильная конфигурация TURN сервера
4. Проблемы с NAT traversal

Решение

1. Исправление FreeSWITCH конфигурации

Файл: /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml

Проблема: Дубликаты параметров ext-rtp-ip и ext-sip-ip

Исправление: Удалить строки с auto-nat и оставить только те, которые используют переменные:

<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>

Команды:

lxc exec BBB-CONT22-1 -- sed -i '/param name="ext-rtp-ip" value="auto-nat"/d' /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml
lxc exec BBB-CONT22-1 -- sed -i '/param name="ext-sip-ip" value="auto-nat"/d' /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml

2. Добавление STUN сервера в mediasoup

Файл: /etc/bigbluebutton/bbb-webrtc-sfu/production.yml

Исправление: Добавить STUN сервер в конфигурацию:

turn:
  enabled: true
  urls:
    - turn:school.cdto.life:3478?transport=udp
    - turn:school.cdto.life:3478?transport=tcp
  secret: 8e3f6c01a3bbac78ad826d04c03cd4ab3de2fba747943005af2427e7865a09fa
  username: bbb
  stunServers:
    - urls: stun:school.cdto.life:3478

3. Проверка TURN сервера (coturn)

Файл: /etc/turnserver.conf

Проверка:

external-ip=89.179.242.240
relay-ip=10.218.14.37

4. Перезапуск сервисов

lxc exec BBB-CONT22-1 -- systemctl restart freeswitch
lxc exec BBB-CONT22-1 -- systemctl restart coturn
lxc exec BBB-CONT22-1 -- systemctl restart bbb-webrtc-sfu

Автоматизация

Скрипт для автоматического исправления:

/home/cdto/DENKART/scripts/fix-bbb-ice-1010-complete.sh

Использование:

./scripts/fix-bbb-ice-1010-complete.sh [BBB_CONTAINER] [CONTAINER_IP] [EXTERNAL_IP] [DOMAIN]

Пример:

./scripts/fix-bbb-ice-1010-complete.sh BBB-CONT22-1 10.218.14.37 89.179.242.240 school.cdto.life

Проверка

1. Проверка FreeSWITCH

lxc exec BBB-CONT22-1 -- cat /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml | grep -E "ext-rtp-ip|ext-sip-ip"

Ожидаемый результат: Только строки с переменными, без auto-nat

2. Проверка mediasoup

lxc exec BBB-CONT22-1 -- cat /etc/bigbluebutton/bbb-webrtc-sfu/production.yml

Ожидаемый результат: STUN сервер присутствует в конфигурации

3. Проверка TURN сервера

lxc exec BBB-CONT22-1 -- cat /etc/turnserver.conf | grep -E "external-ip|relay-ip"

Ожидаемый результат:

external-ip=89.179.242.240
relay-ip=10.218.14.37

4. Проверка статуса сервисов

lxc exec BBB-CONT22-1 -- systemctl status freeswitch coturn bbb-webrtc-sfu

Ожидаемый результат: Все сервисы active (running)

Связанные исправления

  1. FreeSWITCH конфигурация (external_rtp_ip, external_sip_ip)
  2. См. /home/cdto/DENKART/docs/operations/bbb-audio-fix.md

  3. mediasoup конфигурация (webrtc.announcedIp, plainRtp.listenIp)

  4. См. /home/cdto/DENKART/docs/operations/bbb-ice-1010-fix.md

  5. TURN сервер в bbb-webrtc-sfu

  6. См. /home/cdto/DENKART/docs/operations/bbb-ice-1010-turn-fix.md

  7. TURN сервер (coturn) relay-ip

  8. См. /home/cdto/DENKART/docs/operations/bbb-turn-relay-ip-fix.md

Примечания

  • Дубликаты параметров в external.xml могут вызывать конфликты
  • STUN сервер необходим для правильной работы ICE
  • TURN сервер необходим для обхода ограничений NAT
  • Порты 3478 (UDP/TCP) и 32769-65535 (UDP) должны быть проброшены на роутере

Следующие шаги

  1. Протестируйте звук в BigBlueButton
  2. Проверьте логи на наличие ошибок:
  3. lxc exec BBB-CONT22-1 -- journalctl -u bbb-webrtc-sfu -f
  4. lxc exec BBB-CONT22-1 -- tail -f /var/log/turnserver/turnserver.log
  5. Если проблема сохраняется:
  6. Проверьте порты на роутере
  7. Проверьте файрвол
  8. Проверьте сетевые маршруты