|
|
(134 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| '''topic''' kurze Beschreibung
| | [[Kategorie:Netzwerk/Dienst]] |
| == Beschreibung ==
| |
| == Installation ==
| |
| # apt install coturn
| |
| | |
| '''Hinweis'''
| |
| coturn startet nicht automatisch, bis eine Konfiguration angewendet wird (siehe unten).
| |
| | |
| == Anwendungen ==
| |
| == Syntax ==
| |
| === Optionen ===
| |
| === Parameter ===
| |
| === Umgebungsvariablen ===
| |
| === Exit-Status ===
| |
| == Konfiguration ==
| |
| === Dateien ===
| |
| == Sicherheit ==
| |
| == Dokumentation ==
| |
| === RFC ===
| |
| === Man-Pages ===
| |
| === Info-Pages ===
| |
| == Siehe auch ==
| |
| == Links ==
| |
| === Projekt-Homepage ===
| |
| === 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]] | |
| | |
| = TMP =
| |
| | |
| == TURN-Protokoll ==
| |
| siehe [[TURN-Protokoll]]
| |
| | |
| = 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
| |
| | |
| = 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
| |
| |-
| |
| |}
| |
| | |
| = Zertifikate =
| |
| ; TLS-Zertifikate von [[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
| |
| /etc/letsencrypt/renewal-hooks/deploy/coturn
| |
| | |
| #!/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.
| |
| | |
| ; 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 <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 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/ 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 <tt>stunclient</tt>.
| |
| * Führen Sie die folgenden Befehle aus und ersetzen Sie sie <tt><youor-turn-server-host></tt> mit dem Hostnamen Ihres TURN-Servers.
| |
| # apt install -y stuntman-client
| |
| 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.
| |
| | |
| [[Kategorie:Server]]
| |
| [[Kategorie:BigBlueButton]] | | [[Kategorie:BigBlueButton]] |
| [[Kategorie:Nextcloud:Talk]] | | [[Kategorie:Nextcloud/Talk]] |