WebRTC-Fehler 1004 nach coturn-Installation

Liebe Mitstreiter,

ich erklär mal erst das Setting:

Ich habe zwei Server. Auf dem einen (aus der Hetzner–Tauschbörse) läuft bbb mit direkten Verbindungen stabil. Es kann eine Audioverbindung aufgenommen werden ohne dass ein Fehler gemeldet wird. Ich kann mit Ton oder auch Bild in eine BBB-Session einloggen und alle läuft jut.

Nun habe ich einen zweiten Server (auch bei Hetzner in der Tauschbörse erworben). Auf diesem habe ich nach https://docs.bigbluebutton.org/2.2/setup-turn-server.html einen TURN-Server aufgesetzt, ein Secret generieren lassen und hab auch brav den User turnserver in die Gruppe ssl-cert verfrachtet. Und der Gruppe ssl-cert das Verzeichnis /etc/letsencrypt/live auf dem TURN-Server freigegeben.

Ich habe bei Systemstart den Start des TURN-Servers enabled und alles schön neu gestartet inkl. des Servers.

Wenn ich nun direkte Verbindungen mit unserem BBB.-Server aufnehme, dann klappt es mit der Videokonferenz. Wenn ich jedoch den Umweg über den FF-Browser gehe (eben mit about:config --> media-peerconnection.ice.relay_only --> meine BBB-Domain), dann Spuckt er mir Fehler 1004 aus und hat keine Möglichkeit, mein PC-Mikrofon aufzuschalten.

Die Konfiguration des BBB-Servers stimmt auch, da ich via Installskript ufw und auch den TURN-Server gleich mit installieren gelassen habe.

Ich habe den TURN-Server auch zum 2. Mal neu aufgesetzt.

Firewall ist komplett offen, so dass es auch an den Firewallregeln nicht liegen kann.

Ich habe folgenden Lösungsversuch noch nicht versucht: https://groups.google.com/g/bigbluebutton-setup/c/F2MlW6Voj-0/m/ZXDq5_-uEQAJ. Meint ihr es lohnt sich, den mal zu versuchen? Oder bin ich einfach Betriebsblind.

Ich schick euch noch hier den Ausdruck des werbt-Protokolls von FF:
insert ‚ice‘ (registry) succeeded: ice

insert 'ice.pref' (registry) succeeded: ice.pref

insert 'ice.pref.type' (registry) succeeded: ice.pref.type

insert 'ice.pref.type.srv_rflx' (UCHAR) succeeded: 0x64

insert 'ice.pref.type.peer_rflx' (UCHAR) succeeded: 0x6e

insert 'ice.pref.type.host' (UCHAR) succeeded: 0x7e

insert 'ice.pref.type.relayed' (UCHAR) succeeded: 0x05

insert 'ice.pref.type.srv_rflx_tcp' (UCHAR) succeeded: 0x63

insert 'ice.pref.type.peer_rflx_tcp' (UCHAR) succeeded: 0x6d

insert 'ice.pref.type.host_tcp' (UCHAR) succeeded: 0x7d

insert 'ice.pref.type.relayed_tcp' (UCHAR) succeeded: 0x00

insert 'stun' (registry) succeeded: stun

insert 'stun.client' (registry) succeeded: stun.client

insert 'stun.client.maximum_transmits' (UINT4) succeeded: 7

insert 'ice.trickle_grace_period' (UINT4) succeeded: 5000

insert 'ice.tcp' (registry) succeeded: ice.tcp

insert 'ice.tcp.so_sock_count' (INT4) succeeded: 0

insert 'ice.tcp.listen_backlog' (INT4) succeeded: 10

insert 'ice.tcp.disable' (char) succeeded: \000

insert 'ice.forced_interface_name' (string) succeeded:

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): relay only option results in no host candidate for IP6:[2a02:8071:41bc:4600:c916:508d:bc72:200e]:0/UDP

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxxn/html5client/join?sessionToken=tg6v08rwtmxknmi9)): relay only option results in no host candidate for IP4:xxx.xxx.xxx.xx/UDP

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): relay/proxy only option results in ICE TCP being disabled

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): relay only option results in no host candidate for IP6:

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): relay only option results in no host candidate for IP4:xxx.xxx.xxx.xx/UDP

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): relay/proxy only option results in ICE TCP being disabled

Write buffer not empty for IP4:xxx.xxx.xxx.xx/TCP 44 - already armed (@0x1720c69f4), not connected

Invoking writable_cb on connected (44)

Writable_cb IP4:xxx.xxx.xxx.xx/TCP (0 (0x1720c69f4) pending)

NrTcpSocket::OnClose 0x1720c5800 reason=2147500037 name=NS_ERROR_FAILURE

NrTcpSocket::OnClose 0x1720c9800 reason=2147500037 name=NS_ERROR_FAILURE

NrTcpSocket::OnClose 0x1720c8c00 reason=2147500037 name=NS_ERROR_FAILURE

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): Error 10 on reliable socket(0x1720c8c00). Abandoning.

