Kategorie:Coturn: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 96: Zeile 96:


== Konfigurieren Sie coturn  ==
== Konfigurieren Sie coturn  ==
<tt>coturn</tt> Konfiguration wird in der Datei gespeichert <tt>/etc/turnserver.conf</tt>. Es stehen viele Optionen zur Verfügung, die alle in Kommentaren in der Standardkonfigurationsdatei dokumentiert sind. Im Folgenden finden Sie eine Beispielkonfiguration mit den empfohlenen Einstellungen (weitere Informationen zu den Einstellungen finden Sie in der Standardkonfigurationsdatei).  
<tt>coturn</tt> Konfiguration wird in der Datei gespeichert <tt>/etc/turnserver.conf</tt>. Es stehen viele Optionen zur Verfügung, die alle in Kommentaren in der Standardkonfigurationsdatei dokumentiert sind. Im Folgenden finden Sie eine Beispielkonfiguration mit den empfohlenen Einstellungen (weitere Informationen zu den Einstellungen finden Sie in der Standardkonfigurationsdatei).  


Zeile 103: Zeile 102:
* Ersetzen <tt><secret_value></tt> auf einen zufälligen Wert für ein gemeinsames Geheimnis (Sie können einen durch Ausführen generieren <tt>openssl rand -hex 16</tt>)  
* Ersetzen <tt><secret_value></tt> auf einen zufälligen Wert für ein gemeinsames Geheimnis (Sie können einen durch Ausführen generieren <tt>openssl rand -hex 16</tt>)  
* Ersetzen <tt><IP></tt> mit der externen IP Ihres TURN-Servers  
* Ersetzen <tt><IP></tt> mit der externen IP Ihres TURN-Servers  
Diese Konfigurationsdatei setzt voraus, dass sich Ihr TURN-Server nicht hinter NAT befindet und eine öffentliche IP-Adresse hat.  
Diese Konfigurationsdatei setzt voraus, dass sich Ihr TURN-Server nicht hinter NAT befindet und eine öffentliche IP-Adresse hat.  
 
listening-port=3478
listening-port=3478
tls-listening-port=443
tls-listening-port=443
 
listening-ip=$IP
listening-ip=$IP
relay-ip=$IP
relay-ip=$IP
 
# If the server is behind NAT, you need to specify the external IP address.
<nowiki># If the server is behind NAT, you need to specify the external IP address.</nowiki>
# If there is only one external address, specify it like this:
<nowiki># If there is only one external address, specify it like this:</nowiki>
#external-ip=172.17.19.120
<nowiki>#external-ip=172.17.19.120</nowiki>
# If you have multiple external addresses, you have to specify which
<nowiki># If you have multiple external addresses, you have to specify which</nowiki>
# internal address each corresponds to, like this. The first address is the
<nowiki># internal address each corresponds to, like this. The first address is the</nowiki>
# external ip, and the second address is the corresponding internal IP.
<nowiki># external ip, and the second address is the corresponding internal IP.</nowiki>
#external-ip=172.17.19.131/10.0.0.11
<nowiki>#external-ip=172.17.19.131/10.0.0.11</nowiki>
#external-ip=172.17.18.132/10.0.0.12
<nowiki>#external-ip=172.17.18.132/10.0.0.12</nowiki>
 
min-port=32769
min-port=32769
max-port=65535
max-port=65535
verbose
verbose
 
fingerprint
fingerprint
lt-cred-mech
lt-cred-mech
use-auth-secret
use-auth-secret
static-auth-secret=<secret_value>
static-auth-secret=<secret_value>
realm=<example.com>
realm=<example.com>
 
cert=/etc/turnserver/fullchain.pem
cert=/etc/turnserver/fullchain.pem
pkey=/etc/turnserver/privkey.pem
pkey=/etc/turnserver/privkey.pem
From https://ssl-config.mozilla.org/ Intermediate, openssl 1.1.0g, 2020-01
<nowiki># From https://ssl-config.mozilla.org/ Intermediate, openssl 1.1.0g, 2020-01</nowiki>
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" dh-file=/etc/turnserver/dhp.pem
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
dh-file=/etc/turnserver/dhp.pem
keep-address-family
 
no-cli
keep-address-family
no-tlsv1
no-cli
no-tlsv1_1
no-tlsv1
no-tlsv1_1
# Block connections to IP ranges which shouldn't be reachable
 
