Kategorie:Coturn: Unterschied zwischen den Versionen

Aus Foxwiki
Der Seiteninhalt wurde durch einen anderen Text ersetzt: „Kategorie:Netzwerk/Dienst Kategorie:BigBlueButton Kategorie:Nextcloud/Talk
Markierung: Ersetzt
 
(60 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein '''TURN-Server''' ist ein VoIP-Medienverkehr-NAT-Traversal-Server und -Gateway
[[Kategorie:Netzwerk/Dienst]]
 
Ein '''TURN-Server''' ist ein NAT-Traversal-Server und -Gateway für den VoIP-Medienverkehr.
 
== Beschreibung ==
* Er kann auch als allgemeiner TURN-Server und -Gateway für den Netzwerkverkehr verwendet werden.
* Free open source implementation of TURN and STUN Server
* Das Projekt entwickelte sich aus dem rfc5766-turn-server Projekt (<nowiki>https://code.google.com/p/rfc5766-turn-server/</nowiki>).
* Es gibt viele neue erweiterte TURN-Spezifikationen, die weit über das ursprüngliche <nowiki>RFC 5766</nowiki>-Dokument hinausgehen.
* Dieses Projekt nimmt den Code von rfc5766-turn-server als Ausgangspunkt und fügt ihm neue erweiterte Funktionen hinzu.
* Eine Online-Verwaltungsschnittstelle (über Telnet oder über HTTPS) für den TURN-Server ist verfügbar.
* Enthält auch einige zusätzliche experimentelle Funktionen.
 
Die Implementierung soll einfach, leicht zu installieren und konfigurieren sein.
* Der Schwerpunkt des Projekts liegt auf Leistung, Skalierbarkeit und Einfachheit.
* Ziel ist es, eine unternehmenstaugliche TURN-Lösung bereitzustellen.
 
=== Unterstützte Betriebssysteme ===
* Linux (Debian, Ubuntu, Mint, CentOS, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSUSE)
* BSD (FreeBSD, NetBSD, OpenBSD, DragonFlyBSD)
* Solaris 11
* Mac OS X
* Cygwin (for non-production R&D purposes)
Andere Serverplattformen können auf Anfrage unterstützt werden.
 
Jede Client-Plattform wird unterstützt, einschließlich Android, iOS, Linux, OS X, Windows und Windows Phone.
 
Dieses Projekt kann auch auf anderen *NIX-Plattformen erfolgreich eingesetzt werden, aber das wird nicht offiziell unterstützt.
 
=== Projekte, die TURN/STUN verwenden ===
* Nextcloud-Talk
* Jitsi-Meeting
* Matrix-Server
* Ejabberd
 
Wenn Sie eine dieser Anwendungen selbst hosten, können Sie dort Ihren eigenen TURN/STUN-Server verwenden.
 
=== Voraussetzungen ===
* Mindestens ein kleiner virtueller Server, zB Cloud Server CX11 , mit einer Root-Shell
 
=== Annahmen ===
* Domain: example.com
* Server-IPv4: 10.0.0.1
* Server-IPv6: 2001:db8:1234::1
* Öffentliche Client-IPv4: 78.47.166.55
* Private Client-IPv4: 192.168.0.10
 
== Installation ==
# apt install coturn
 
'''Hinweis'''
coturn startet nicht automatisch, bis eine Konfiguration angewendet wird (siehe unten).
 
Um den TURN-Server zu aktivieren, öffnen Sie die Datei
 
<tt>/etc/default/coturn</tt>
# Uncomment it if you want to have the turnserver running as
# an automatic system service daemon
#
TURNSERVER_ENABLED=1
 
== Konfiguration ==
 
; Konfigurationsdatei
<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).
 
Verwenden Sie die folgende Datei für <tt>/etc/turnserver.conf</tt> und nehmen Sie folgende Änderungen vor:
* Ersetzen '''<tt><turn.example.com></tt>''' mit dem Hostnamen Ihres TURN-Servers und
* Ersetzen '''<tt><example.com></tt>''' mit dem Bereich Ihres TURN-Servers und
* 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
 
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
 
=== DNS ===
==== DNS-Eintrag  ====
* Es wird ein vollständig qualifizierten Domänennamen benötigt, der in die externe IP-Adresse Ihres Turn-Servers aufgelöst
* Mit diesem Domänennamen werden TLS-Zertifikat mit Let's Encrypt erstellt
 
==== Allgemeine DNS-Einträge ====
turn.example.com. 14400 IN A    10.0.0.1
turn.example.com. 14400 IN AAAA 2001:db8:1234::1
stun.example.com. 14400 IN A    10.0.0.1
stun.example.com. 14400 IN AAAA 2001:db8:1234::1
@ IN NAPTR 10 0 "s" "RELAY:turn.udp" "" _turn._udp.example.com.
 
===== Folgende DNS-Einträge sollten verwendet werden, wenn Sie nur '''einen''' TURN/STUN-Server installieren: =====
_stun._udp.example.com.  14400 IN SRV  5 0 3478 turn.example.com.
_stun._tcp.example.com.  14400 IN SRV  5 0 3478 turn.example.com.
_stuns._tcp.example.com. 14400 IN SRV  5 0 5349 turn.example.com.
_turn._udp.example.com.  14400 IN SRV  5 0 3478 turn.example.com.
_turn._tcp.example.com.  14400 IN SRV  5 0 3478 turn.example.com.
_turns._tcp.example.com.  14400 IN SRV  5 0 5349 turn.example.com.
 
===== Für beste Leistung und Ausfallsicherheit sollten Sie mindestens zwei TURN/STUN-Server haben.  Wir müssen die DNS-Einträge für zwei geringfügig ändern: =====
_stun._udp.example.com.  14400 IN SRV  5  50 3478 turn1.example.com.
_stun._udp.example.com.  14400 IN SRV  10 50 3478 turn2.example.com.
_stun._tcp.example.com.  14400 IN SRV  5  50 3478 turn1.example.com.
_stun._tcp.example.com.  14400 IN SRV  10 50 3478 turn2.example.com.
_stuns._tcp.example.com.  14400 IN SRV  5  50 5349 turn1.example.com.
_stuns._tcp.example.com.  14400 IN SRV  10 50 5349 turn2.example.com.
_turn._udp.example.com.  14400 IN SRV  5  50 3478 turn1.example.com.
_turn._udp.example.com.  14400 IN SRV  10 50 3478 turn2.example.com.
_turn._tcp.example.com.  14400 IN SRV  5  50 3478 turn1.example.com.
_turn._tcp.example.com.  14400 IN SRV  10 50 3478 turn2.example.com.
_turns._tcp.example.com.  14400 IN SRV  5  50 5349 turn1.example.com.
_turns._tcp.example.com.  14400 IN SRV  10 50 5349 turn2.example.com.
 
===== Vergessen Sie nicht, DNS-Einträge (A und AAAA) für einzurichten turn1.example.comund turn2.example.comwie oben erwähnt. =====
* Theoretisch könnten Sie auch einen zweiten A- und AAAA-Eintrag für bereitstellen turn.example.comund stun.example.comaber
* Dies ist nicht der empfohlene Weg
 
=== Erforderliche Ports  ===
Auf dem Coturn-Server müssen die folgenden Ports erreichbar sein, damit Clients eine Verbindung herstellen können (Port 3478 und 443) und Coturn eine Verbindung zu Ihrem zu den Clients herstellen kann (32768 - 65535).
{| class="wikitable"
|-
! | Ports
! | Protokoll
! | Beschreibung
|-
|| 3478
|| TCP / UDP
|| Coturn Listening Port
|-
|| 443
|| TCP / UDP
|| TLS-Abhörport
|-
|| 32768-65535
|| UDP
|| Relaisanschlussbereich
|-
|}
 
=== Erstellen der Datei <tt>dph.pem</tt> ===
# mkdir -p /etc/turnserver
# openssl dhparam -dsaparam  -out /etc/turnserver/dhp.pem 2048
 
=== Konfiguration ===
/etc/turnserver.conf.
Zuerst verschieben wir die Originalversion dieser Datei mit:
# mv /etc/turnserver.conf /etc/turnserver.conf.orig
 
Dann öffnen/erstellen wir /etc/turnserver.confin einem Editor unserer Wahl und fügen folgende Konfiguration ein:
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=replace-this-secret
realm=turn.example.com
total-quota=100
stale-nonce=600
cert=/etc/letsencrypt/live/turn.example.com/cert.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"
no-sslv3
no-tlsv1
no-tlsv1_1
#no-tlsv1_2
dh2066
no-stdout-log
log-file=/var/tmp/turn.log
#log-file=/dev/null
no-loopback-peers
no-multicast-peers
proc-user=turnserver
proc-group=turnserver
 
Generieren Sie das Geheimnis mit
sed -i "s/replace-this-secret/$(openssl rand -hex 32)/" /etc/turnserver.conf
 
=== Systemd konfigurieren ===
Fügen Sie die folgende systemd-Override-Datei hinzu
* Dateihandle-Limit für den TURN-Server erhöhen
* ermöglichen Port 443 zu öffnen
 
# mkdir -p /etc/systemd/system/coturn.service.d
 
<tt>/etc/systemd/system/coturn.service.d/override.conf</tt>
[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
 
=== Zertifikate  ===
; TLS-Zertifikate von [[Let's Encrypt|Let’s Encrypt]]
# certbot certonly --standalone --preferred-challenges http -d <turn.example.com>
 
Aktuelle Versionen des Befehls certbot richten standardmäßig eine automatische Verlängerung ein.
 
; Renewal-Hook
* Um sicherzustellen, dass die Zertifikate von lesbar sind <tt>coturn</tt>, die als läuft <tt>turnserver</tt>Benutzer, fügen Sie den folgenden Erneuerungs-Hook zu Let's Encrypt hinzu.
* Erstellen Sie zunächst das Verzeichnis <tt>/etc/letsencrypt/renewal-hooks/deploy</tt>.
# mkdir -p /etc/letsencrypt/renewal-hooks/deploy
 
; Renewal-Hook Skript
<tt>/etc/letsencrypt/renewal-hooks/deploy/coturn</tt>
 
#!/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
 
Datei ausführbar machen
# chmod 0755 /etc/letsencrypt/renewal-hooks/deploy/coturn
 
=== Protokollrotation  ===
So drehen Sie die Protokolle für <tt>coturn</tt>Installieren Sie die folgende Konfigurationsdatei in <tt>/etc/logrotate.d/coturn</tt>
 
/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
# mkdir -p /var/log/turnserver
# chown turnserver:turnserver /var/log/turnserver
 
=== Coturn neu starten  ===
Starten Sie den TURN-Server nach Abschluss der obigen Schritte neu
# /etc/letsencrypt/renewal-hooks/deploy/coturn    <nowiki># Initial copy of certificates </nowiki>
# systemctl daemon-reload                        <nowiki># Ensure the override file is loaded</nowiki>
# systemctl restart coturn                        <nowiki># Restart</nowiki>
* Stellen Sie sicher, dass die <tt>coturn</tt> hat an Port 443 mit gebunden <tt>netstat -antp | grep 443</tt>.
* Starten Sie auch Ihren TURN-Server neu und stellen Sie dies sicher <tt>coturn</tt> wird ausgeführt (und nach dem Neustart an Port 443 gebunden).
 
=== Testen ===
* 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.
 
==== Mit FireFox 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 <tt>about:config</tt> und suchen Sie nach 'Relais <tt>. You should see a parameter</tt> media.peerconnection.ice.relay_only <tt>. Set this value to </tt>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 <tt>about:webrtc</tt>.
* Klicken <tt>show details</tt> und Sie sehen eine Tabelle für ICE-Statistiken.
* Die erfolgreiche Verbindung, die oben in der Tabelle angezeigt wird, sollte haben <tt>(relay-tcp)</tt>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 der Browserkonsole in FireFox
WebRTC: ICE failed, your TURN server appears to be broken, see about:webrtc for more details
* FireFox kann nicht mit dem TURN-Server kommunizieren
 
==== test.bigbluebutton.org ====
* Um sicherzustellen, dass Ihre Firewall keine UDP-Verbindungen über Port 443 blockiert, öffnen Sie einen Test-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 ====
===== Installation =====
# apt install stuntman-client
 
===== Anwendungen =====
# stunclient --mode full --localport 30000 <your-turn-server-host> 3478
 
Bei Erfolg sollte die Ausgabe für angezeigt werden <tt>stunclient</tt> 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 <tt>coturn</tt> wird auf dem TURN-Server mit ausgeführt <tt>systemctl status coturn.service</tt>.
 
* Überprüfen Sie die Protokolle, indem Sie dies tun <tt>tail -f /var/log/turnserver/coturn.log</tt>.
* Sie können ausführliche Protokolle erhalten, indem Sie hinzufügen <tt>verbose</tt> zu <tt>/etc/turnserver.conf</tt> und Neustart des TURN-Servers <tt>systemctl restart coturn.service</tt>
* Sie können Ihren TURN-Server mithilfe der testen [https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 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 <tt><turn.example.com></tt> mit dem Hostnamen Ihres TURN-Servers und <tt><secret_value></tt> 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 <tt>tail -f /var/log/turnserver/coturn.log</tt> oder <tt>journalctl -f -u coturn.service</tt>.
 
Sie können ausführliche Protokolle erhalten, indem Sie hinzufügen <tt>verbose</tt> zu <tt>/etc/turnserver.conf</tt> und dann den TURN-Server neu starten <tt>systemctl restart coturn.service</tt>und versuchen Sie es erneut mit FireFox oder der obigen Tricke ICE-Seite.
 
=== Dateien ===
 
== Syntax ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
 
== Sicherheit ==
 
== Dokumentation ==
=== Supported RFCs ===
==== TURN specs ====
* <nowiki>RFC 5766</nowiki> - base TURN specs
* <nowiki>RFC 6062</nowiki> - TCP relaying TURN extension
* <nowiki>RFC 6156</nowiki> - IPv6 extension for TURN
* <nowiki>RFC 7443</nowiki> - ALPN support for STUN & TURN
* <nowiki>RFC 7635</nowiki> - oAuth third-party TURN/STUN authorization
* DTLS support (<nowiki>http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00</nowiki>).
* Mobile ICE (MICE) support (<nowiki>http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02</nowiki>).
* TURN REST API (<nowiki>http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00</nowiki>)
* Origin field in TURN (Multi-tenant TURN Server) (<nowiki>https://tools.ietf.org/html/draft-ietf-tram-stun-origin-06</nowiki>)
* TURN Bandwidth draft specs (<nowiki>http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01</nowiki>)
* TURN-bis (with dual allocation) draft specs (<nowiki>http://tools.ietf.org/html/draft-ietf-tram-turnbis-04</nowiki>).
 
==== STUN specs ====
* <nowiki>RFC 3489</nowiki> - "classic" STUN
* <nowiki>RFC 5389</nowiki> - base "new" STUN specs
* <nowiki>RFC 5769</nowiki> - test vectors for STUN protocol testing
* <nowiki>RFC 5780</nowiki> - NAT behavior discovery support
* <nowiki>RFC 7443</nowiki> - ALPN support for STUN & TURN
* <nowiki>RFC 7635</nowiki> - oAuth third-party TURN/STUN authorization
 
==== Supported ICE and related specs ====
* <nowiki>RFC 5245</nowiki> - ICE
* <nowiki>RFC 5768</nowiki> – ICE–SIP
* <nowiki>RFC 6336</nowiki> – ICE–IANA Registry
* <nowiki>RFC 6544</nowiki> – ICE–TCP
* <nowiki>RFC 5928</nowiki> - TURN Resolution Mechanism
 
==== The implementation fully supports the following client-to-TURN-server protocols ====
* UDP (per <nowiki>RFC 5766</nowiki>)
* TCP (per <nowiki>RFC 5766</nowiki> and <nowiki>RFC 6062</nowiki>)
* TLS (per <nowiki>RFC 5766</nowiki> and <nowiki>RFC 6062</nowiki>): TLS1.0/TLS1.1/TLS1.2; ECDHE is supported.
* DTLS  (<nowiki>http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00</nowiki>): DTLS versions 1.0 and 1.2.
* SCTP (experimental implementation).
 
=== Supported relay protocols ===
* UDP (per <nowiki>RFC 5766</nowiki>)
* TCP (per <nowiki>RFC 6062</nowiki>)
 
=== Supported user databases ===
For user repository, with passwords or keys, if authentication is required
* SQLite
* MySQL
* PostgreSQL
* Redis
** kann auch für die Speicherung von Status und Statistiken sowie für Benachrichtigungen verwendet werden.
* MongoDB
 
Standardmäßig ist ein Prometheus-Export-Endpunkt deaktiviert
* wenn er aktiviert ist, wird er auf Port 9641 unter dem Pfad /metrics überwacht.
 
=== Unterstützte Algorithmen zur Überprüfung der Nachrichtenintegrität ===
* HMAC-SHA1, mit MD5-gehashten Schlüsseln (wie von STUN- und TURN-Standards gefordert)
 
=== Unterstützte TURN-Authentifizierungsmechanismen ===
* 'klassischer' Langzeit-Authentifizierungsmechanismus;
* TURN REST API (eine Modifikation des Langzeit-Mechanismus, für zeitlich begrenzte geheimnisbasierte Authentifizierung, für WebRTC-Anwendungen: <nowiki>http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00</nowiki>);
* experimentelle oAuth-basierte Client-Autorisierungsoption eines Drittanbieters;
 
Wenn er als Teil einer ICE-Lösung für VoIP-Konnektivität eingesetzt wird, kann dieser TURN-Server Tausende von gleichzeitigen Anrufen pro CPU (bei Verwendung des TURN-Protokolls) oder Zehntausende von Anrufen, wenn nur das STUN-Protokoll verwendet wird, verarbeiten.
* Für praktisch unbegrenzte Skalierbarkeit kann ein Lastausgleichsschema verwendet werden.
 
=== Lastausgleich kann mit den folgenden Tools implementiert werden ===
Eentweder eines oder eine Kombination davon
* DNS SRV-basierter Lastausgleich;
* eingebauter 300 ALTERNATE-SERVER-Mechanismus (erfordert die Unterstützung von 300 Antworten durch den TURN-Client);
* Netzwerk-Load-Balancer-Server.
 
Algorithmen zur Begrenzung der Verkehrsbandbreite und zur Vermeidung von Überlastungen.
 
=== Leistung und Skalierbarkeit ===
Um eine hohe Leistung und Skalierbarkeit zu erreichen, wird der TURN-Server mit den folgenden Eigenschaften implementiert
* Verwendung der hochleistungsfähigen, industrietauglichen Network IO Engine libevent2 
* Konfigurierbares Multi-Threading-Modell zur vollen Nutzung der verfügbaren CPU-Ressourcen (wenn das Betriebssystem Multi-Threading erlaubt) 
* Mehrere Abhör- und Relaisadressen können konfiguriert werden Effizientes Speichermodell verwendet 
* Der TURN-Projektcode kann in einer benutzerdefinierten, proprietären Netzwerkumgebung verwendet werden.
* Im TURN-Server-Code wird eine abstrakte Netzwerk-API verwendet.
* Nur ein paar Dateien im Projekt müssen neu geschrieben werden, um den TURN-Server in eine proprietäre Umgebung einzubinden.
* Mit diesem Projekt wird nur eine Implementierung für die Standard UNIX Networking/IO API zur Verfügung gestellt, aber der Anwender kann jede andere Umgebung implementieren.
* Der Code des TURN-Servers wurde ursprünglich für eine hochperformante proprietäre Unternehmensumgebung entwickelt und dann für die UNIX Networking API übernommen.
* Der TURN-Server arbeitet als User-Space-Prozess, ohne besondere Anforderungen an das System zu stellen
 
Um die TURN Server Software, die Client Messaging Library und die Testprogramme herunterzuladen, klicken Sie auf den Reiter "Downloads".
 
==== Kontaktinformationen ====
# https://groups.google.com/forum/#!forum/turn-server-project-rfc5766-turn-server
 
=== Man-Pages ===
=== Info-Pages ===
== Siehe auch ==
# [[TURN-Protokoll]]
 
== Links ==
 
=== Projekt-Homepage ===
# Downloads page
# Docker image
# Wiki pages
 
=== Weblinks ===
== Weblinks ==
# https://community.hetzner.com/tutorials/install-turn-stun-server-on-debian-ubuntu-with-coturn
# https://community.letsencrypt.org/t/are-pre-hook-and-post-hook-and-etc-letsencrypt-renewal-hooks-scripts-mutually-exclusive/96471
# https://certbot.eff.org/docs/using.html?highlight=hooks#pre-and-post-validation-hooks
# https://github.com/certbot/certbot/issues/5935
# https://serverfault.com/questions/849683/how-to-setup-coturn-with-letsencrypt
# https://github.com/coturn/coturn/issues/268
# https://www.google.com/search?client=firefox-b-d&q=turnserver%3A+0%3A+WARNING%3A+cannot+find+certificate+file
# https://decatec.de/home-server/nextcloud-talk-mit-eigenem-turn-server-coturn/
 
=== Einzelnachweise ===
<references />
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
 
[[Kategorie:Entwurf]]
[[Kategorie:Server]]
[[Kategorie:BigBlueButton]]
[[Kategorie:BigBlueButton]]
[[Kategorie:Nextcloud:Talk]]
[[Kategorie:Nextcloud/Talk]]

Aktuelle Version vom 29. Dezember 2023, 13:55 Uhr

Seiten in der Kategorie „Coturn“

Diese Kategorie enthält nur die folgende Seite.