NrTcpSocket::OnClose 0x1720c4c00 reason=2147500037 name=NS_ERROR_FAILURE

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxxhtml5client/join?sessionToken=tg6v08rwtmxknmi9)): Error 10 on reliable socket(0x1720c4c00). Abandoning.

NrTcpSocket::OnClose 0x1720c7000 reason=2152398861 name=NS_ERROR_CONNECTION_REFUSED

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): Error 10 on reliable socket(0x1720c7000). Abandoning.

NrTcpSocket::OnClose 0x1720cb000 reason=2152398861 name=NS_ERROR_CONNECTION_REFUSED

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): Error 10 on reliable socket(0x1720cb000). Abandoning.

NrTcpSocket::OnClose 0x1720c6400 reason=2152398861 name=NS_ERROR_CONNECTION_REFUSED

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): Error 10 on reliable socket(0x1720c6400). Abandoning.

NrTcpSocket::OnClose 0x1720ca400 reason=2152398861 name=NS_ERROR_CONNECTION_REFUSED

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): Error 10 on reliable socket(0x1720ca400). Abandoning.

Write error for IP4:xxx.xxx.xxx.xx:443/TCP - 10

TURN(relay(IP4:xxx.xxx.xxx.xx/TLS|turn.xxx.xxx.xx:443)): mode 20, nr_turn_client_error_cb

TURN(relay(IP4:1xxx.xxx.xxx.xx/TLS|turn.xxx.xxx.xx:443)) failed

TURN(relay(IP4:xxx.xxx.xxx.xx/TLS|turn.xxx.xxx.xx:443)): cancelling

ICE-CANDIDATE(relay(IP4:xxx.xxx.xxx.xx/TLS|turn.xxx.xxx.xx:443)): nr_turn_allocated_cb called with state 4

ICE-CANDIDATE(relay(IP4:1xxx.xxx.xxx.xx:0/TLS|turn.xxx.xxx-xxx.xx:443)): nr_turn_allocated_cb failed

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9))/CAND(relay(IP4:xxx.xxx.xxx.xx:0/TLS|turn.xxx.xx:443)): failed to initialize, 7 remaining

TURN(relay(IP4:xxx.xxx.xxx.xx:0/TLS|turn.mgg-durlach.de:443)): Couldn't start STUN

Write error for IP4:xxx.xxx.xxx.xx:443/TCP - 10

TURN(relay(IP4:xxx.xxx.xxx.xx:0/TCP|turn.mgg-durlach.de:443)): mode 20, nr_turn_client_error_cb

TURN(relay(IP4:xxx.xxx.xxx.xx:0/TCP|turn.mgg-durlach.de:443)) failed

TURN(relay(IP4:1xxx.xxx.xxx.xx:0/TCP|turn.mgg-durlach.de:443)): cancelling

ICE-CANDIDATE(relay(IP4:1xxx.xx.xxx.xx:0/TCP|turn.mgg-durlach.de:443)): nr_turn_allocated_cb called with state 4

ICE-CANDIDATE(relay(IP4:xxx.xxx.xxx.xx:0/TCP|turn.xxx.xxx-xxx.xx:443)): nr_turn_allocated_cb failed

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9))/CAND(relay(IP4:xxx.xxx.xxx.xx:0/TCP|turn.xxx-xxx.xx:443)): failed to initialize, 6 remaining

TURN(relay(IP4:1xxx.xxx.xxx.xx:0/TCP|turn.mgg-durlach.de:443)): Couldn't start STUN

Write error for IP6:[

Belwue-Nr. TCP - 10

TURN(relay(IP6:[Vodafone-Nr.]:0/TLS|turn.xxx.xxx.xx:443)): mode 20, nr_turn_client_error_cb

TURN(relay(IP6:[Vodafone-Nr. ]:0/TLS|turn.mgg-durlach.de:443)) failed

TURN(relay(IP6:2Vodafone-Nr.): cancelling

ICE-CANDIDATE(relay(IP6:[Vodafon-Nr. ]:0/TLS|turn.xxx.xxx.xx:443)): nr_turn_allocated_cb called with state 4

ICE-CANDIDATE(relay(IP6:[Vodafone-Nr.]:0/TLS|turn.xxx.xx:443)): nr_turn_allocated_cb failed

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9))/CAND(relay(IP6:[Vdafone-IP]:0/TLS|turn.xxx.xxx.xx:443)): failed to initialize, 5 remaining

TURN(relay(IP6:[VDAFONE IP]:0/TLS|turn.XXX.XXX.XX:443/TCP 44 - already armed (@0x1720c5df4), not connected

Write error for IP6:VODAVFONE :443/TCP - 10

TURN(relay(IP6:Vodafone Nr.:0/TLS|turn.xxx.xxx:443)): mode 20, nr_turn_client_error_cb

TURN(relay(IP6:[Vodafone-Nr.]:0/TLS|turn.xxx.xx:443)) failed

TURN(relay(IP6:[eigene Domain]:0/TLS|turn.xxx.xxx.xx:443)): cancelling

ICE-CANDIDATE(relay(IP6:[Landeseigentum]:0/TLS|turn.xxx-xxx.xx:443)): nr_turn_allocated_cb called with state 4

ICE-CANDIDATE(relay(IP6:[eigene Vodafone]:0/TLS|turn.xxx.xxx.xx:443)): nr_turn_allocated_cb failed

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9))/CAND(relay(IP6:[2a02:8071:41bc:4600:c916:508d:bc72:200e]:0/TLS|turn.mgg-durlach.de:443)): failed to initialize, 4 remaining