no-loopback-peers
<nowiki># Block connections to IP ranges which shouldn't be reachable</nowiki>
no-multicast-peers
no-loopback-peers
# CVE-2020-26262
no-multicast-peers
# If running coturn version older than 4.5.2, uncomment these rules and ensure
<nowiki># CVE-2020-26262</nowiki>
# that you have listening-ip set to ipv4 addresses only.
<nowiki># If running coturn version older than 4.5.2, uncomment these rules and ensure</nowiki>
#denied-peer-ip=0.0.0.0-0.255.255.255
<nowiki># that you have listening-ip set to ipv4 addresses only.</nowiki>
#denied-peer-ip=127.0.0.0-127.255.255.255
<nowiki>#denied-peer-ip=0.0.0.0-0.255.255.255</nowiki>
#denied-peer-ip=::1
<nowiki>#denied-peer-ip=127.0.0.0-127.255.255.255</nowiki>
# Private (LAN) addresses
<nowiki>#denied-peer-ip=::1</nowiki>
# If you are running BigBlueButton within a LAN, you might need to add an "allow" rule for your address range.
<nowiki># Private (LAN) addresses</nowiki>
# IPv4 Private-Use
<nowiki># If you are running BigBlueButton within a LAN, you might need to add an "allow" rule for your address range.</nowiki>
denied-peer-ip=10.0.0.0-10.255.255.255
<nowiki># IPv4 Private-Use</nowiki>
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
# Other IPv4 Special-Purpose addresses
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
<nowiki># Other IPv4 Special-Purpose addresses</nowiki>
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=198.51.100.0-198.51.100.255
# IPv6 Unique-Local
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
<nowiki># IPv6 Unique-Local</nowiki>
# IPv6 Link-Local Unicast
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
<nowiki># IPv6 Link-Local Unicast</nowiki>
# Other IPv6 Special-Purpose assignments
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=::ffff:0:0-::ffff:ffff:ffff
<nowiki># Other IPv6 Special-Purpose assignments</nowiki>
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0:0-::ffff:ffff:ffff
denied-peer-ip=64:ff9b:1::-64:ff9b:1:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=64:ff9b:1::-64:ff9b:1:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001:db8::-2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001:db8::-2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff


Wir müssen schaffen <tt>dph.pem</tt> Datei,  
Wir müssen schaffen <tt>dph.pem</tt> Datei,  
 
$ sudo mkdir -p /etc/turnserver
$ sudo mkdir -p /etc/turnserver
$ sudo openssl dhparam -dsaparam  -out /etc/turnserver/dhp.pem 2048
$ sudo openssl dhparam -dsaparam  -out /etc/turnserver/dhp.pem 2048


Fügen Sie die folgende systemd-Override-Datei hinzu, um das Dateihandle-Limit für den TURN-Server zu erhöhen und ihm die Möglichkeit zu geben, an Port 443 zu binden. Erstellen Sie zunächst das Verzeichnis.  
Fügen Sie die folgende systemd-Override-Datei hinzu, um das Dateihandle-Limit für den TURN-Server zu erhöhen und ihm die Möglichkeit zu geben, an Port 443 zu binden. Erstellen Sie zunächst das Verzeichnis.  
 
$ sudo mkdir -p /etc/systemd/system/coturn.service.d
$ sudo mkdir -p /etc/systemd/system/coturn.service.d


und dann dann erstellen <tt>/etc/systemd/system/coturn.service.d/override.conf</tt> mit folgenden Inhalten  
und dann dann erstellen <tt>/etc/systemd/system/coturn.service.d/override.conf</tt> mit folgenden Inhalten  


[Service]
[Service]
LimitNOFILE=1048576
LimitNOFILE=1048576
AmbientCapabilities=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=
ExecStart=
ExecStart=/usr/bin/turnserver --daemon -c /etc/turnserver.conf --pidfile /run/turnserver/turnserver.pid --no-stdout-log --simple-log --log-file /var/log/turnserver/turnserver.log
ExecStart=/usr/bin/turnserver --daemon -c /etc/turnserver.conf --pidfile /run/turnserver/turnserver.pid --no-stdout-log --simple-log --log-file /var/log/turnserver/turnserver.log
Restart=always
Restart=always


== Konfigurieren Sie die Protokollrotation  ==
== Konfigurieren Sie die Protokollrotation  ==

Version vom 28. April 2021, 12:43 Uhr

Konfigurieren Sie TURN

In diesem Dokument wird beschrieben, wie Sie einen TURN-Server für BigBlueButton einrichten, damit Benutzer hinter restriktiven Firewalls eine Verbindung herstellen können.

