Полное исправление проблем со звуком в BigBlueButton
Дата: 2026-01-09
Контейнер: BBB-CONT22-1
Проблемы: Нет звука, ошибка ICE 1010, таймауты, потеря соединения
Выполненные исправления
1. Исправление конфигурации FreeSWITCH
Проблема: external_rtp_ip и external_sip_ip были закомментированы
Решение: Добавлены активные строки в /opt/freeswitch/etc/freeswitch/vars.xml:
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=89.179.242.240"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=89.179.242.240"/>
Проблема: В external.xml использовался $${local_ip_v4} вместо $${external_rtp_ip}
Решение: Изменены параметры в /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml:
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
2. Исправление конфигурации mediasoup
Проблема: mediasoup.webrtc.announcedIp использовал доменное имя
Решение: Изменен на IP адрес в /etc/bigbluebutton/bbb-webrtc-sfu/production.yml:
mediasoup:
webrtc:
listenIps:
- ip: 0.0.0.0
announcedIp: 89.179.242.240 # ✅ IP вместо доменного имени
Проблема: mediasoup.plainRtp.listenIp не был настроен
Решение: Добавлена конфигурация:
plainRtp:
listenIp:
ip: 10.218.14.37
announcedIp: 89.179.242.240
3. Исправление конфигурации freeswitch.ip
Проблема: freeswitch.ip использовал доменное имя, вызывая таймауты
Решение: Изменен на IP адрес:
freeswitch:
ip: 10.218.14.37 # ✅ IP вместо school.cdto.life
sip_ip: 10.218.14.37
esl_password: 0d2fdc71733c127c
4. Настройка TURN сервера
Проблема: TURN сервер не был настроен в bbb-webrtc-sfu, вызывая ошибки ICE 1010
Решение: Добавлена конфигурация TURN:
turn:
enabled: true
urls:
- turn:school.cdto.life:3478?transport=udp
- turn:school.cdto.life:3478?transport=tcp
secret: 8e3f6c01a3bbac78ad826d04c03cd4ab3de2fba747943005af2427e7865a09fa
username: bbb
Итоговая конфигурация
/etc/bigbluebutton/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
/opt/freeswitch/etc/freeswitch/vars.xml
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=89.179.242.240"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=89.179.242.240"/>
/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
Созданные скрипты
/home/cdto/DENKART/scripts/fix-bbb-audio.sh-
Исправляет конфигурацию FreeSWITCH (external_rtp_ip, external_sip_ip)
-
/home/cdto/DENKART/scripts/fix-bbb-audio-mediasoup.sh -
Настраивает mediasoup.plainRtp.listenIp
-
/home/cdto/DENKART/scripts/fix-bbb-conf-issues.sh - Исправляет проблемы конфигурации nginx и sip.nginx
Проверка исправлений
1. Проверка конфигурации
# Проверка production.yml
lxc exec BBB-CONT22-1 -- cat /etc/bigbluebutton/bbb-webrtc-sfu/production.yml
# Проверка vars.xml
lxc exec BBB-CONT22-1 -- grep "external_rtp_ip\|external_sip_ip" /opt/freeswitch/etc/freeswitch/vars.xml | grep -v "^#" | grep -v "^[[:space:]]*<!--"
# Проверка external.xml
lxc exec BBB-CONT22-1 -- grep "ext-rtp-ip\|ext-sip-ip" /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml | grep -v "^[[:space:]]*<!--"
2. Проверка сервисов
# Статус сервисов
lxc exec BBB-CONT22-1 -- systemctl status bbb-webrtc-sfu freeswitch coturn
# Проверка портов
lxc exec BBB-CONT22-1 -- ss -tuln | grep -E "5060|5066|8021|3478|24577"
3. Проверка логов
# Логи bbb-webrtc-sfu
lxc exec BBB-CONT22-1 -- journalctl -u bbb-webrtc-sfu -f
# Логи FreeSWITCH
lxc exec BBB-CONT22-1 -- journalctl -u freeswitch -f
# Логи TURN
lxc exec BBB-CONT22-1 -- tail -f /var/log/turnserver/turnserver.log
Ожидаемый результат
После всех исправлений:
- ✅ FreeSWITCH отправляет правильный внешний IP в SDP
- ✅ mediasoup использует правильные IP адреса для ICE candidates
- ✅ bbb-webrtc-sfu может подключиться к FreeSWITCH без таймаутов
- ✅ TURN сервер доступен для клиентов
- ✅ Клиенты могут использовать TURN для обхода NAT
- ✅ Ошибка ICE 1010 должна исчезнуть
- ✅ Звук должен работать
Следующие шаги
- ✅ Все исправления применены
- ⏳ Требуется тестирование
Протестируйте:
- Создайте новую конференцию
- Подключитесь с микрофоном
- Проверьте, что ошибка ICE 1010 исчезла
- Проверьте, что звук работает
- Проверьте в браузере (about:webrtc), что используется TURN
- Проверьте, что соединение стабильно
Дополнительная диагностика
Если проблема сохраняется:
1. Проверка портов на роутере
Убедитесь, что на роутере проброшены:
- 3478 (UDP/TCP) - TURN сервер
- 16384-32768 (UDP) - WebRTC/RTP трафик
- 24577-32768 (UDP) - mediasoup WebRTC
2. Проверка в браузере
Откройте about:webrtc в Firefox или chrome://webrtc-internals в Chrome и проверьте:
- Есть ли TURN candidates
- Какой тип соединения используется
- Есть ли ошибки ICE
3. Проверка TURN сервера
# Тест TURN с внешнего сервера
turnutils_stunclient school.cdto.life:3478
# Проверка логов TURN
lxc exec BBB-CONT22-1 -- tail -f /var/log/turnserver/turnserver.log
Статус
- ✅ Все конфигурации исправлены
- ✅ Сервисы перезапущены
- ✅ TURN сервер настроен
- ⏳ Требуется тестирование
Примечание: Если после всех исправлений проблема сохраняется, возможно, требуется дополнительная настройка портов на роутере или проверка файрвола.