TURN(relay(IP6:[turnserver:0/TLS|turn.xxx.xxx.xx:443)): Couldn't start STUN

Write buffer not empty for IP6:[Vodafone-Nr.]:443/TCP 44 - already armed (@0x1720c9df4), not connected

ICE(PC:1610745377013792 (id=55834574851 url=https://xxxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9)): peer (PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9):default) has no stream matching stream PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9) transport-id=transport_0 - Vodafone-URL

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9))/CAND(relay(IP6:[TURN-Server]:0/TCP|turn.mgg-durlach.de:443)): failed to initialize, 3 remaining

ICE(PC:1610745377013792 (id=55834574851 url=https://xxx.xxx/html5client/join?sessionToken=tg6v08rwtmxknmi9))/CAND(relay(IP4:192.168.178.40:0/TLS|turn.xxx.xxx-xx:443)): failed to initialize, 2 remaining

+++++++ END ++++++++

Vielleicht hilft das ja bei der Fehleranalyse.

Vielen Dank für eure Hilfe,
Marcus

Poste mal deine Beans Datei vom BBB, das wäre interessant ob hier auch die Ports eingetragen sind.

Hier die Beans-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:turn.meinturnserver.de"/>
    </bean>


    <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="<randomvalue>"/>
        <constructor-arg index="1" value="turns:turn.meinturnserver.de:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="<randomvalue>"/>
        <constructor-arg index="1" value="turn:turn.meinturnserver.de:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="stunTurnService"
            class="org.bigbluebutton.web.services.turn.StunTurnService">
        <property name="stunServers">
            <set>
                <ref bean="stun0"/>
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn0"/>
                <ref bean="turn1"/>
            </set>
        </property>
    </bean>
</beans>

Port 443 zu

<constructor-arg index="0" value="stun:turn.meinturnserver.de:443"/>

hinzuzufügen, brachte auch nicht die Lösung.

Die beans-Datei wurde auch vom bbb-Installationsscript selbst angelegt.

Grüße
Marcus

Hab ich das richtig gelesen dass du BBB und Turn auf dem gleichen Server betreibst?

Hallo @Bellm,

neenee, die Server liegen beide zwar bei Hezner, es sind jedoch zwei getrennte dedicated. Sonst würde ja TURN keinen Sinn machen.

Hab heute Nacht herausgefunden, dass die Hetzner-FW trotz richtiger Einstellung ausgehende und eingehende Verbindungen über Port 80, 443 geblockt hat. Why ever! Danach hab ich auf dem TURN-Server ufw installiert und die Hetzner-FW einfach für alles freigeschaltet. Nun sehen sich TURN- und BBB-Server gegenseitig, dass hab ich mit Ping überprüft und Updates kann sich der TURN-Server auch ziehen.

Trotzdem bekomme ich keine Verbindung zum Websocket. Überprüfe ich die BBB-Funktionalität mit Firefox erzwungenen Verbindungen über meinen TURN-Server, wird mir bei der Audioaufschaltung Fehler 1004 angezeigt.

LG
Marcus

Hallo Marcus,

die Hetzner-Firewall würde ich deaktivieren und alles über ufw einstellen.

Bei 2 aktiven Firewall’s kann nichts gutes raus kommen :wink:

VG Andre

Hi Andre,

hab alle FWs über Hetzner deaktiviert und lass alles über ufw laufen.

Leider hat das keine Besserung gebracht

LG
Marcus

ich glaube eine einfache vm aus der hetzner cloud tut es auch statt einem richtigen server.

Hi Marcus,

Hast du auch das <randomvalue> durch dein Turn-Server secret ersetzt?

Grüße
Finn

Edit: meine beans Datei sieht so aus:

<bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="meinTurnServerSecret"/>
        <constructor-arg index="1" value="turns:turn.xxxxxx.de:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

Hallo Finn,

das hab ich unter

<construtor-arg index?=„0“ value=„meinTurnServerSecret“/>

da wo jetzt meinTurnServerSecret steht eingesetzt.
Ich habe es so verstanden, dass ich nur das Secret vom TURN-Server in die Beans-Datei eintragen muss. So haben es auch andere, die mir ihre Beans-Datei geschickt haben gemacht. Oder ist mir da was entgangen?

LG
Marcus

Hallo Marcus,

neben dem scret des Turnservers muss auch dessen Adresse eingegeben werden. Also

die „xxxxxx“ ist durch deine Domain zu ergänzen, also z.B.

Viele Grüße,
Sven

Hallo Sven,

in der Original-Datei hab ich das ja auch so gemacht. Ich hab meine Original-Beans-Datei ja für das Forum anonymisiert.

LG
Marcus