Sie können auch bbb-install.sh verwenden, um die Schritte in diesem Dokument zu automatisieren.

Richten Sie einen TURN-Server ein

Für BigBlueButton muss normalerweise eine Vielzahl von UDP-Ports für die WebRTC-Kommunikation verfügbar sein. In einigen netzwerkbeschränkten Sites oder Entwicklungsumgebungen, z. B. hinter NAT oder einer Firewall, die ausgehende UDP-Verbindungen einschränkt, können Benutzer möglicherweise keine ausgehenden UDP-Verbindungen zu Ihrem BigBlueButton-Server herstellen.

Das TURN-Protokoll ermöglicht es UDP-basierten Kommunikationsflüssen wie WebRTC, NAT oder Firewalls zu umgehen, indem der Client eine Verbindung zum TURN-Server herstellt und der TURN-Server dann in seinem Namen eine Verbindung zum Ziel herstellt.

Darüber hinaus implementiert der TURN-Server auch das STUN-Protokoll, mit dem direkte UDP-Verbindungen über bestimmte Arten von Firewalls ermöglicht werden, die andernfalls möglicherweise nicht funktionieren.

Die Verwendung eines von Ihnen kontrollierten TURN-Servers verbessert den Erfolg von Verbindungen zu BigBlueButton und verbessert auch die Privatsphäre der Benutzer, da diese keine IP-Adressinformationen mehr an einen öffentlichen STUN-Server senden.

Erforderliche Hardware

Das TURN-Protokoll ist nicht CPU- oder speicherintensiv. Da es nur während des Verbindungsaufbaus (für STUN) und als Ersatz für Benutzer verwendet wird, die sonst keine Verbindung herstellen könnten, sind die Bandbreitenanforderungen nicht besonders hoch. Für eine moderate Anzahl von BigBlueButton-Servern ist normalerweise ein einziger kleiner VPS ausreichend.

Das Vorhandensein mehrerer IP-Adressen kann die Ergebnisse verbessern, wenn STUN mit bestimmten Arten von Firewalls verwendet wird, ist jedoch normalerweise nicht erforderlich.

Der Server hinter NAT (z. B. unter Amazon EC2) ist in Ordnung, aber alle eingehenden UDP- und TCP-Verbindungen an einem beliebigen Port müssen weitergeleitet und nicht durch eine Firewall geschützt werden.

Erforderliche Software

Wir empfehlen die Verwendung einer minimalen Serverinstallation von Ubuntu 20.04. Die coturn- Dies Software benötigt Port 443 für die ausschließliche Verwendung in unserer empfohlenen Konfiguration. bedeutet, dass auf dem Server keine Dashboard-Software oder andere Webanwendungen ausgeführt werden können.

Stabile Versionen von coturn sind bereits in den Ubuntu-Paketrepositorys für Version 20.04 und höher verfügbar und können mit apt-get installiert werden:

$ sudo apt-get update $ sudo apt-get install coturn

Hinweis: coturn startet nicht automatisch, bis die Konfiguration angewendet wird (siehe unten).

Erforderlicher DNS-Eintrag

Sie müssen einen vollständig qualifizierten Domänennamen einrichten, der in die externe IP-Adresse Ihres Turn-Servers aufgelöst wird. Mit diesem Domänennamen generieren Sie ein TLS-Zertifikat mit Let's Encrypt (nächster Abschnitt).

Erforderliche Ports

Auf dem Coturn-Server müssen die folgenden Ports (zusätzlich zu Port 22) verfügbar sein, damit BigBlueButton-Clients eine Verbindung herstellen können (Port 3478 und 443) und Coturn eine Verbindung zu Ihrem BigBlueButton-Server herstellen kann (32768 - 65535).


Häfen Protokoll Beschreibung
3478 TCP / UDP Coturn Listening Port
443 TCP / UDP TLS-Abhörport
32768-65535 UDP Relaisanschlussbereich


Generieren von TLS-Zertifikaten

Sie können verwenden certbotvon Let's Encrypt, um auf einfache Weise kostenlose TLS-Zertifikate zu generieren. Zum Einrichten certbot Geben Sie die folgenden Befehle auf Ihrem TURN-Server ein (nicht auf Ihrem BigBlueButton-Server).

$ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install certbot

Sie können dann eine ausführen certbot Befehl wie folgt, um das Zertifikat zu generieren und zu ersetzen <turn.example.com> mit dem Domainnamen Ihres TURN-Servers:

$ sudo certbot certonly --standalone --preferred-challenges http \

   -d <turn.example.com>

Aktuelle Versionen des Befehls certbot richten standardmäßig die automatische Verlängerung ein. Um sicherzustellen, dass die Zertifikate von lesbar sind coturn, die als läuft turnserverBenutzer, fügen Sie den folgenden Erneuerungs-Hook zu Let's Encrypt hinzu. Erstellen Sie zunächst das Verzeichnis /etc/letsencrypt/renewal-hooks/deploy.

$ sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy

Erstellen Sie als Nächstes die Datei /etc/letsencrypt/renewal-hooks/deploy/coturnmit folgenden Inhalten. Ersetzen

#!/bin/bash -e for certfile in fullchain.pem privkey.pem ; do

       cp -L /etc/letsencrypt/live/<turn.example.com>/"${certfile}" /etc/turnserver/"${certfile}".new
       chown turnserver:turnserver /etc/turnserver/"${certfile}".new
       mv /etc/turnserver/"${certfile}".new /etc/turnserver/"${certfile}"

done systemctl kill -sUSR2 coturn.service

Machen Sie diese Datei ausführbar.

$ sudo chmod 0755 /etc/letsencrypt/renewal-hooks/deploy/coturn

Konfigurieren Sie coturn

coturn Konfiguration wird in der Datei gespeichert /etc/turnserver.conf. Es stehen viele Optionen zur Verfügung, die alle in Kommentaren in der Standardkonfigurationsdatei dokumentiert sind. Im Folgenden finden Sie eine Beispielkonfiguration mit den empfohlenen Einstellungen (weitere Informationen zu den Einstellungen finden Sie in der Standardkonfigurationsdatei).

Verwenden Sie die folgende Datei für /etc/turnserver.conf und nehmen Sie folgende Änderungen vor: * Ersetzen <turn.example.com> mit dem Hostnamen Ihres TURN-Servers und

  • Ersetzen <example.com> mit dem Bereich Ihres TURN-Servers und
  • Ersetzen <secret_value> auf einen zufälligen Wert für ein gemeinsames Geheimnis (Sie können einen durch Ausführen generieren openssl rand -hex 16)
  • Ersetzen <IP> mit der externen IP Ihres TURN-Servers

Diese Konfigurationsdatei setzt voraus, dass sich Ihr TURN-Server nicht hinter NAT befindet und eine öffentliche IP-Adresse hat.

listening-port=3478
tls-listening-port=443

listening-ip=$IP
relay-ip=$IP

# If the server is behind NAT, you need to specify the external IP address.
# If there is only one external address, specify it like this:
#external-ip=172.17.19.120
# If you have multiple external addresses, you have to specify which
# internal address each corresponds to, like this. The first address is the
# external ip, and the second address is the corresponding internal IP.
#external-ip=172.17.19.131/10.0.0.11
#external-ip=172.17.18.132/10.0.0.12

min-port=32769
max-port=65535
verbose

fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=<secret_value>
realm=<example.com>

cert=/etc/turnserver/fullchain.pem
pkey=/etc/turnserver/privkey.pem
From https://ssl-config.mozilla.org/ Intermediate, openssl 1.1.0g, 2020-01
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" dh-file=/etc/turnserver/dhp.pem

keep-address-family
no-cli
no-tlsv1
no-tlsv1_1

# Block connections to IP ranges which shouldn't be reachable
no-loopback-peers
no-multicast-peers
# CVE-2020-26262
# If running coturn version older than 4.5.2, uncomment these rules and ensure
# that you have listening-ip set to ipv4 addresses only.
#denied-peer-ip=0.0.0.0-0.255.255.255
#denied-peer-ip=127.0.0.0-127.255.255.255
#denied-peer-ip=::1
# Private (LAN) addresses
# If you are running BigBlueButton within a LAN, you might need to add an "allow" rule for your address range.
# IPv4 Private-Use
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
# Other IPv4 Special-Purpose addresses
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
# IPv6 Unique-Local
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# IPv6 Link-Local Unicast
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# Other IPv6 Special-Purpose assignments
denied-peer-ip=::ffff:0:0-::ffff:ffff:ffff
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=64:ff9b:1::-64:ff9b:1:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001:db8::-2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Wir müssen schaffen dph.pem Datei,

$ sudo mkdir -p /etc/turnserver
$ sudo openssl dhparam -dsaparam  -out /etc/turnserver/dhp.pem 2048

Fügen Sie die folgende systemd-Override-Datei hinzu, um das Dateihandle-Limit für den TURN-Server zu erhöhen und ihm die Möglichkeit zu geben, an Port 443 zu binden. Erstellen Sie zunächst das Verzeichnis.

$ sudo mkdir -p /etc/systemd/system/coturn.service.d

und dann dann erstellen /etc/systemd/system/coturn.service.d/override.conf mit folgenden Inhalten

[Service]
LimitNOFILE=1048576
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=
ExecStart=/usr/bin/turnserver --daemon -c /etc/turnserver.conf --pidfile /run/turnserver/turnserver.pid --no-stdout-log --simple-log --log-file /var/log/turnserver/turnserver.log
Restart=always

Konfigurieren Sie die Protokollrotation

So drehen Sie die Protokolle für coturnInstallieren Sie die folgende Konfigurationsdatei in /etc/logrotate.d/coturn

/var/log/turnserver/*.log
{
       rotate 7
       daily
       missingok
       notifempty
       compress
       postrotate
               /bin/systemctl kill -s HUP coturn.service
       endscript
}

Und erstellen Sie das zugehörige Protokollverzeichnis

$ sudo mkdir -p /var/log/turnserver
$ sudo chown turnserver:turnserver /var/log/turnserver

Coturn neu starten

Starten Sie den TURN-Server nach Abschluss der obigen Schritte neu

$ sudo /etc/letsencrypt/renewal-hooks/deploy/coturn # Initial copy of certificates $ sudo systemctl daemon-reload # Ensure the override file is loaded $ sudo systemctl restart coturn # Restart

Stellen Sie sicher, dass die coturn hat an Port 443 mit gebunden netstat -antp | grep 443. Starten Sie auch Ihren TURN-Server neu und stellen Sie dies sicher coturn wird ausgeführt (und nach dem Neustart an Port 443 gebunden).

Konfigurieren Sie BigBlueButton für die Verwendung Ihres TURN-Servers

  • Sie müssen bbb-web so konfigurieren, dass es die Liste der Turn-Server für den Webbrowser bereitstellt.
  • Bearbeiten Sie die Datei /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml Verwenden Sie den folgenden Inhalt und nehmen Sie Änderungen vor:
  • Ersetzen Sie beide Instanzen von <turn.example.com> mit dem Hostnamen des TURN-Servers und ersetzen <secret_value> mit dem Geheimnis, in dem Sie konfiguriert haben turnserver.conf.
<?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.example.com>"/>
   </bean>

   <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
       <constructor-arg index="0" value="<secret_value>"/>
       <constructor-arg index="1" value="turns:<turn.example.com>: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="<secret_value>"/>
       <constructor-arg index="1" value="turn:<turn.example.com>: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>

Starten Sie Ihren BigBlueButton-Server neu, um die Änderungen zu übernehmen.

Wenn Benutzer hinter einer restriktiven Firewall eine Verbindung herstellen, die ausgehende UDP-Verbindungen verhindert, ermöglicht der TURN-Server BigBlueButton künftig, über den TURN-Server über Port 443 ihrer Firewall eine Verbindung zu FreeSWITCH und Kurento herzustellen.

Testen Sie Ihren TURN-Server

  • Standardmäßig versucht Ihr Browser, über WebRTC eine direkte Verbindung zu Kurento oder FreeSWITCH herzustellen.
  • Wenn keine direkte Verbindung hergestellt werden kann, wird der TURN-Server als einer der ICE-Kandidaten (Interconnectivity Connectivity Exchange) zum Weiterleiten der Medien verwendet.
  • Verwenden Sie FireFox, um Ihren TURN-Server zu testen.
  • Mit FireFox können Sie direkte Verbindungen deaktivieren und einen Fallback zu Ihrem TURN-Server benötigen.
  • Starten Sie FireFox und öffnen Sie es about:config und suchen Sie nach 'Relais . You should see a parameter media.peerconnection.ice.relay_only . Set this value to wahr`.
  • Wenn FireFox so konfiguriert ist, dass nur ein TURN-Server verwendet wird, öffnen Sie eine neue Registerkarte, nehmen Sie an einer BigBlueButton-Sitzung teil und geben Sie Ihre Webcam frei.
  • Wenn Ihre Webcam angezeigt wird, können Sie überprüfen, ob FireFox Ihren TURN-Server verwendet, indem Sie eine neue Registerkarte öffnen und auswählen about:webrtc.
  • Klicken show detailsund Sie sehen eine Tabelle für ICE-Statistiken.
  • Die erfolgreiche Verbindung, die oben in der Tabelle angezeigt wird, sollte haben (relay-tcp)in der Spalte Lokaler Kandidat.
  • Dies bedeutet, dass die Videoverbindung erfolgreich über Ihren TURN-Server weitergeleitet wurde.
  • Wenn Sie jedoch beim Freigeben einer Webcam eine 1020 erhalten haben (Verbindung kann nicht hergestellt werden), kann der Browser möglicherweise keine Verbindung zum TURN-Server herstellen oder der TURN-Server wird nicht ordnungsgemäß ausgeführt oder konfiguriert.
  • Überprüfen Sie die Browserkonsole in FireFox.

Wenn du siehst

WebRTC: ICE failed, your TURN server appears to be broken, see about:webrtc for more details
  • Dann konnte FireFox nicht mit Ihrem TURN-Server kommunizieren oder Ihr TURN-Server wurde nicht ordnungsgemäß ausgeführt oder konfiguriert.
  • Um sicherzustellen, dass Ihre Firewall keine UDP-Verbindungen über Port 443 blockiert, öffnen Sie einen neuen Tad-Besuch unter https://test.bigbluebutton.org/ , starten Sie eine Testsitzung und versuchen Sie, Ihre Webcam freizugeben.
  • Der Browser kann möglicherweise keine Verbindung zum TURN-Server herstellen, oder der TURN-Server wird nicht ordnungsgemäß ausgeführt oder konfiguriert.
  • Der TURN-Server fungiert auch als STUN-Server, sodass Sie zunächst überprüfen können, ob der STUN-Teil mit dem funktioniert stunclient.
  • Führen Sie die folgenden Befehle aus und ersetzen Sie sie <youor-turn-server-host> mit dem Hostnamen Ihres TURN-Servers.
# apt-get install -y stuntman-client
stunclient --mode full --localport 30000 <your-turn-server-host> 3478

Bei Erfolg sollte die Ausgabe für angezeigt werden stunclient sollte ähnlich wie folgt sein.

Binding test: success
Local address: xxx.xxx.xxx.xxx:30000
Mapped address: xxx.xxx.xxx.xxx:30000
Behavior test: success
Nat behavior: Direct Mapping
Filtering test: success
Nat filtering: Endpoint Independent Filtering
  • Wenn Sie eine Fehlermeldung erhalten, überprüfen Sie dies coturn wird auf dem TURN-Server mit ausgeführt systemctl status coturn.service.
  • Überprüfen Sie die Protokolle, indem Sie dies tun tail -f /var/log/turnserver/coturn.log.
  • Sie können ausführliche Protokolle erhalten, indem Sie hinzufügen verbose zu /etc/turnserver.conf und Neustart des TURN-Servers systemctl restart coturn.service
  • Sie können Ihren TURN-Server mithilfe der testen Trickle-ICE- Seite.
  • Auf diese Weise erhalten Sie ein Protokoll der Relaiskandidaten, wenn diese von der ICE-Sammlung zurückgegeben werden.
  • Um auf dieser Seite zu testen, müssen Sie einige Testanmeldeinformationen generieren.
  • Führen Sie das folgende BASH-Skript aus und ersetzen Sie es <turn.example.com> mit dem Hostnamen Ihres TURN-Servers und <secret_value> mit dem Passwort für Ihren TURN-Server.
#!/bin/bash

HOST=<turn.example.com>
SECRET=<secret_value>

time=$(date +%s)
expiry=8400
username=$(( $time + $expiry ))

echo
echo "          https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/"
echo
echo      URI : turn:$HOST:443
echo username : $username 
echo password : $(echo -n $username | openssl dgst -binary -sha1 -hmac $SECRET | openssl base64)
echo
  • Geben Sie die Werte in URI, Benutzername und Passwort auf der Trickle ICE-Seite ein und klicken Sie auf "Kandidaten sammeln".
  • Sie sollten eine Liste der Staffelkandidaten sehen.
  • Wenn Sie dies nicht tun, überprüfen Sie erneut, ob Ihr TURN-Server ausgeführt wird, und beenden Sie die Protokolle, über die der TURN-Server protokolliert tail -f /var/log/turnserver/coturn.log oder journalctl -f -u coturn.service.

Sie können ausführliche Protokolle erhalten, indem Sie hinzufügen verbose zu /etc/turnserver.conf und dann den TURN-Server neu starten systemctl restart coturn.serviceund versuchen Sie es erneut mit FireFox oder der obigen Tricke ICE-Seite.

Seiten in der Kategorie „Coturn“

Diese Kategorie enthält nur die folgende Seite.